From d104c1d76c1a65289953abc88c1d2f0fa965787a Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Fri, 15 Sep 2017 03:07:03 -0500 Subject: [PATCH 01/80] Prevents the creation of Shadowzombiechangelings --- code/__DEFINES/DNA.dm | 6 + code/datums/diseases/dna_spread.dm | 79 ++++++++++- code/game/gamemodes/changeling/changeling.dm | 4 + .../human/species_types/shadowpeople.dm | 2 +- .../carbon/human/species_types/synths.dm | 123 ++++++++++++++++++ .../carbon/human/species_types/zombies.dm | 2 +- 6 files changed, 213 insertions(+), 3 deletions(-) diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index d305bfa69c..62c3c1f8db 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -127,6 +127,7 @@ #define TOXINLOVER 24 #define DIGITIGRADE 25 //Uses weird leg sprites. Optional for Lizards, required for ashwalkers. Don't give it to other races unless you make sprites for this (see human_parts_greyscale.dmi) #define NO_UNDERWEAR 26 +<<<<<<< HEAD #define MUTCOLORS2 27 #define MUTCOLORS3 28 #define NOLIVER 29 @@ -134,3 +135,8 @@ //citadel code #define NOAROUSAL 29//Stops all arousal effects #define NOGENITALS 30//Cannot create, use, or otherwise have genitals +======= +#define NOLIVER 27 +#define NOSTOMACH 28 +#define NO_DNA_COPY 29 +>>>>>>> ed43a09... Prevents the creation of Shadowzombiechangelings (#30681) diff --git a/code/datums/diseases/dna_spread.dm b/code/datums/diseases/dna_spread.dm index 2b77885359..987889ce44 100644 --- a/code/datums/diseases/dna_spread.dm +++ b/code/datums/diseases/dna_spread.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /datum/disease/dnaspread name = "Space Retrovirus" max_stages = 4 @@ -71,4 +72,80 @@ affected_mob.domutcheck() to_chat(affected_mob, "You feel more like yourself.") - return ..() \ No newline at end of file + return ..() +======= +/datum/disease/dnaspread + name = "Space Retrovirus" + max_stages = 4 + spread_text = "On contact" + spread_flags = CONTACT_GENERAL + cure_text = "Mutadone" + cures = list("mutadone") + disease_flags = CAN_CARRY|CAN_RESIST|CURABLE + agent = "S4E1 retrovirus" + viable_mobtypes = list(/mob/living/carbon/human) + var/datum/dna/original_dna = null + var/transformed = 0 + desc = "This disease transplants the genetic code of the initial vector into new hosts." + severity = MEDIUM + + +/datum/disease/dnaspread/stage_act() + ..() + if(!affected_mob.dna) + cure() + if((NOTRANSSTING in affected_mob.dna.species.species_traits) || (NO_DNA_COPY in affected_mob.dna.species.species_traits)) //Only species that can be spread by transformation sting can be spread by the retrovirus + cure() + + if(!strain_data["dna"]) + //Absorbs the target DNA. + strain_data["dna"] = new affected_mob.dna.type + affected_mob.dna.copy_dna(strain_data["dna"]) + carrier = TRUE + stage = 4 + return + + switch(stage) + if(2 || 3) //Pretend to be a cold and give time to spread. + if(prob(8)) + affected_mob.emote("sneeze") + if(prob(8)) + affected_mob.emote("cough") + if(prob(1)) + to_chat(affected_mob, "Your muscles ache.") + if(prob(20)) + affected_mob.take_bodypart_damage(1) + if(prob(1)) + to_chat(affected_mob, "Your stomach hurts.") + if(prob(20)) + affected_mob.adjustToxLoss(2) + affected_mob.updatehealth() + if(4) + if(!transformed && !carrier) + //Save original dna for when the disease is cured. + original_dna = new affected_mob.dna.type + affected_mob.dna.copy_dna(original_dna) + + to_chat(affected_mob, "You don't feel like yourself..") + var/datum/dna/transform_dna = strain_data["dna"] + + transform_dna.transfer_identity(affected_mob, transfer_SE = 1) + affected_mob.real_name = affected_mob.dna.real_name + affected_mob.updateappearance(mutcolor_update=1) + affected_mob.domutcheck() + + transformed = 1 + carrier = 1 //Just chill out at stage 4 + + return + +/datum/disease/dnaspread/Destroy() + if (original_dna && transformed && affected_mob) + original_dna.transfer_identity(affected_mob, transfer_SE = 1) + affected_mob.real_name = affected_mob.dna.real_name + affected_mob.updateappearance(mutcolor_update=1) + affected_mob.domutcheck() + + to_chat(affected_mob, "You feel more like yourself.") + return ..() +>>>>>>> ed43a09... Prevents the creation of Shadowzombiechangelings (#30681) diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index 14126c69f3..e67ac26d3a 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -340,6 +340,10 @@ GLOBAL_LIST_INIT(slot2type, list("head" = /obj/item/clothing/head/changeling, "w return if(!target) return + if(NO_DNA_COPY in target.dna.species.species_traits) + if(verbose) + to_chat(user, "[target] is not compatible with our biology.") + return if((target.disabilities & NOCLONE) || (target.disabilities & HUSK)) if(verbose) to_chat(user, "DNA of [target] is ruined beyond usability!") 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 636c2b7890..5c635fb870 100644 --- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm @@ -30,7 +30,7 @@ burnmod = 1.5 blacklisted = TRUE no_equip = list(slot_wear_mask, slot_wear_suit, slot_gloves, slot_shoes, slot_w_uniform, slot_s_store) - species_traits = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER,NO_UNDERWEAR,NOHUNGER) + species_traits = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER,NO_UNDERWEAR,NOHUNGER,NO_DNA_COPY,NOTRANSSTING) mutanteyes = /obj/item/organ/eyes/night_vision/nightmare var/obj/effect/proc_holder/spell/targeted/shadowwalk/shadowwalk diff --git a/code/modules/mob/living/carbon/human/species_types/synths.dm b/code/modules/mob/living/carbon/human/species_types/synths.dm index c6fba442de..6e24ce78ab 100644 --- a/code/modules/mob/living/carbon/human/species_types/synths.dm +++ b/code/modules/mob/living/carbon/human/species_types/synths.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /datum/species/synth name = "Synth" //inherited from the real species, for health scanners and things id = "synth" @@ -118,4 +119,126 @@ else return ..() else +======= +/datum/species/synth + name = "Synth" //inherited from the real species, for health scanners and things + id = "synth" + say_mod = "beep boops" //inherited from a user's real species + sexes = 0 + species_traits = list(NOTRANSSTING,NOBREATH,VIRUSIMMUNE,NODISMEMBER,NOHUNGER) //all of these + whatever we inherit from the real species + dangerous_existence = 1 + blacklisted = 1 + meat = null + damage_overlay_type = "synth" + limbs_id = "synth" + var/list/initial_species_traits = list(NOTRANSSTING,NOBREATH,VIRUSIMMUNE,NODISMEMBER,NOHUNGER,NO_DNA_COPY) //for getting these values back for assume_disguise() + var/disguise_fail_health = 75 //When their health gets to this level their synthflesh partially falls off + var/datum/species/fake_species = null //a species to do most of our work for us, unless we're damaged + +/datum/species/synth/military + name = "Military Synth" + id = "military_synth" + armor = 25 + punchdamagelow = 10 + punchdamagehigh = 19 + punchstunthreshold = 14 //about 50% chance to stun + disguise_fail_health = 50 + +/datum/species/synth/on_species_gain(mob/living/carbon/human/H, datum/species/old_species) + ..() + assume_disguise(old_species, H) + +/datum/species/synth/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) + if(chem.id == "synthflesh") + chem.reaction_mob(H, TOUCH, 2 ,0) //heal a little + H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) + return 1 + else + return ..() + + +/datum/species/synth/proc/assume_disguise(datum/species/S, mob/living/carbon/human/H) + if(S && !istype(S, type)) + name = S.name + say_mod = S.say_mod + sexes = S.sexes + species_traits = initial_species_traits.Copy() + species_traits.Add(S.species_traits) + attack_verb = S.attack_verb + attack_sound = S.attack_sound + miss_sound = S.miss_sound + meat = S.meat + mutant_bodyparts = S.mutant_bodyparts.Copy() + mutant_organs = S.mutant_organs.Copy() + default_features = S.default_features.Copy() + nojumpsuit = S.nojumpsuit + no_equip = S.no_equip.Copy() + limbs_id = S.limbs_id + use_skintones = S.use_skintones + fixed_mut_color = S.fixed_mut_color + hair_color = S.hair_color + fake_species = new S.type + else + name = initial(name) + say_mod = initial(say_mod) + species_traits = initial_species_traits.Copy() + attack_verb = initial(attack_verb) + attack_sound = initial(attack_sound) + miss_sound = initial(miss_sound) + mutant_bodyparts = list() + default_features = list() + nojumpsuit = initial(nojumpsuit) + no_equip = list() + qdel(fake_species) + fake_species = null + meat = initial(meat) + limbs_id = "synth" + use_skintones = 0 + sexes = 0 + fixed_mut_color = "" + hair_color = "" + + for(var/X in H.bodyparts) //propagates the damage_overlay changes + var/obj/item/bodypart/BP = X + BP.update_limb() + H.update_body_parts() //to update limb icon cache with the new damage overlays + +//Proc redirects: +//Passing procs onto the fake_species, to ensure we look as much like them as possible + +/datum/species/synth/handle_hair(mob/living/carbon/human/H, forced_colour) + if(fake_species) + fake_species.handle_hair(H, forced_colour) + else + return ..() + + +/datum/species/synth/handle_body(mob/living/carbon/human/H) + if(fake_species) + fake_species.handle_body(H) + else + return ..() + + +/datum/species/synth/handle_mutant_bodyparts(mob/living/carbon/human/H, forced_colour) + if(fake_species) + fake_species.handle_body(H,forced_colour) + else + return ..() + + +/datum/species/synth/get_spans() + if(fake_species) + return fake_species.get_spans() + return list() + + +/datum/species/synth/handle_speech(message, mob/living/carbon/human/H) + if(H.health > disguise_fail_health) + if(fake_species) + return fake_species.handle_speech(message,H) + else + return ..() + else +>>>>>>> ed43a09... Prevents the creation of Shadowzombiechangelings (#30681) return ..() diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm index d11f71212c..7c25b4d3cb 100644 --- a/code/modules/mob/living/carbon/human/species_types/zombies.dm +++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm @@ -6,7 +6,7 @@ sexes = 0 blacklisted = 1 meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/zombie - species_traits = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOBLOOD,RADIMMUNE,NOZOMBIE,EASYDISMEMBER,EASYLIMBATTACHMENT) + species_traits = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOBLOOD,RADIMMUNE,NOZOMBIE,EASYDISMEMBER,EASYLIMBATTACHMENT,NOTRANSSTING) mutant_organs = list(/obj/item/organ/tongue/zombie) var/static/list/spooks = list('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg','sound/hallucinations/veryfar_noise.ogg','sound/hallucinations/wail.ogg') disliked_food = NONE From 32fc4ee5145877682cf08d95f109e337d31a03bb Mon Sep 17 00:00:00 2001 From: LetterJay Date: Tue, 19 Sep 2017 11:16:58 -0500 Subject: [PATCH 02/80] Update synths.dm --- .../carbon/human/species_types/synths.dm | 123 ------------------ 1 file changed, 123 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species_types/synths.dm b/code/modules/mob/living/carbon/human/species_types/synths.dm index 6e24ce78ab..45b4a28bb5 100644 --- a/code/modules/mob/living/carbon/human/species_types/synths.dm +++ b/code/modules/mob/living/carbon/human/species_types/synths.dm @@ -1,125 +1,3 @@ -<<<<<<< HEAD -/datum/species/synth - name = "Synth" //inherited from the real species, for health scanners and things - id = "synth" - say_mod = "beep boops" //inherited from a user's real species - sexes = 0 - species_traits = list(NOTRANSSTING,NOBREATH,VIRUSIMMUNE,NODISMEMBER,NOHUNGER) //all of these + whatever we inherit from the real species - dangerous_existence = 1 - blacklisted = 1 - meat = null - damage_overlay_type = "synth" - limbs_id = "synth" - var/list/initial_species_traits = list(NOTRANSSTING,NOBREATH,VIRUSIMMUNE,NODISMEMBER,NOHUNGER) //for getting these values back for assume_disguise() - var/disguise_fail_health = 75 //When their health gets to this level their synthflesh partially falls off - var/datum/species/fake_species = null //a species to do most of our work for us, unless we're damaged - -/datum/species/synth/military - name = "Military Synth" - id = "military_synth" - armor = 25 - punchdamagelow = 10 - punchdamagehigh = 19 - punchstunthreshold = 14 //about 50% chance to stun - disguise_fail_health = 50 - -/datum/species/synth/on_species_gain(mob/living/carbon/human/H, datum/species/old_species) - ..() - assume_disguise(old_species, H) - -/datum/species/synth/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) - if(chem.id == "synthflesh") - chem.reaction_mob(H, TOUCH, 2 ,0) //heal a little - H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) - return 1 - else - return ..() - - -/datum/species/synth/proc/assume_disguise(datum/species/S, mob/living/carbon/human/H) - if(S && !istype(S, type)) - name = S.name - say_mod = S.say_mod - sexes = S.sexes - species_traits = initial_species_traits.Copy() - species_traits.Add(S.species_traits) - attack_verb = S.attack_verb - attack_sound = S.attack_sound - miss_sound = S.miss_sound - meat = S.meat - mutant_bodyparts = S.mutant_bodyparts.Copy() - mutant_organs = S.mutant_organs.Copy() - default_features = S.default_features.Copy() - nojumpsuit = S.nojumpsuit - no_equip = S.no_equip.Copy() - limbs_id = S.limbs_id - use_skintones = S.use_skintones - fixed_mut_color = S.fixed_mut_color - hair_color = S.hair_color - fake_species = new S.type - else - name = initial(name) - say_mod = initial(say_mod) - species_traits = initial_species_traits.Copy() - attack_verb = initial(attack_verb) - attack_sound = initial(attack_sound) - miss_sound = initial(miss_sound) - mutant_bodyparts = list() - default_features = list() - nojumpsuit = initial(nojumpsuit) - no_equip = list() - qdel(fake_species) - fake_species = null - meat = initial(meat) - limbs_id = "synth" - use_skintones = 0 - sexes = 0 - fixed_mut_color = "" - hair_color = "" - - for(var/X in H.bodyparts) //propagates the damage_overlay changes - var/obj/item/bodypart/BP = X - BP.update_limb() - H.update_body_parts() //to update limb icon cache with the new damage overlays - -//Proc redirects: -//Passing procs onto the fake_species, to ensure we look as much like them as possible - -/datum/species/synth/handle_hair(mob/living/carbon/human/H, forced_colour) - if(fake_species) - fake_species.handle_hair(H, forced_colour) - else - return ..() - - -/datum/species/synth/handle_body(mob/living/carbon/human/H) - if(fake_species) - fake_species.handle_body(H) - else - return ..() - - -/datum/species/synth/handle_mutant_bodyparts(mob/living/carbon/human/H, forced_colour) - if(fake_species) - fake_species.handle_body(H,forced_colour) - else - return ..() - - -/datum/species/synth/get_spans() - if(fake_species) - return fake_species.get_spans() - return list() - - -/datum/species/synth/handle_speech(message, mob/living/carbon/human/H) - if(H.health > disguise_fail_health) - if(fake_species) - return fake_species.handle_speech(message,H) - else - return ..() - else -======= /datum/species/synth name = "Synth" //inherited from the real species, for health scanners and things id = "synth" @@ -240,5 +118,4 @@ else return ..() else ->>>>>>> ed43a09... Prevents the creation of Shadowzombiechangelings (#30681) return ..() From 79d769532f16807e52d781cb5cf33b6541f9d405 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Tue, 19 Sep 2017 11:18:22 -0500 Subject: [PATCH 03/80] Update DNA.dm --- code/__DEFINES/DNA.dm | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index 62c3c1f8db..dd5a25d8ff 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -127,16 +127,11 @@ #define TOXINLOVER 24 #define DIGITIGRADE 25 //Uses weird leg sprites. Optional for Lizards, required for ashwalkers. Don't give it to other races unless you make sprites for this (see human_parts_greyscale.dmi) #define NO_UNDERWEAR 26 -<<<<<<< HEAD #define MUTCOLORS2 27 #define MUTCOLORS3 28 #define NOLIVER 29 #define NOSTOMACH 30 //citadel code -#define NOAROUSAL 29//Stops all arousal effects -#define NOGENITALS 30//Cannot create, use, or otherwise have genitals -======= -#define NOLIVER 27 -#define NOSTOMACH 28 -#define NO_DNA_COPY 29 ->>>>>>> ed43a09... Prevents the creation of Shadowzombiechangelings (#30681) +#define NOAROUSAL 29 //Stops all arousal effects +#define NOGENITALS 30 //Cannot create, use, or otherwise have genitals +#define NO_DNA_COPY 31 From b996145a84e15ccfba3c3913bc3cf5d24305c1ff Mon Sep 17 00:00:00 2001 From: LetterJay Date: Tue, 19 Sep 2017 11:19:36 -0500 Subject: [PATCH 04/80] Update dna_spread.dm --- code/datums/diseases/dna_spread.dm | 77 ------------------------------ 1 file changed, 77 deletions(-) diff --git a/code/datums/diseases/dna_spread.dm b/code/datums/diseases/dna_spread.dm index 987889ce44..c96a22d472 100644 --- a/code/datums/diseases/dna_spread.dm +++ b/code/datums/diseases/dna_spread.dm @@ -1,79 +1,3 @@ -<<<<<<< HEAD -/datum/disease/dnaspread - name = "Space Retrovirus" - max_stages = 4 - spread_text = "On contact" - spread_flags = CONTACT_GENERAL - cure_text = "Mutadone" - cures = list("mutadone") - disease_flags = CAN_CARRY|CAN_RESIST|CURABLE - agent = "S4E1 retrovirus" - viable_mobtypes = list(/mob/living/carbon/human) - var/datum/dna/original_dna = null - var/transformed = 0 - desc = "This disease transplants the genetic code of the initial vector into new hosts." - severity = MEDIUM - - -/datum/disease/dnaspread/stage_act() - ..() - if(!affected_mob.dna) - cure() - if(NOTRANSSTING in affected_mob.dna.species.species_traits) //Only species that can be spread by transformation sting can be spread by the retrovirus - cure() - - if(!strain_data["dna"]) - //Absorbs the target DNA. - strain_data["dna"] = new affected_mob.dna.type - affected_mob.dna.copy_dna(strain_data["dna"]) - carrier = TRUE - stage = 4 - return - - switch(stage) - if(2 || 3) //Pretend to be a cold and give time to spread. - if(prob(8)) - affected_mob.emote("sneeze") - if(prob(8)) - affected_mob.emote("cough") - if(prob(1)) - to_chat(affected_mob, "Your muscles ache.") - if(prob(20)) - affected_mob.take_bodypart_damage(1) - if(prob(1)) - to_chat(affected_mob, "Your stomach hurts.") - if(prob(20)) - affected_mob.adjustToxLoss(2) - affected_mob.updatehealth() - if(4) - if(!transformed && !carrier) - //Save original dna for when the disease is cured. - original_dna = new affected_mob.dna.type - affected_mob.dna.copy_dna(original_dna) - - to_chat(affected_mob, "You don't feel like yourself..") - var/datum/dna/transform_dna = strain_data["dna"] - - transform_dna.transfer_identity(affected_mob, transfer_SE = 1) - affected_mob.real_name = affected_mob.dna.real_name - affected_mob.updateappearance(mutcolor_update=1) - affected_mob.domutcheck() - - transformed = 1 - carrier = 1 //Just chill out at stage 4 - - return - -/datum/disease/dnaspread/Destroy() - if (original_dna && transformed && affected_mob) - original_dna.transfer_identity(affected_mob, transfer_SE = 1) - affected_mob.real_name = affected_mob.dna.real_name - affected_mob.updateappearance(mutcolor_update=1) - affected_mob.domutcheck() - - to_chat(affected_mob, "You feel more like yourself.") - return ..() -======= /datum/disease/dnaspread name = "Space Retrovirus" max_stages = 4 @@ -148,4 +72,3 @@ to_chat(affected_mob, "You feel more like yourself.") return ..() ->>>>>>> ed43a09... Prevents the creation of Shadowzombiechangelings (#30681) From 83d178bc080735f8c1231b9e925bbb633aa4fe84 Mon Sep 17 00:00:00 2001 From: PopNotes Date: Tue, 19 Sep 2017 16:52:46 -0400 Subject: [PATCH 05/80] Airlocks animate faster (#30473) * Add files via upload * Add files via upload --- icons/obj/doors/airlocks/centcom/centcom.dmi | Bin 4662 -> 4662 bytes icons/obj/doors/airlocks/centcom/overlays.dmi | Bin 6259 -> 6247 bytes .../obj/doors/airlocks/clockwork/overlays.dmi | Bin 8405 -> 8400 bytes .../airlocks/clockwork/pinion_airlock.dmi | Bin 6657 -> 6657 bytes icons/obj/doors/airlocks/cult/runed/cult.dmi | Bin 6096 -> 6095 bytes .../doors/airlocks/cult/runed/overlays.dmi | Bin 7989 -> 7981 bytes .../obj/doors/airlocks/cult/unruned/cult.dmi | Bin 4250 -> 4249 bytes .../doors/airlocks/cult/unruned/overlays.dmi | Bin 7644 -> 7637 bytes .../obj/doors/airlocks/external/external.dmi | Bin 6568 -> 6568 bytes .../obj/doors/airlocks/external/overlays.dmi | Bin 6080 -> 6072 bytes .../airlocks/glass_large/glass_large.dmi | Bin 7476 -> 7476 bytes .../doors/airlocks/glass_large/overlays.dmi | Bin 14870 -> 14864 bytes icons/obj/doors/airlocks/hatch/centcom.dmi | Bin 4224 -> 4224 bytes .../obj/doors/airlocks/hatch/maintenance.dmi | Bin 4655 -> 4655 bytes icons/obj/doors/airlocks/hatch/overlays.dmi | Bin 8416 -> 8403 bytes icons/obj/doors/airlocks/highsec/highsec.dmi | Bin 4892 -> 4892 bytes icons/obj/doors/airlocks/highsec/overlays.dmi | Bin 6318 -> 6310 bytes icons/obj/doors/airlocks/shuttle/overlays.dmi | Bin 7570 -> 7561 bytes icons/obj/doors/airlocks/shuttle/shuttle.dmi | Bin 6442 -> 6442 bytes icons/obj/doors/airlocks/station/atmos.dmi | Bin 4691 -> 4689 bytes icons/obj/doors/airlocks/station/bananium.dmi | Bin 3997 -> 3997 bytes icons/obj/doors/airlocks/station/command.dmi | Bin 4780 -> 4780 bytes icons/obj/doors/airlocks/station/diamond.dmi | Bin 3960 -> 3960 bytes .../doors/airlocks/station/engineering.dmi | Bin 4737 -> 4737 bytes icons/obj/doors/airlocks/station/freezer.dmi | Bin 3199 -> 3199 bytes icons/obj/doors/airlocks/station/gold.dmi | Bin 4007 -> 4007 bytes .../doors/airlocks/station/maintenance.dmi | Bin 4690 -> 4690 bytes .../airlocks/station/maintenanceexternal.dmi | Bin 5470 -> 5460 bytes icons/obj/doors/airlocks/station/medical.dmi | Bin 4598 -> 4598 bytes icons/obj/doors/airlocks/station/mining.dmi | Bin 4931 -> 4931 bytes icons/obj/doors/airlocks/station/overlays.dmi | Bin 8968 -> 8961 bytes icons/obj/doors/airlocks/station/plasma.dmi | Bin 4501 -> 4501 bytes icons/obj/doors/airlocks/station/public.dmi | Bin 2158 -> 2157 bytes icons/obj/doors/airlocks/station/research.dmi | Bin 4613 -> 4613 bytes .../obj/doors/airlocks/station/sandstone.dmi | Bin 4053 -> 4053 bytes icons/obj/doors/airlocks/station/science.dmi | Bin 4557 -> 4557 bytes icons/obj/doors/airlocks/station/security.dmi | Bin 4718 -> 4718 bytes icons/obj/doors/airlocks/station/silver.dmi | Bin 3930 -> 3930 bytes icons/obj/doors/airlocks/station/uranium.dmi | Bin 4037 -> 4037 bytes icons/obj/doors/airlocks/station/virology.dmi | Bin 4676 -> 4676 bytes icons/obj/doors/airlocks/station/wood.dmi | Bin 3891 -> 3891 bytes icons/obj/doors/airlocks/station2/glass.dmi | Bin 3584 -> 3584 bytes .../obj/doors/airlocks/station2/overlays.dmi | Bin 11608 -> 11598 bytes icons/obj/doors/airlocks/vault/overlays.dmi | Bin 5634 -> 5624 bytes icons/obj/doors/airlocks/vault/vault.dmi | Bin 3717 -> 3717 bytes icons/obj/doors/doorint.dmi | Bin 21785 -> 21780 bytes 46 files changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/doors/airlocks/centcom/centcom.dmi b/icons/obj/doors/airlocks/centcom/centcom.dmi index ee263cf1b770cf8dcce7098cbaffe0dd7b628ebb..c034f8e2829b1eec482dfff80e9c87bd154e4b90 100644 GIT binary patch delta 149 zcmV;G0BZlXB(@}wM+a5$mW!lF50Oq9f0n1JK~-09qYy27l(=7SK-{fK14`U&K@4R3 zAZ{017U24D6s(11wGQ-7mO$JKS9>_@3{jALry-N2LTAGqK9M<=jY3sd@B{%~WJ7bHb|L@(5k*NvK~#90?Ojc8vFA?_ D+5|v5 delta 149 zcmV;G0BZlXB(@}wM+a8%mW#AV4v|h8e^w{eU|B1;QHYj3O5CqEAnw+r0VVDV5ChqM zNb`tECqju?>o}6hKo}b$O5B3zf*xt^3&s=qpCIe|_uK)5A*UZGu~;nu;h3jaP3t)R zL&H9%aBY+2@7Fthp|fEQpU51mro^&V@B|28WKX2x2fF|O5k*NvK~#90?Ojc8vFA?_ D!)in- diff --git a/icons/obj/doors/airlocks/centcom/overlays.dmi b/icons/obj/doors/airlocks/centcom/overlays.dmi index 7650312e8f253707845ec9d12be80a088418c72a..7ec3486053f6063f079047cf143f635b441994b3 100644 GIT binary patch delta 306 zcmV-20nPsNFy}CkB!3%vR9JLGWpiV4X>fFDZ*Bkpc$}@1!HUBm6h+ti6_0ishA|nY zD>p;RkVX3o!Nxa<)TpRT>EF+yFtn-C1cEE!a_)QH>lVKD-^~%~LqmVj2W1U#_;`D# z@O z{2xlRwGKG2Ct9a%SdVtHI)*gsSuD{glxcM}aZY&#C;U0%ws>+J(f4S&YnoTy@ydeT zrQ(D^-FDiB+%9Y?whqk#=?d{Yz*^^R#4hIMU5Z_)LJzRjXJj)UyesDltCzwHYB{46 zw;s1rjG|w-?fFDZ*Bkpc$}@1&5FYy6ouFN6qj}@!1 z%1ucbvS?o+*mx(A8Woi(efwE-m`T%wrVv~S$M61};~IAR&+-Vxp`_m!qIMPpe7wC= za?vWaARx~uX;C+Ax?N(D2|>Wh=%!7vavrU=&59DGLj(bwl7FutJB%P;Ly1BouOJ{} ze}@v|oCg8?fmRzAm!qAWNpYO@C{}1Ss&RGxUzsz`_*l*8WjIe%+YH{bNy=|C*kNeU z*4J@f*5hT2_gwMPqN!@*;?yjBD0Uw03(^Jbxr0?cxP*0@>i1RbLJ_)yE#4!ax$ruh zE6kq?FKE<^P%_+dTq)VfX2!hzJP#Su$(ji`1$Ul8Y)27{Z^u8wGYdIg!~R%6aVY5z Qy6SL<+Uc2-vq%9S7r|th@&Et; diff --git a/icons/obj/doors/airlocks/clockwork/overlays.dmi b/icons/obj/doors/airlocks/clockwork/overlays.dmi index b46cc5b1913bc652aa3f4e9c25212b9cad8dc40b..b34b73fb4e49e71c315e8cb37a7277c0e32cc288 100644 GIT binary patch delta 300 zcmV+{0n`4~LC`^vB!3lpR9JLGWpiV4X>fFDZ*Bkpc$}@1L2AP=5JlJ0DTZV#jAff< zrA=`tUL;p2sx`Gm70F0yLT;Z$pboKJTqU1&vz%A6wWTYp4$my#eC#XFePuz$vpw0gfLld5T^D delta 305 zcmV-10nYx=LDfN!B!3!uR9JLGWpiV4X>fFDZ*Bkpc$}@1!EVDK5Jb=L6|3ZmEMr^E ziA&|E@*(+!ikhvBLcjvrD1YBWq&Q0K)K$@(kcPKABUr=h_O01Ny=&+<`k?%r(a{~zA546^}kdF4@ObpYkN3%k!QT;lZv#Xv=#v}R;ZF`>P6*s(s@tan|ApK!x z=jB^;Mutn7bBP|zZa}-x+BzGe|7xRlORpq)C1b7xut8ch&r2#tSjF5*kZ}40;4l|SEwYt?U zmQ4*W?L1k763_bsh&QP)p~TY>#H8syh2`*}4;m$A16!|E211eZD6s%By8fY;Jz{p& zCJ7>QU*|3$l;-|}5{q3N5Nz%ID>Jb5TgX`BgL@8v>|g6EZzUr!cZscx#M~uS6UhyN eMTeVdB{Y>|)s|Q`HGBc>n5`nP)~)=p>lPVdzEX?; delta 176 zcmV;h08jscG=VgbM}JoFmW#AV5A83M(xi4FW=j$k|K39(AXLbq>}40;4l|SEwYt?U zmQ4*W?L4tXiRb+R#G6!@P~xcoF=@I_VL5#0gGPzjVAyMwfl%Z;N<4xXUH{O_9x|)s|Q`HGBaE4Xrw1!|I>0>lPW_dQnFJ diff --git a/icons/obj/doors/airlocks/cult/runed/cult.dmi b/icons/obj/doors/airlocks/cult/runed/cult.dmi index cbb125b112bb42032ed29660f96d0ebd32784862..1ed0d58dc4f96782e993882eaf998921118d01d2 100644 GIT binary patch delta 181 zcmV;m080PRFV8QKBmusWB_e+-y6q*D@Sv|C;*L77?a1y{^!6PLyBHS8TxQ_=|M_QP zIA@oVTji;sI?Wg(l}gK_W%#>MOo` z!#se3C`dL_%_ZXj?Fu$68B-;#>9x{%Q?A8- jj$7IK;BHMIURL}9$B>mNq(v@Y7n7|b8Cmn3vFzj)z_nV# delta 182 zcmV;n07?JPFVHWLBmuvXB_e+^n>noGt5+7)a%GNvY8(`%*krd*5v k9JjLd!QI+GysY>Ijv=oy$jU;#05OHFIwUTo`myWe7Cv}gBme*a diff --git a/icons/obj/doors/airlocks/cult/runed/overlays.dmi b/icons/obj/doors/airlocks/cult/runed/overlays.dmi index a8d6e7dfffdb27e4d7498daee9c72316b8b07117..19920538d9dc81234c52dc75c37f0075d144be2f 100644 GIT binary patch delta 324 zcmV-K0lWUSKCM2GB!4Y>R9JLGWpiV4X>fFDZ*Bkpc$}@1L2kn!5JlH;iczw)s@kcV zl{b~6%8TR*7BN$dg24jXD7WvzQR}2e!4+Zy(w{dU=Cg*k-Ftn2YG2bYv`!igCA>U6 zQ*xHvcTmEnprk`7IzJwqXC9%1l~ByNrZw7m``LPF^okNLt$%|Oa!Nid>v7!Qmnh?q zM~cmWT52(`ex-z?VizbO&wdsq%9tSpTVOIlUnNE7lilJFIp|6sz247}Mr;AqWhAz}@? WLj~2orr#1T*HKCfOOCT*0n;62B$|`} delta 332 zcmV-S0ki(CKD9oOB!4w}R9JLGWpiV4X>fFDZ*Bkpc$}@1L2kn!5JlJK6r*HoRkc$! zD{mr4l^4ksEMle@1%m~&QEuObt<*`4Oe(|%q(5&y@MjIX{YQ0#@=%d)G*)N@1-!ky zlH?+oYoUNmPLdV{Z{2XPjyi+_R$NkR>qaZ<%va-tRx6S)VSg+Xkdfrm&<=UWYbl=KP(q-sv~+gyRYoyGC47H3 z>71pvHP_kp)SNv%!zrUB?9gyj&2^raPk4EnO#<9gg)%gaQ*qrJ?XYpdWkI?7mHvw# zArN=4B@@qLBS3}r4i?>G7Mg=RRJd6bUQn`tpB`qWX0)T+C*RJ_PMU51VEl>n%-VTji;sI?Wg(l}gK_W%#>MOo` z!#se3C`dL_%_ZXj?Fu$68B-;#>9x{%Q?A8- jj$7IK;BHMIURL}9$B>mNq(v@Y7n7|b8Cmn3vFxr7V7^)Y delta 182 zcmV;n07?IuA(|nOBmuvXB_e+^n>noGt5+7)a%GNvY8(`%*krd*5v k9JjLd!QI+GysY>Ijv=oy$jU;#05OHFIwUTo`myV-58diqUjP6A diff --git a/icons/obj/doors/airlocks/cult/unruned/overlays.dmi b/icons/obj/doors/airlocks/cult/unruned/overlays.dmi index bfbbccf5d7c675931e34227722ad95da42042fb4..5fb77f2676c0559da5345ff3015c4c900249b68d 100644 GIT binary patch delta 328 zcmV-O0k{6#JJmaoB!4k_R9JLGWpiV4X>fFDZ*Bkpc$}@1L2kn!5JlH;iczw)s@kcV zl{b~6%8TR*7BN$df&l?-l-qaVsC80XCKX}>(w{f;;j@Of-Ftn2YG2bYbY2<_CA>U6 zQ*xF(bWp;kprk`7x-cAkU;&|ol~Bz4rd7rxUs1xP^H4%g$$y7qJr4VOvC%%b&o)S- zBTI}$Ewz|dzf!_cu?v)tXFrP)WsIHduZ&LyGZvRkC@H#-%*BG|;d*rOAu+sibs81afM9|hPljVd<4V{v1h3D}0{vZ$#1O8>=A5QrPt z(h!eg6NUB$mOOmMJT?bKtZ=g^Jfq?fFFpL3hO?fDIr(fFDZ*Bkpc$}@1!D_=W42IA4Q;7B&#*&Wp zluJn&Ikc}3+*or=9oyL6O5c8mgf8t8;*Ow;4Zl7~=+_!{`;YPn#i69%=)5!>}GZyEEP*OBuu_=1mLSyu_lTpFP4#H8( zsdW!3r^zkGDtpV^d7@@KrEdvabOLpK9p_~OUY4W-16!t1#Ts}huBkyq5WtCs) zzxWFn;tn>~#6z>#g-m+~TfE0K)(2Uva5F2spyCmm?rx^ytYuqJy6q*D@Sv|C;;uR{?TEV-y?qBk2!bqRE;I1)@y{RQIlJT~ zrbP~SJ9-j_8jsr@s0W$QqsGG?RBx&4!*uvi2a6h`hQ(VGfig6D)R=&3$NFlgea2+4 zZV^PT`^=p{8O!w(H71*RK(Wa1u4!2O8X9pvjJGC`e2?A|b0f8|ieKy?qBk2!bqRE;I1)@y{RQIlJT~ zrbP~S<2;E)jmPZ{)PveEpvFT2YB1CfVLE)MgF%f^!{SXFfojQl)VK%Lx%z6Rea2)o zb`eCj|ID30wT9~_YD_lsfMSvHUDL4mH8f&fFDZ*Bkpc$}@2O>V+45QW$ADJZ?|q)1XV3ZD`hBzGtL=t;f%6(I&-u&K zGfR$IQO$F{$XHT?u4?LjJV^qc^O@0AO}@YuthUvRB}zNbbAK*a^5J9y-S@q`H0Vdj z_h`t+iWOK5s$acei2@@}Jm(@6sbGmgY;Q5XmF^HY?e)%|1}W!apaEBbEl>Tt?24DA z;%cs~v|x(TpbzyT`o%@-kf5Y!8@6CaNFU+{cO5^_8`w}0W3hkc@j=++HHz3AWU<1< zpzsJrMQpk<(trEdw07dC*qym(J-N@4G{#yc3f)g%6TrHMrBJewRcK7hURo-azcAtX z1uD7+>>VB+MOY*l+=NAfsTOfzg-#85rn=cR5)NOh8VM(R@Gh_sJ$I)6H9hC+-HNZa p8}B7Zwd3#DxF= delta 395 zcmV;60d)SjFTgL5B!6alR9JLGWpiV4X>fFDZ*Bkpc$}@2!EVAZ42I9mQ&@1Vrlm~d z)XM~#IKV4Zq4C;?G_I0th_~ONhyiQXlvTZ?((f1)Vgk+GykRn@-xab9?Y9A;WowRZ)zXq2gDERo7O$bW&e7}Q0n$%Sg+{o zOv;zPFk$}!OX?o5w{&3dfFDZ*Bkpc$}@0%WA_g5JlJ0R}9HEl*$g- zX;U1E7s)Re)tcHOiX=2@L;k*tLY;?Alw!0!bLNV-i^%u^n-GI(;ogw6WGVdtGuQnM!`I#kb_Z3vTn*RVOLYWpF9NS>C HQ31s`Ydw~X delta 315 zcmV-B0mS~0be43GB!47&R9JLGWpiV4X>fFDZ*Bkpc$}@0!EVDK5Jb=L6|3ZGRmF~c z<5D@Qd`N!5qGoHO5Xvp|cK+GQ)}zseAwqjDM1MFAf-hLrsZ9El$9p zEdCxP+FA!3*cGkUHsqtdSslYN>sl<)D3r_UYP!q{R?N)73IB29Mt$KbF1){o@qm6n z)1Q_p<&07mY}SAi26fkK8*b%h%i_*?8?lecHtWzlApI9VL+xjfFDZ*Bkpc$}@1!D_=W42I9~Q;7Cj#+;1x zXIYE7X~X5?gA51)7DhL1@D=rFwQUwGQ`&hDz<*ix;bey%1iZ3Lp^;}0 zz*pDDGDFmZ0RDqk8}jLB3av&p3@aXBzhDkzf*+>bhFJ|mx+gM6y6 z7!{t-s0o|CTun-)WG9=Mejgd}I8Fo{935kb^&n!!*WVON0Z08>3YaR`S5~ZRtR_`x rTM9Iun3e)1yX7lvhUZJs|4c7oyWhZOSF$hbCI%*5aU-9zd;w%140)jf delta 358 zcmV-s0h#{OLEu4fFDZ*Bkpc$}@2L2kk@5JlJVDMql3sybA# z@&gOmQyBb)zd)}Dt(ctl^L ztKckPoS23pCEMjI>?OVZB?yYP(@ytS<&)JlKRtvu^=p EA8lZ;LI3~& diff --git a/icons/obj/doors/airlocks/highsec/highsec.dmi b/icons/obj/doors/airlocks/highsec/highsec.dmi index 566270b8274acf1d800f045af03a17c8f41bcefe..a43dce6a6264f7e007a17baf385dc7e5fb8026d8 100644 GIT binary patch delta 52 zcmV-40L%ZJCY&aaM**vmNHrLKM`~g_PH7o2^@*X84NfAPjFhnNm+CE K8{hP?&`c5)loiJS delta 52 zcmV-40L%ZJCY&aaM**#oNHrL~BsH-er?iZi`oz%41}BkCM#|U_p|K;8l`{y|L0N+x KXI#gz&`c6tfEPRf diff --git a/icons/obj/doors/airlocks/highsec/overlays.dmi b/icons/obj/doors/airlocks/highsec/overlays.dmi index 48248f32991ec325799070bc649f8c7855c01ddc..2a6868c34b9312094e3a73aed5d967811435d1ce 100644 GIT binary patch delta 310 zcmV-60m=TZF{Uw)B!3@zR9JLGWpiV4X>fFDZ*Bkpc$~G9!EVDK5Jb=L6|3YLRmHBF zUbs|_Dj$+xu!z~(C>Ri+M)~_5a%d7m<65aWAq{VLG{X|!Hy`y5s%=fb& zwz@i$XlosCU?XCyZFnqkZ*>f5-dHTrD3ob+c{4pVGdST7nQ5=d?SI)E2lO49_LSxo z7rbJ{F4A$rpl(`iL(U6JiyP-{#5PWTW*wS8NN4dMREHm*{{g(`Y!;eL4X>CgEbj`B zsO5xs&P8ve7%D`Uldm(L*CR~6Mww4@3)p*mn2We-+Cy?&!e&=NwXNwlffI$a8so1& Ivs3|E7c>lqu>b%7 delta 318 zcmV-E0m1&JF|IL?B!4G*R9JLGWpiV4X>fFDZ*Bkpc$~G9&1%Ci5QNXxQ!L5Vl*%qm zFS-PW;zRNZMzOZGh%5<7H014jNFhI#h-*@G63l+9VMa?>Z$9fCRNI<-qw~^eVDR?x zO0uIAp$7(KL9!lY*N5}P2Oba@ER^i};2UF6OWiF1RmMM;xHl^JIBzT#s3nTHy1Zrl6+IIpa)PIo9;y&kvrGY67pOOuI{*Lx diff --git a/icons/obj/doors/airlocks/shuttle/overlays.dmi b/icons/obj/doors/airlocks/shuttle/overlays.dmi index ccdcb15a643bdd3ebb4d789cdc0c2791da8edcdd..50b2e25d8f15be54bfe86272c52d017cd4c93b99 100644 GIT binary patch delta 338 zcmV-Y0j>U$JBd4xB!4@4R9JLGWpiV4X>fFDZ*Bkpc$}@1%WlFj5JlJVSBzjARdrI8 zl{W}fv4CHQOgwcg96R#3Mf`misVc~$1QdB?>FCVE*GpJ$KXwP$?04)N0~zl?z}w3! zOU_2c3IyaCODZ(FitUA>j0gf2*61oy;Tv?u=>w`D z{W~nN-ZvnC_iUy0G@tG0ZKPpWA6DoLs$n|sR355HjSQ!eY7cjgH3p5YybSxYD_@rK zt5<2HLtB*A)7UJ$3pc?>EaPO}H|QQfpYqR;fg9PqCLYz!l+zp8>^<^{3oo;&V15@o zqg4}Ly8SGLl18=EWB6)t-juI;n(;)A?5ry|27h{1p{*pE{N=Qj^k2h+=nP3~Wi!S0 kSLPkX@Kr|RM~7L$_OOA?e#d?QJ%!WCvI!f4vvC0-98dV52mk;8 delta 347 zcmV-h0i^zkJCZw)B!5JDR9JLGWpiV4X>fFDZ*Bkpc$}@1O>V+45JuPWDMql3sybA# z@}>e+EZ_=}iKmW*V@Dphh}(A&)bbOTfFiFfJ-->--%R0s^|9W)355%7`FfVvVjNmA*x1oSv{unLr?bvw!R}$OZ`n%vq+;$|DFU z^54ZW>wOCX_>HZyp2oB7yp7cFx`h=wgQ}mN{Z-~U&v{=>YGv3bs?D#?=Sj<{8Ei0U zbk(unSDg8ZoS*$lD;?UhvYt|R;n#2*e8ega=6#Fq0rV;V2pPDL-D~1e?MOMjkd59W zANb%^F%+EL1y2uX)qtPwhNV=pkvfGhdWRK@MlK0_{QUWH zyjHim#j>g4shuabDDk{MfOwG#GfF%iLCl(_Ijn~deb6W|8w`7`G7yTKM~MZ9(e-z| z?h)ff+a!qW^qaeYP}=lwlvwQIfH2I08Pg&qx){lrE=fov gH+UyD+$<}>PmWbvV%gO20iVaJr!!da1F`C95vsIT^8f$< delta 180 zcmV;l089VTB-132BmupVB_e;OcK@MlK0_eEj)y zywumG!>VoIshuabDDkvEfOwG#GfF&`AZAUsIjn~dL(nKO8x4D{G7yTKM~MZ9$qjeC z?h)ff+a!qW?KgJ@p|ly^D6!nd0b!VzZ_Q}fZ=qr9gL{mD_-W2(Lsohst7=xGrS>Q;dO diff --git a/icons/obj/doors/airlocks/station/bananium.dmi b/icons/obj/doors/airlocks/station/bananium.dmi index 2183a376f60859bf6ee6328b10da5d8639d55120..76aab3506891febd9eb991a5a61027dc6160ab74 100644 GIT binary patch delta 53 zcmV-50LuTJADthNMgrngkw`Zf9YM^Rra7#K4}H)mF&hkftuhdboJWZTk(WsbpU0}F LGg$BgvFNo9EX5Vj delta 53 zcmV-50LuTJADthNMgpQ!kw`Zf6(D9!(;U{rhdyYOm<@)#Rv8FI&ZER5k(Wsbx3#Lj Lqs&YZvFNo9IItHH diff --git a/icons/obj/doors/airlocks/station/command.dmi b/icons/obj/doors/airlocks/station/command.dmi index 90b3e4238d1d115c55f8c176d6e0b47bd19e95ae..d29c1fd0b39b931fc8f6ca8cbe0d7aaa2c6849dd 100644 GIT binary patch delta 53 zcmV-50LuTYC9EZoMgrngkw`Zf9YM^Rra7#K4}H)mF&hkftuhdboJWZTk(WsbpU0}F LGg$BgvFOARHDVSF delta 53 zcmV-50LuTYC9EZoMgpQ!kw`Zf6(D9!(;U{rhdyYOm<@)#Rv8FI&ZER5k(Wsbx3#Lj Lqs&YZvFOARK}{D; diff --git a/icons/obj/doors/airlocks/station/diamond.dmi b/icons/obj/doors/airlocks/station/diamond.dmi index a701df40d3fea5ebeddfcd91c15f6d9191aa1b25..1c30830644ca821f0dced82d428effe7d24fa150 100644 GIT binary patch delta 53 zcmV-50LuUP9{3)RMgrngkw`Zf9YM^Rra7#K4}H)mF&hkftuhdboJWZTk(WsbpU0}F LGg$BgvFMNvQ4JPf delta 53 zcmV-50LuUP9{3)RMgpQ!kw`Zf6(D9!(;U{rhdyYOm<@)#Rv8FI&ZER5k(Wsbx3#Lj Lqs&YZvFMNvT=*BD diff --git a/icons/obj/doors/airlocks/station/engineering.dmi b/icons/obj/doors/airlocks/station/engineering.dmi index 816a84538c1219f21c43907e91822edd01fa6c7d..8fe1bf98d120ce6b57adbf0b1ff1709efbcebee8 100644 GIT binary patch delta 53 zcmV-50LuS?C4nW7Mgrngkw`Zf9YM^Rra7#K4}H)mF&hkftuhdboJWZTk(WsbpU0}F LGg$BgvFMo*Ba{`3 delta 53 zcmV-50LuS?C4nW7MgpQ!kw`Zf6(D9!(;U{rhdyYOm<@)#Rv8FI&ZER5k(Wsbx3#Lj Lqs&YZvFMo*FMk%y diff --git a/icons/obj/doors/airlocks/station/freezer.dmi b/icons/obj/doors/airlocks/station/freezer.dmi index 5aacef29f717435c308397658cd130e2a3e22852..f2f741347b40226c01041289bf0c372c6c2edd34 100644 GIT binary patch delta 51 zcmV-30L=gY82=cMM**vmNHrH7sfq14rDep_Cx%8gIEidBQpSb|jgpa+Gzd{=SNo+Q J%*3(KuM0@}7d8L@ delta 51 zcmV-30L=gY82=cMM**#oNHrId)Wmk2(lTP|6GI~#oJ2MmDPu!~#*UGcGzeC4SO-l0 J*G{p}uM0i5761SM diff --git a/icons/obj/doors/airlocks/station/gold.dmi b/icons/obj/doors/airlocks/station/gold.dmi index 40ce583de532c96d76a79abec93eb8963ed4fc12..490eefeeb92fe013b9e01cf1339ce8515c1e56ce 100644 GIT binary patch delta 53 zcmV-50LuTTAEzIXMgrngkw`Zf9YM^Rra7#K4}H)mF&hkftuhdboJWZTk(WsbpU0}F LGg$BgvFN`JFzFTU delta 53 zcmV-50LuTTAEzIXMgpQ!kw`Zf6(D9!(;U{rhdyYOm<@)#Rv8FI&ZER5k(Wsbx3#Lj Lqs&YZvFN`JJk%F2 diff --git a/icons/obj/doors/airlocks/station/maintenance.dmi b/icons/obj/doors/airlocks/station/maintenance.dmi index 4b046afd7b62ccc0b4e0dc6e38732942db3939d3..38d1b7142f3f4c73d7c0fcdd1c5e36905695f356 100644 GIT binary patch delta 53 zcmV-50LuT;B+?|1Mgrngkw`Zf9YM^Rra7#K4}H)mF&hkftuhdboJWZTk(WsbpU0}F LGg$BgvFK_ML%0?E delta 53 zcmV-50LuT;B+?|1MgpQ!kw`Zf6(D9!(;U{rhdyYOm<@)#Rv8FI&ZER5k(Wsbx3#Lj Lqs&YZvFK_MPooz- diff --git a/icons/obj/doors/airlocks/station/maintenanceexternal.dmi b/icons/obj/doors/airlocks/station/maintenanceexternal.dmi index 4323cf944ec8a29f7a9042948a4e62cac8b32ac5..a380d89584f4a254090429b9b54300081e60470b 100644 GIT binary patch delta 204 zcmV;-05kvID%2{FB!9PhR9JLGWpiV4X>fFDZ*Bkpc$}?}!3u*g5Jb<}uUPb2N^MJT zxfG>%&|eTSQ5RxXlC-6N--F<(MN4HaJMh>UCdO-a%S%j)93I+vVv7>b`vZt4snDau z(-B0ksq4dJe5iv)iBV(NYZZY|Im4MAHU+`S3J%WzA^R4db4 zGNxKpVJ69TpWzD#rA_@piOFsj2*W&nX}H<1U-sE3_`fY;%*qtgB8NAIxT>dMT=Oik G?r;>4QDBt- delta 214 zcmV;{04e{}D&8uPB!9trR9JLGWpiV4X>fFDZ*Bkpc$}?}%?g7s5QNX!r&#nVV(rf@ zm!cF8`U)Z@>Oz`GlD72idk{QXv{IIZUHF(8Cd6xgD=N&&0-n-3G8#Fa;sn@>gddRO zF$FeA>IXkP&Np5n$DmclNf7`OWF2xm0PAdXm(x9CW|VprYDz96Z7)MEbUfQKVJ387RA7Wl*n3V;5 Q0MK}|vtl<=FR|os6t;|As{jB1 diff --git a/icons/obj/doors/airlocks/station/medical.dmi b/icons/obj/doors/airlocks/station/medical.dmi index f7cb5be24efb11df180013dd760bb07f8280bec5..bd354690c547b41b4b5c1706a2079604091a1047 100644 GIT binary patch delta 53 zcmV-50LuUNBlaVZMgrngkw`Zf9YM^Rra7#K4}H)mF&hkftuhdboJWZTk(WsbpU0}F LGg$BgvFHvFQ92do delta 53 zcmV-50LuUNBlaVZMgpQ!kw`Zf6(D9!(;U{rhdyYOm<@)#Rv8FI&ZER5k(Wsbx3#Lj Lqs&YZvFHvFT_qPM diff --git a/icons/obj/doors/airlocks/station/mining.dmi b/icons/obj/doors/airlocks/station/mining.dmi index 23dee39ef6a023d31aa6a6372cd97081dcd4dcba..07e8fc32e2408fd726b5fb7579fd687fffe79675 100644 GIT binary patch delta 53 zcmV-50LuTvCc`F>Mgrngkw`Zf9YM^Rra7#K4}H)mF&hkftuhdboJWZTk(WsbpU0}F LGg$BgvFKY8K2H_Y delta 53 zcmV-50LuTvCc`F>MgpQ!kw`Zf6(D9!(;U{rhdyYOm<@)#Rv8FI&ZER5k(Wsbx3#Lj Lqs&YZvFKY8N;(%6 diff --git a/icons/obj/doors/airlocks/station/overlays.dmi b/icons/obj/doors/airlocks/station/overlays.dmi index a489f40be97a87d7d46cb67d73567a4a1e790e1d..b1e4f9aeab55b323fd07f8ff0cd3e992c6f06e6a 100644 GIT binary patch delta 369 zcmV-%0gnENMuA3fFDZ*Bkpc$}@2O>V+45QW$ADMqkGRUN9b z@&^;`Uuc;-|z)0#;U$-hA_(XY45~*I%0*thO8Wi_UAZAmHQe zonF)RUO(NA7nrfFfqESgD4;9XPg(oy> zz@#f9y&t-*tz~%7+FhjyrgJr!4o21o_frN<{bAaNrBL!HtJpCuIt|SD;sFyszetGx zfW4!`vj|H8d-GZfm}+(xR;+8RCe_WZDNz5lswq&i2k!zKk-05;E%X%DyA`aq8}MufFDZ*Bkpc$}@2!EVAZ42I9mQ&@1Vrlm~d zl*-WtLR@)8xLgzJE5b*N! z%(9bKp#cGlf@KZrx(VII2N@6q%#5y^;7e-JYFp1(rnK`QfPb^>!^tCh5b(+}g+`u1 zK#}){WrnB)0sM|u8S?39dosZfv+l(TtwuGOndki(%IsU|4kJ0^DL*CQ5nYY8IuG-T zD_)WFtKPKIqA4pwe#{Xc7MHD~fK`YNqZaK0(m(MN48#p=s)$FiiH7zDmb^wDI|oIq za4{)7p-~Z?u78d6K6Y9=an#sdqzSrnDKZ_5tPk$93Yw}_@+j-EXIc&}n4B-~ zFyrqxvZQ_k_KpsJMOX?r>DN-gRK4q2V_C;yQvK|P0!@Fbh5{v9cs=X^&t1^}OwVDx pTfu6(Vc#MwUhcDa6|w*TAOJ~3K~#90?cHx|T=kvr@w1u%XCZ%Pz_b7W diff --git a/icons/obj/doors/airlocks/station/plasma.dmi b/icons/obj/doors/airlocks/station/plasma.dmi index eae1601ed3de721678ad28738a37e8acc4e2c7f9..99d44ef86208c83b945234fa432eda76b31de62f 100644 GIT binary patch delta 53 zcmV-50LuTBBb6hNMgrngkw`Zf9YM^Rra7#K4}H)mF&hkftuhdboJWZTk(WsbpU0}F LGg$BgvFNQ3D-RXI delta 53 zcmV-50LuTBBb6hNMgpQ!kw`Zf6(D9!(;U{rhdyYOm<@)#Rv8FI&ZER5k(Wsbx3#Lj Lqs&YZvFNQ3Hu@I> diff --git a/icons/obj/doors/airlocks/station/public.dmi b/icons/obj/doors/airlocks/station/public.dmi index 0449817360ed527f33b5206cf45c9ad96e9a0225..efb4600adb2dfe65ab318d0564e3f420223d0a9d 100644 GIT binary patch delta 89 zcmV-f0H*)$5bY3AJrd_Mgrngkw`Zf9YM^Rra7#K4}H)mF&hkftuhdboJWZTk(WsbpU0}F LGg$BgvFPm%L-iJT delta 53 zcmV-50LuT>AJrd_MgpQ!kw`Zf6(D9!(;U{rhdyYOm<@)#Rv8FI&ZER5k(Wsbx3#Lj Lqs&YZvFPm%Pv951 diff --git a/icons/obj/doors/airlocks/station/science.dmi b/icons/obj/doors/airlocks/station/science.dmi index a3aa87c5a6e57ac75c8ae7a65209ffd72c57ebd5..53a9f42c068e01afd514b1b4a470a17df05dfe31 100644 GIT binary patch delta 53 zcmV-50LuT(Bh4d_Mgrngkw`Zf9YM^Rra7#K4}H)mF&hkftuhdboJWZTk(WsbpU0}F LGg$BgvFPOxLO&L2 delta 53 zcmV-50LuT(Bh4d_MgpQ!kw`Zf6(D9!(;U{rhdyYOm<@)#Rv8FI&ZER5k(Wsbx3#Lj Lqs&YZvFPOxPAV6x diff --git a/icons/obj/doors/airlocks/station/security.dmi b/icons/obj/doors/airlocks/station/security.dmi index c6f01195abb17fdfc78ae3c4f489cd6074631605..fd330c30f567effea6e8d6ec08f96685d83903fc 100644 GIT binary patch delta 53 zcmV-50LuUFB<>`TMgrngkw`Zf9YM^Rra7#K4}H)mF&hkftuhdboJWZTk(WsbpU0}F LGg$BgvFL^oPf!+6 delta 53 zcmV-50LuUFB<>`TMgpQ!kw`Zf6(D9!(;U{rhdyYOm<@)#Rv8FI&ZER5k(Wsbx3#Lj Lqs&YZvFL^oTRRt# diff --git a/icons/obj/doors/airlocks/station/silver.dmi b/icons/obj/doors/airlocks/station/silver.dmi index d3308eb8cd970d709b561b8fc5351eefe431767b..e7e6672fbffe033c4f6e85abfe93eccd96ca134f 100644 GIT binary patch delta 53 zcmV-50LuT`9@-v|Mgrngkw`Zf9YM^Rra7#K4}H)mF&hkftuhdboJWZTk(WsbpU0}F LGg$BgvFLIRM4=W1 delta 53 zcmV-50LuT`9@-v|MgpQ!kw`Zf6(D9!(;U{rhdyYOm<@)#Rv8FI&ZER5k(Wsbx3#Lj Lqs&YZvFLIRP>dHw diff --git a/icons/obj/doors/airlocks/station/uranium.dmi b/icons/obj/doors/airlocks/station/uranium.dmi index eda814f97e7677436298c11554e17eee1df74f00..ac8c6d06116f2aa2305853139fffb73dcfc2f43c 100644 GIT binary patch delta 53 zcmV-50LuTxAH^S#Mgrngkw`Zf9YM^Rra7#K4}H)mF&hkftuhdboJWZTk(WsbpU0}F LGg$BgvFP0nJyjM+ delta 53 zcmV-50LuTxAH^S#MgpQ!kw`Zf6(D9!(;U{rhdyYOm<@)#Rv8FI&ZER5k(Wsbx3#Lj Lqs&YZvFP0nNkA8g diff --git a/icons/obj/doors/airlocks/station/virology.dmi b/icons/obj/doors/airlocks/station/virology.dmi index 79ac14dffc37354be2169d90752d1b9d4b2f5ca3..b90e9cf29c3a02d982b711a927bf748359b1340f 100644 GIT binary patch delta 53 zcmV-50LuTwB*Y|;Mgrngkw`Zf9YM^Rra7#K4}H)mF&hkftuhdboJWZTk(WsbpU0}F LGg$BgvFKb8J?s_I delta 53 zcmV-50LuTwB*Y|;MgpQ!kw`Zf6(D9!(;U{rhdyYOm<@)#Rv8FI&ZER5k(Wsbx3#Lj Lqs&YZvFKb8N!J$> diff --git a/icons/obj/doors/airlocks/station/wood.dmi b/icons/obj/doors/airlocks/station/wood.dmi index ae34e82743c36a9f628547afdffbf2fb00d547fa..7b7df103296f674063cd27b233a1e201fe4b3e36 100644 GIT binary patch delta 53 zcmV-50LuTf9fFDZ*Bkpc$}@2O=`n15QW#)DTZWgN@bU3 zrA=`tUL;pAiZ!)GWXVWsLvG)Nq4}|m_5vR6o-=hpmow{VDR?x zN|K8dz6Az(Mv@j~)B54!Jog9;HcB?Fca`Z;OWkZpBBXV|fPa$Y%kmB#FnA}4K*g`X zfTn+kB+8f`7|;=|R>sAnos9Bsnl%;+)Dp$CI)AD>Rnzs{o@c79c8(p|26cU%=4E%h zETwl_>A6N#)ylZJUg)&A>aFou``~A$N4-M&FMfn5JiwMrti?u(>jNyhM;e-gEL4~; z3NNTcz@{6;okR;w>mUw_-Ax){J2#W@U`9J{ziTheax=rnQVHJiW^PQoNdqa}jWF}` in`z=1aI)sS60wE-v4G-Gl3&-x);Hkf3g5GE0q86DHKxk| delta 346 zcmV-g0j2)VTG(2UB!5GCR9JLGWpiV4X>fFDZ*Bkpc$}@2O>ToQ5QW$H6r*H|sv4?f zv{jyd^8>!i`Z;O*s= zL{}+%4GhwRL^aB)_T9&M?hzPll&os+3e%#Ny4sLPNb7(BC4bSUSL%QdQ^RK|_!VXNQ><^#bX?_$yf90X9{{QtV20eSocA zBc1DmWUers6i!}Ii5Z)&6nAc}TRZVA+x5~Fw$m569?WRx?N{lgnQo>#EQR0=ug1o- s4<4A9?gyCh`HdW@XTaH-%R~sGcHxY>vt|M4D}8RR$p8QV diff --git a/icons/obj/doors/airlocks/vault/overlays.dmi b/icons/obj/doors/airlocks/vault/overlays.dmi index db39b53fb6925185aae78143d2e7a1dc1e26724a..f18346acf682afa1833ce173d7bff131170647a8 100644 GIT binary patch delta 306 zcmV-20nPq`Ech#sB!3%vR9JLGWpiV4X>fFDZ*Bkpc$}@1!HUBm5QfkC6hnIr%bG0P zlb4dRL)CWiz6nu81P&{$+AfCLIyB0(D@vsD0XQ&9et*5_F#v~eN+fD=1r99x zTa;*P9dKX+Tcd4Q&UUmqhO}!4OEd~)nl4@{r)mZ#{Ar}x?9Q=A-=b-*X7gB|4c1KFDBYCe3P6vW1E3yJdq=J_9{4fdzz_O!|qT*xv%IAL2`ji3aFcFvr+-D E6g!!aGynhq delta 316 zcmV-C0mJ_ID}pSLB!4A(R9JLGWpiV4X>fFDZ*Bkpc$}@1v2Md45Qb-Xic_+ps@PRB zu~d#K56LT7#9VC@3>Kh9dHW8j+9WoLU0F;>-+gz8|JLxn`zQ}k>`VHEK4@n_z}w3! zC1DA OfpCtunh&!`0k9Ol@tiRL diff --git a/icons/obj/doors/airlocks/vault/vault.dmi b/icons/obj/doors/airlocks/vault/vault.dmi index 8281d3cd5ae419cd9df8ac9969b88b17bdd1c8ae..d2ef5d4e462ce765de44e8868b8fcb8fdb10a1e8 100644 GIT binary patch delta 51 zcmV-30L=e|9fci`M**vmNHrH7sfq14rDep_Cx%8gIEidBQpSb|jgpa+Gzd{=SNo+Q J%*3(KwGA6e7E}NL delta 51 zcmV-30L=e|9fci`M**#oNHrId)Wmk2(lTP|6GI~#oJ2MmDPu!~#*UGcGzeC4SO-l0 J*G{p}wG9vl6&?Tp diff --git a/icons/obj/doors/doorint.dmi b/icons/obj/doors/doorint.dmi index e48b91da16736a2f769f930f855fd2eb1378660e..2abe5c79566de9c75ac5d07c070bf103c36f9576 100644 GIT binary patch delta 306 zcmV-20nPrIssWU$0gxnr8G2M$bVOxyV{&P5bZKvH004NLt&_ougD?<=&&g8^?Nyel z-Mx7!mc>K+3KGn$hNhX2$dQpKK^D#A=u|K1`>VF(D!mo%^e3gE|AJc1xP2=O>UrBb2M=lc0=s`m58Qh+_H%`L zW4`~?8;ciU!N2?@5)JNZghj2|uJ`d}XLrM7Nt*FB?2jdshl>9IaqnOAwiil=vr7Ta EQ{CZ_{Qv*} delta 311 zcmV-70m%N8ssWj*0gxnr9(q(*bVOxyV{&P5bZKvH004NLty8^f!!Qt@rKdQORg}n1 zyLl-N#Y6H6##mQdM9~S!H013&q&SIU$EKKDB>4XBPFlm~?yERJzAyL>`k=`|2HUp{ zXJ@Ut7BWZ^&RWz>+g&fAt2%@XR!$Llx#CP|A0PwC*|)Dwcs)OV!s^X1?t?Rhrn*1| zspu;rk8qznMzTzKC?a3hh61WdBSqv(L-lbkmK<7bo5^H}=!-K$ Date: Wed, 20 Sep 2017 01:02:33 -0500 Subject: [PATCH 07/80] [MIRROR] Fix pipenets (#2860) * Fix pipenets * Fix pipenets --- code/modules/atmospherics/machinery/datum_pipeline.dm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/code/modules/atmospherics/machinery/datum_pipeline.dm b/code/modules/atmospherics/machinery/datum_pipeline.dm index 67b1d0d569..11a7881a98 100644 --- a/code/modules/atmospherics/machinery/datum_pipeline.dm +++ b/code/modules/atmospherics/machinery/datum_pipeline.dm @@ -5,7 +5,7 @@ var/list/obj/machinery/atmospherics/pipe/members var/list/obj/machinery/atmospherics/components/other_atmosmch - var/update = 1 + var/update = TRUE /datum/pipeline/New() other_airs = list() @@ -25,7 +25,7 @@ /datum/pipeline/process() if(update) - update = 0 + update = FALSE reconcile_air() update = air.react() @@ -114,6 +114,7 @@ other_airs.Add(E.other_airs) E.members.Cut() E.other_atmosmch.Cut() + update = TRUE qdel(E) /obj/machinery/atmospherics/proc/addMember(obj/machinery/atmospherics/A) @@ -195,7 +196,7 @@ (partial_heat_capacity*target.heat_capacity/(partial_heat_capacity+target.heat_capacity)) air.temperature -= heat/total_heat_capacity - update = 1 + update = TRUE /datum/pipeline/proc/return_air() . = other_airs + air From 4ee5ee85f5a1058fd3d862df912445fc41bd7565 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 20 Sep 2017 01:02:34 -0500 Subject: [PATCH 08/80] Automatic changelog generation for PR #2860 [ci skip] --- html/changelogs/AutoChangeLog-pr-2860.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2860.yml diff --git a/html/changelogs/AutoChangeLog-pr-2860.yml b/html/changelogs/AutoChangeLog-pr-2860.yml new file mode 100644 index 0000000000..cf46c2fb7d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2860.yml @@ -0,0 +1,4 @@ +author: "Pubby" +delete-after: True +changes: + - bugfix: "Atmos pipenets are less glitchy" From 6e7986167929bf5e5c9d54b4bc960e1d6f3d7948 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 20 Sep 2017 01:03:17 -0500 Subject: [PATCH 09/80] [MIRROR] fix black box runtimes (#2863) * fix black box runtimes * fix black box runtimes --- code/controllers/subsystem/blackbox.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/controllers/subsystem/blackbox.dm b/code/controllers/subsystem/blackbox.dm index 8143385486..2870305c3e 100644 --- a/code/controllers/subsystem/blackbox.dm +++ b/code/controllers/subsystem/blackbox.dm @@ -274,7 +274,7 @@ SUBSYSTEM_DEF(blackbox) details += "\"[deets]\"" /datum/feedback_variable/proc/get_details() - return details.Join(" | ") + return details ? details.Join(" | ") : null /datum/feedback_variable/proc/get_parsed() return list(variable,value,details.Join(" | ")) From 51786b346e20b2c32891b79894ff75f51b0c9d57 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 20 Sep 2017 01:04:13 -0500 Subject: [PATCH 10/80] [MIRROR] Fixes it so Deadmin properly hides the Player Panel verb for admins. (#2861) * Fixes it so Deadmin properly hides the Player Panel verb for admins. * Update admin_verbs.dm --- code/modules/admin/admin_verbs.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 343e954a8d..526d05b76b 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -27,7 +27,8 @@ GLOBAL_LIST_INIT(admin_verbs_admin, world.AVerbsAdmin()) return list( /client/proc/invisimin, /*allows our mob to go invisible/visible*/ // /datum/admins/proc/show_traitor_panel, /*interface which shows a mob's mind*/ -Removed due to rare practical use. Moved to debug verbs ~Errorage - /datum/admins/proc/show_player_panel, /*shows an interface for individual players, with various links (links require additional flags_1*/ + /datum/admins/proc/show_player_panel, /*shows an interface for individual players, with various links (links require additional flags*/ + /datum/verbs/menu/Admin/verb/playerpanel, /client/proc/game_panel, /*game panel, allows to change game-mode etc*/ /client/proc/check_ai_laws, /*shows AI and borg laws*/ /datum/admins/proc/toggleooc, /*toggles ooc on/off for everyone*/ From 5b6be1bc4446b56bc86739ac309d06d2d9e9268d Mon Sep 17 00:00:00 2001 From: Poojawa Date: Wed, 20 Sep 2017 01:39:46 -0500 Subject: [PATCH 11/80] wew, memes. (#2869) --- code/modules/mob/living/simple_animal/friendly/cat.dm | 1 + code/modules/mob/living/simple_animal/friendly/dog.dm | 1 + code/modules/mob/living/simple_animal/friendly/farm_animals.dm | 3 +++ code/modules/mob/living/simple_animal/friendly/fox.dm | 1 + code/modules/mob/living/simple_animal/friendly/penguin.dm | 1 + code/modules/mob/living/simple_animal/hostile/alien.dm | 2 ++ code/modules/mob/living/simple_animal/hostile/bear.dm | 2 ++ code/modules/mob/living/simple_animal/hostile/carp.dm | 1 + .../mob/living/simple_animal/hostile/gorilla/gorilla.dm | 2 ++ .../mob/living/simple_animal/hostile/mining_mobs/goliath.dm | 1 + code/modules/mob/living/simple_animal/parrot.dm | 1 + code/modules/mob/living/simple_animal/simple_animal.dm | 2 ++ 12 files changed, 18 insertions(+) diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 49ef79a4d9..495e31d428 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -30,6 +30,7 @@ var/mob/living/simple_animal/mouse/movement_target gold_core_spawnable = 2 devourable = TRUE + no_vore = FALSE /mob/living/simple_animal/pet/cat/Initialize() . = ..() diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index 31c080c66c..388a658e76 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -13,6 +13,7 @@ speak_chance = 1 turns_per_move = 10 devourable = TRUE + no_vore = FALSE //Corgis and pugs are now under one dog subtype diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index d223984cf5..b48e676a23 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -29,6 +29,7 @@ blood_volume = BLOOD_VOLUME_NORMAL var/obj/item/udder/udder = null devourable = TRUE + no_vore = FALSE /mob/living/simple_animal/hostile/retaliate/goat/Initialize() udder = new() @@ -119,6 +120,7 @@ gold_core_spawnable = 2 blood_volume = BLOOD_VOLUME_NORMAL devourable = TRUE + no_vore = FALSE /mob/living/simple_animal/cow/Initialize() udder = new() @@ -251,6 +253,7 @@ gold_core_spawnable = 2 var/static/chicken_count = 0 devourable = TRUE + no_vore = FALSE /mob/living/simple_animal/chicken/Initialize() . = ..() diff --git a/code/modules/mob/living/simple_animal/friendly/fox.dm b/code/modules/mob/living/simple_animal/friendly/fox.dm index 22f2041d18..e7d6bfbf64 100644 --- a/code/modules/mob/living/simple_animal/friendly/fox.dm +++ b/code/modules/mob/living/simple_animal/friendly/fox.dm @@ -21,6 +21,7 @@ devourable = TRUE var/mob/living/simple_animal/mouse/movement_target var/turns_since_scan = 0 + no_vore = FALSE /mob/living/simple_animal/pet/fox/Life() //MICE! diff --git a/code/modules/mob/living/simple_animal/friendly/penguin.dm b/code/modules/mob/living/simple_animal/friendly/penguin.dm index 1fa0fd53b8..6833ea83a6 100644 --- a/code/modules/mob/living/simple_animal/friendly/penguin.dm +++ b/code/modules/mob/living/simple_animal/friendly/penguin.dm @@ -13,6 +13,7 @@ speak_chance = 1 turns_per_move = 10 icon = 'icons/mob/penguins.dmi' + no_vore = FALSE /mob/living/simple_animal/pet/penguin/emperor name = "Emperor penguin" diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index e06de7b762..fa4cefd839 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -35,6 +35,8 @@ gold_core_spawnable = 0 death_sound = 'sound/voice/hiss6.ogg' deathmessage = "lets out a waning guttural screech, green blood bubbling from its maw..." + devourable = TRUE + no_vore = FALSE /mob/living/simple_animal/hostile/alien/drone name = "alien drone" diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm index 1c92b6233d..6b08d041c0 100644 --- a/code/modules/mob/living/simple_animal/hostile/bear.dm +++ b/code/modules/mob/living/simple_animal/hostile/bear.dm @@ -36,6 +36,8 @@ faction = list("russian") gold_core_spawnable = 1 + devourable = TRUE + no_vore = FALSE //SPACE BEARS! SQUEEEEEEEE~ OW! FUCK! IT BIT MY HAND OFF!! /mob/living/simple_animal/hostile/bear/Hudson diff --git a/code/modules/mob/living/simple_animal/hostile/carp.dm b/code/modules/mob/living/simple_animal/hostile/carp.dm index 9a8592e48c..fde10031d1 100644 --- a/code/modules/mob/living/simple_animal/hostile/carp.dm +++ b/code/modules/mob/living/simple_animal/hostile/carp.dm @@ -17,6 +17,7 @@ maxHealth = 25 health = 25 devourable = TRUE + no_vore = FALSE harm_intent_damage = 8 obj_damage = 50 diff --git a/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm b/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm index b697473787..e472927fc9 100644 --- a/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm +++ b/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm @@ -33,6 +33,8 @@ minbodytemp = 270 maxbodytemp = 350 var/list/gorilla_overlays[GORILLA_TOTAL_LAYERS] + devourable = TRUE + no_vore = FALSE // Gorillas like to dismember limbs from unconcious mobs. // Returns null when the target is not an unconcious carbon mob; a list of limbs (possibly empty) otherwise. diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm index de995f951a..af283b9139 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm @@ -31,6 +31,7 @@ var/pre_attack = 0 var/pre_attack_icon = "Goliath_preattack" loot = list(/obj/item/stack/sheet/animalhide/goliath_hide) + no_vore = FALSE /mob/living/simple_animal/hostile/asteroid/goliath/Life() . = ..() diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 467bd13c65..2154d198bb 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -60,6 +60,7 @@ movement_type = FLYING gold_core_spawnable = 2 devourable = TRUE + no_vore = FALSE var/parrot_damage_upper = 10 var/parrot_state = PARROT_WANDER //Hunt for a perch when created diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 1a14a9cd36..dab8210940 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -85,6 +85,8 @@ //domestication var/tame = 0 + no_vore = TRUE + /mob/living/simple_animal/Initialize() . = ..() GLOB.simple_animals += src From 6d717995a4989c83cac742dfe537c4fcb9864f41 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Wed, 20 Sep 2017 01:40:09 -0500 Subject: [PATCH 12/80] Update meteors.dm (#2867) --- code/game/gamemodes/meteor/meteors.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index 3bb3c8b43e..d33dd2127d 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -309,6 +309,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event /obj/effect/meteor/meaty/xeno/New() meteordrop += subtypesof(/obj/item/organ/alien) + meteordrop -= /obj/item/organ/alien/eggsac ..() /obj/effect/meteor/meaty/xeno/ram_turf(turf/T) From accd92a676ac545412e5d2f40304789c69e32292 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 20 Sep 2017 01:40:52 -0500 Subject: [PATCH 13/80] [MIRROR] Fixes mode conversion runtime (#2855) * Fixes mode conversion runtime (#30857) * Fixes mode conversion runtime --- code/game/gamemodes/game_mode.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 82350726d9..4ec01f09e2 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -121,7 +121,7 @@ var/list/datum/game_mode/runnable_modes = config.get_runnable_midround_modes(living_crew.len) var/list/datum/game_mode/usable_modes = list() for(var/datum/game_mode/G in runnable_modes) - if(G.reroll_friendly && living_crew >= G.required_players) + if(G.reroll_friendly && living_crew.len >= G.required_players) usable_modes += G else qdel(G) From dae93856f5224038447508eeea924a5a7da52e8f Mon Sep 17 00:00:00 2001 From: pubby Date: Wed, 20 Sep 2017 03:47:31 -0500 Subject: [PATCH 14/80] Traitorbro fixes --- code/game/gamemodes/brother/traitor_bro.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/game/gamemodes/brother/traitor_bro.dm b/code/game/gamemodes/brother/traitor_bro.dm index ccb6b774b3..4e8a0dc6b6 100644 --- a/code/game/gamemodes/brother/traitor_bro.dm +++ b/code/game/gamemodes/brother/traitor_bro.dm @@ -80,7 +80,7 @@ antag_candidates -= bro team.members += bro bro.restricted_roles = restricted_jobs - log_game("[key_name(bro)] has been selected as a Brother") + log_game("[bro.key] (ckey) has been selected as a Brother") pre_brother_teams += team return ..() @@ -95,6 +95,9 @@ brother_teams += pre_brother_teams return ..() +/datum/game_mode/traitor/bros/generate_report() + return "It's Syndicate recruiting season. Be alert for potential Syndicate infiltrators, but also watch out for disgruntled employees trying to defect. Unlike Nanotrasen, the Syndicate prides itself in teamwork and will only recruit pairs that share a brotherly trust." + /datum/game_mode/proc/auto_declare_completion_brother() if(!LAZYLEN(brother_teams)) return From ef867206bbf94a1111309578d5d2d6a8610a9403 Mon Sep 17 00:00:00 2001 From: oranges Date: Wed, 20 Sep 2017 20:49:41 +1200 Subject: [PATCH 15/80] Merge pull request #30848 from tgstation/Cyberboss-patch-2 VV Href Fixes --- code/datums/datumvars.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index d55a32609a..b653e5c6ae 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -83,10 +83,10 @@ if(isliving(A)) atomsnowflake += "[D]" if(A.dir) - atomsnowflake += "
<< [dir2text(A.dir)] >>" + atomsnowflake += "
<< [dir2text(A.dir)] >>" var/mob/living/M = A atomsnowflake += {" -
[M.ckey ? M.ckey : "No ckey"] / [M.real_name ? M.real_name : "No real name"] +
[M.ckey ? M.ckey : "No ckey"] / [M.real_name ? M.real_name : "No real name"]
BRUTE:[M.getBruteLoss()] FIRE:[M.getFireLoss()] From 51b8f45345fd55518a5ab6baf15a1106c2becedc Mon Sep 17 00:00:00 2001 From: oranges Date: Wed, 20 Sep 2017 20:52:37 +1200 Subject: [PATCH 17/80] Merge pull request #30802 from CPTANT/Stamina_regen_2 Stamina regen light --- code/datums/status_effects/debuffs.dm | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index 9ca564cd2d..b8e51ac860 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -29,11 +29,20 @@ /datum/status_effect/incapacitating/knockdown id = "knockdown" +/datum/status_effect/incapacitating/knockdown/tick() + if(owner.staminaloss) + owner.adjustStaminaLoss(-0.3) //reduce stamina loss by 0.3 per tick, 6 per 2 seconds + + //UNCONSCIOUS /datum/status_effect/incapacitating/unconscious id = "unconscious" needs_update_stat = TRUE +/datum/status_effect/incapacitating/unconscious/tick() + if(owner.staminaloss) + owner.adjustStaminaLoss(-0.3) //reduce stamina loss by 0.3 per tick, 6 per 2 seconds + //SLEEPING /datum/status_effect/incapacitating/sleeping id = "sleeping" @@ -57,7 +66,7 @@ /datum/status_effect/incapacitating/sleeping/tick() if(owner.staminaloss) - owner.adjustStaminaLoss(-0.35) //reduce stamina loss by 0.35 per tick, 7 per 2 seconds + owner.adjustStaminaLoss(-0.5) //reduce stamina loss by 0.5 per tick, 10 per 2 seconds if(human_owner && human_owner.drunkenness) human_owner.drunkenness *= 0.997 //reduce drunkenness by 0.3% per tick, 6% per 2 seconds if(prob(20)) From 9ee60af5e8cd40c84f0eeed663550209eb70018e Mon Sep 17 00:00:00 2001 From: oranges Date: Wed, 20 Sep 2017 20:54:06 +1200 Subject: [PATCH 19/80] Merge pull request #30768 from Cyberboss/BringingSexyBack Adds back required arrivals undockedness with a config --- code/controllers/configuration.dm | 3 +++ code/modules/mob/dead/new_player/new_player.dm | 3 +++ config/game_options.txt | 3 +++ 3 files changed, 9 insertions(+) diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 6a9cf9b963..b930e53f3f 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -278,6 +278,7 @@ GLOBAL_PROTECT(config_dir) var/error_msg_delay = 50 // How long to wait between messaging admins about occurrences of a unique error var/arrivals_shuttle_dock_window = 55 //Time from when a player late joins on the arrivals shuttle to when the shuttle docks on the station + var/arrivals_shuttle_require_undocked = FALSE //Require the arrivals shuttle to be undocked before latejoiners can join var/arrivals_shuttle_require_safe_latejoin = FALSE //Require the arrivals shuttle to be operational in order for latejoiners to join var/mice_roundstart = 10 // how many wire chewing rodents spawn at roundstart. @@ -818,6 +819,8 @@ GLOBAL_PROTECT(config_dir) GLOB.MAX_EX_FLAME_RANGE = BombCap if("arrivals_shuttle_dock_window") arrivals_shuttle_dock_window = max(PARALLAX_LOOP_TIME, text2num(value)) + if("arrivals_shuttle_require_undocked") + arrivals_shuttle_require_undocked = TRUE if("arrivals_shuttle_require_safe_latejoin") arrivals_shuttle_require_safe_latejoin = TRUE if("mice_roundstart") diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 97a5cb8486..c1dd6a662e 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -329,6 +329,9 @@ if(SSshuttle.arrivals.damaged && config.arrivals_shuttle_require_safe_latejoin) src << alert("The arrivals shuttle is currently malfunctioning! You cannot join.") return FALSE + + if(config.arrivals_shuttle_require_undocked) + SSshuttle.arrivals.RequireUndocked(src) arrivals_docked = SSshuttle.arrivals.mode != SHUTTLE_CALL //Remove the player from the join queue if he was in one and reset the timer diff --git a/config/game_options.txt b/config/game_options.txt index 7d12225f47..c580cd4ea7 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -486,6 +486,9 @@ Space_Budget 16 ## Must be at least 30 to not break parallax I recommended at least 55 to be visually/aurally appropriate ARRIVALS_SHUTTLE_DOCK_WINDOW 55 +## Uncomment to require the arrivals shuttle to be in flight (if it can fly) before late join players can join +#ARRIVALS_SHUTTLE_REQUIRE_UNDOCKED + ## Uncomment to prevent late join players from spawning if the arrivals shuttle is depressurized #ARRIVALS_SHUTTLE_REQUIRE_SAFE_LATEJOIN From bb837fe20e42d04547925e00ae2108110647124e Mon Sep 17 00:00:00 2001 From: LetterJay Date: Wed, 20 Sep 2017 04:57:57 -0500 Subject: [PATCH 21/80] donation item --- code/citadel/custom_loadout/custom_items.dm | 9 +++++++++ icons/mob/mask.dmi | Bin 42984 -> 43368 bytes 2 files changed, 9 insertions(+) diff --git a/code/citadel/custom_loadout/custom_items.dm b/code/citadel/custom_loadout/custom_items.dm index 5ee9f3f508..0b4fa8788b 100644 --- a/code/citadel/custom_loadout/custom_items.dm +++ b/code/citadel/custom_loadout/custom_items.dm @@ -68,3 +68,12 @@ attack_verb = list("slapped") resistance_flags = FLAMMABLE var/bitesound = 'sound/items/bikehorn.ogg' + + + +/*Zigfie*/ + +/obj/item/clothing/mask/luchador/Zigfie + name = "Alboroto Rosa mask" + icon = 'icons/mob/mask.dmi' + icon_state = "lucharzigfie" diff --git a/icons/mob/mask.dmi b/icons/mob/mask.dmi index 70f994cdbe0573e46ee918c9237ba681fedccf1c..92a74b0afacb9b90072ab1b8080b2bb7841cfbb8 100644 GIT binary patch literal 43368 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 L1I_9?b}|10CRd^G literal 42984 zcmd42cUV(R_cj_uiYVn#kq#LDyUZl53uK^VW z0qLQKCOv_Kk`R&*a&~-w-*>)q&L8LBm+OMrd$KdkUhAG!?pYISYOK%3%Et-r6p~eyX6Q3}{cO+BZVBg% zr^Yp~>Q++!@RN;vDl3!B$VF${bNGKTFtXq%q2}8^<{WB_hr4n~e{?%8=-^;;I&WuV zDCp;xlj@#Gcy~lpS&5Vt{xtSd9XAjOQWvECICc7`@x!wu()8lp2D1wVQ?Z#I<4io) z-)7r%J{J5D_I!%_+X*i4^}Dj-XMfzdVQlr`wUVxPMapf4MBb9vY2PHW# z<}f_2vw5+NiPmkr^kBWZ%a_S6nK6CC)H?yH!g?#a%aB`LefFyxuB0GEb=bwiSll`x zJnw}(W3|k**7c+9-7sG@@%I^*-L4q zpNSB+a^JgCpHJ{zzr-fcXYE#t%;RBnu0@)5uq78o*UosVtN3h?e@DbUyD*&)WP-El zHdrhU-Hg}sDTUBpo$Q)KV0f3WgQmOVk4`RoO)YmXzn2^0VJGh;Jve}F`p9+2wjyX5A=kN8ke9En> zyvq7hy4-s$ot8_y80MGjT1TH>KY!aa@S;a>S?zi5Ewz9$d0uVIqu-hURy&;54Gp=Iv-QQCq*+XaN-6N!n1>W)rp@3}FFO1`YB&19?n zp^xUSxvbZ|K877;f0=!?wcd#~X-SW9J=leQmwjNOY&>b|ZFozZ$%oh_xxbVwQLB6%Qxl?brU%S(B8W zFEL=2n6F#P8tJ(8R)4WNiFCJtI`Q5Px9#cW*IkcK01FAU*bo*gM85!CQY#b>`+Eh7 z;#UtW_3O-0aCsY0+0?~)H359}g2IqduJ`Ty_iB64$w(E-%^~3XkH&`cbq9Fevhoe( z5EgD(etJdM?abNXC+-@(xqW%8!=Y_sH3&25iE8%iIl6WavKIaAV0&gW;nu54{9?=I z*gz`*BPQuiVgK6kf`K`MSJCwb12cOZHn2I(?f0i8(n7(VNobF$m6esdy@yA6Qa-GJ zlDk31@_dR~)3K`kO#}YD(JLml!0)FeN^R?0XF4L=g14sfBPj=hV+L1a77O%%8TSqj zPT=R=>rjwauF4oe);ITS-&}6uW@Kc{P`mCtp?*e-<<0Fir_Y1gK?90+5sHe6DRGg^ z?{DOr{;G$}HjcW?I&aK0RBR_Dv2TG4&29*&7^YtPAi9leG4G1uP&Lse6_!N3i{TLV zHdb4`pbVL@NJ1jQp^UF?m7u5Ee;g^&enU~^OXncO5L1azkIR^Nfbi~eX}t6nuXS*?l|7T^WX9|x$0!5*L5hFK7q+a8BiGqDaq0O)zdk&sh*{N zxy~&7{({4(ccQ0uTcA7Mr+S+N zXl~j0ex@OUwD+pIA5d7q-FGXiiXb}ZR3P)$z#enumVx10DsYZhagmK~LpfR=$kGQz z7|83Lsea3zMHlLNv5Bftrt+Ag8!kf(%#CPnBz~V&|D9CWma4Le2%rR;P;fD%T+LAb zdRlsVy42OH!?H2LLmmu4GH(HgGe*5D(j z`ZV|kPO~m}_lf@7*F&^Q`;z05T&!)R&Z+lBo11G}1y|hM!&-aoJK9I7@!K)hQ;gSUS}Po98~_xfLX)MKYcA{^|>kpv7T5OmFRQkG1KDs`M%Ihb1w zqA{Q4c_g~IRX3F2ZQmMIGSzLo@%#kC{hkCt!nn25T@Hi>pfdbwnv-3b)7+AeS)s57 z6dRY&UonG4$IR~AsIYfAAE!sflHgLjYqSY_ALYAu?}pWX@f|CycCgR&>*ginqG%Q2 zR+UqDQ$0Nl9v?{EO^m|JJ~#Nl8Fn!3=1D-0t5fk~pL5e>9nkKFAFpUEBEkrxq3hXD z)9jz`xHFp;V6$k?Kd9@Uva_pJ`_uF(OD-Tk&t_$@a5zICr89WjPR6O@VH3*#onzRh zn2VcRg>DS{UMmfj5d~$mNMdDWwXm__*^Wuu$4&hD^~==NwOG`hw6{8eg@*KB47fep z*jix3Uz8hC@b;LfLk;R;+CE(4XS8pu99#OVK2GSWFdc1m)?bdvX}g6KG*mb>q+2t6 zrV~FmcRJq1ld-T>eyURI(O1y&#F>~bR{+ms$^uOYG2fs4wOpe!%^^5_rooe2>y%uu zm*bP;bXxiBC)&TQnlxZ-DsRs=S>L+#!uZD0sqLv65we=1qB&-wY77JK#6mzR>{}7g zjp56DdS2K=2{h-TZaf`}BmF7~C!n3)$kGplt@93Im;OtWsd$-6mUuFrwg|TC${IkFBrsE7Mx-!z9b`6er2hp>DqL zd-by%a@IGU!)3)9aai`6wm*}App!Rr&z>Ki7Se1G~Gi280? z($$lMCu86mHBQ3)kbiFa{XW1>J0EerKKibwv!MofFONF9Kl6}#Y3iavzD4&@rkVfT z{OjthIRDGq|M9msrqqP-s@Ta~>Z9U-_624TZ1Hv1k~8^RzHW>jZOSNJ;U`(R&E5ww z{=@NjS(x@L=xl5?5ILZ$r%ZXJRUQcq5Px`{g|U2vvChEw&X~>$j9qR9)|)cmkE3M~ zc(ZI^&8K`XWow!btJp-AC94Oa3(v?l-{gMi`|Z|?VGMcFF&t7KTwnwKa71Y9N5@25(rSL|ljZand{6pR^=zfS8_rmvXz3EoiasAZT1 z6u}K6kL3y-93%!twueSWo!5%iW$gE<&Z&s&j*qA84vYtQ;`e(LqXV=zd=i3ZcPF$b zcBdZgYg?z}=K8Qhr*Bh<98k4?zAt@g5SpsAoE$&oL;+IB`2G7nc(gm7UknTwZa%kY^wx0XdSz5ppYa`Ww+;!Z(Wn& z`&l(VQe6oPF3~Sqla_wBrJTfLNj=M=LyI zs$Vzy>~3u#T4*9Pb=?qGXX3_RQ9L$_%vKJx;^Z@TmJ5KRtGGUHckm%gf7qdb5pRyV?kHj%qWnHh^Y*FKU#d zIo<1MS#al+Fx{cv@2Qrl2PD0Qnt-In3!UXx`Te`4YPNVadrXS)ANx-IaGZ9u@?cwrZC%x zjb-|+#h~+ERLxj4LQh+GN{E8kWe0o-R&53HSFBz)8!sPp1Y=>4fMV6UYQTHNi!U&J$W-p#)5}Q6<;LX+~o?sGx zvNXJO8;IcwF4yPfU20{0wru*aDHyPH;~kOV;L*=--el@kIdztmmj1%*Nl8hKmJ%?k zT6Q+gV6#Ahn#i5E{LRG+)BY2``hy2%>fMv|92-3+@EZ1mwf{sX1X3C~UJVQmS^+9s zLw%C(pI)M(+Oh=iW&}8QSH66Cvf?t5O}LE1LEdwax{yn-nwA}Cp;7A0gj=7a#&enx z4(f)~F<&ObwNeut>^G`v9a!;dljI|2a#q_WaA&2YU|d|&SE?G-rhsh^Sq z;+GkLP$n#bsGTCKPW&32*x)m1+({mX$B8z0k4v>ijvbHt@W*^J1|WXVOixcQ(4KVg zOPCfHch-bMpB*qiA|fJoLn$9V{3A%memhOBIkZGnGTbs&dx6%#)~`__s6?a3wA#JdiGAL?jzDPiNGVSVOnS=e>qcCBIwM>W#QZx0H>cj>kWI9G;r zM~9!h-#kQ{(GDnRO0S73X$mJud9GL;TtArt@htFk~6Mk+Ayx&6$BC z(teZ;ff9z_*oDPN>2Tv}?v28O7mm7zln^FcjZ-&s&TCGtL`#I2X-I_Revlurt4O`3 z_RPyV?7@xhl3Z9h&LJe>+hks+tQ1!{_NhuO0Zf)K(1M<6~ZR~3K zEQC+dH7>=n_tEud%3Ix1va%D)iCV5gJZhsK3fb4Q-6mumx9)w|v3~e)E0o$rJr*{k z@-dpKf{IH@tXb_gH#Y&T?`TG}I3J=b;G*FER2g$);{+ioDUUf|T>{==ZcO)us?U5S z;7}TT792UiRRMq_Y-wpRFfp05c8YXaJtm^Z4X5iS4jeloTD)6UFK&KF3v;7KuyDsP zAhyz~LU>cdfDqXb2#4oyMJ;m6IeN8M%L%fC0QurmS63+@UPLU&YycTWsqn&oB485? z?XXA3YU!OEVer?l_Y}L0@855G!Wj`N4YBj&E`3Cub;=z_;=#Kpd@x7vk(s?#RW_ph zj!~PHMO(7g=5&pC_!}aeInXmo&Fj;HNh&qO$Fg47k+?X66es)l)lPU172R{frh8ou zc}p@`BQ031l)8-ln%tjMwb*wZP>MnzKhMo?5FGgcPrW~-7{h*1zg1i43B!DrjCV2kZZcSX?VR{`Vhd#{7_XY>nKT?}=l!6>2#Nx=GdTWHkQ- z8ojYv{sL98BMEL4#MLCb+#GFwN2cKnn z#TwI<6JyG+%ws&-(%6)?bGFtscOn7D7b<+CSyjP(4#>>sOD!| zV|a5_;j`_j#Z5~HV9XWh$w+J9CXiNMEOQ_G6}6b=7}jgRqK;&BzGD1(MJRf<%D%~f zx>LaIy#W1x2IlnpKNS@UITE7W0?^r3vYPcG77=W?1?$JBcM24VX zl@B{H@8J*P(as|Omv<1gII@Ub7TgyCLxKjPvo4jYJ z|F$x^)oJo#gZguWw>d!*-RKHow81ElY8b&C5kTfx3fNc#^8>_ zLv*5lR@=^-C0jGJcDZBi{#$|6jq2Z`=7*JidYp!9UzkClb3TUP*v*-i0K7lsOs<(A zOJ1)BkV=h!ZXarX#UyizVGI<3B!ZLUlqsDFd(NdCCj9pbl)!c30=?@I<9|ns{xmvj zmb@Wv5d#7!a#Lnf(E9m<9iDsMFK&L_U3Pv>@6Bs%sl%pG0-OCr!{TDAaYZ*TEsBPn ztwxg{riJ6UVPR*RS@J+2%P(3t5V4|6A~Qup$r9=CU!-x!=y~#{X+;R3pCgiJ?&O)gyv-j8=l4)g z{H*~(Mk=%C*&7(dQ64;e_)rq`mwHjsnybtH3D}F`uF&lvLp`}5~XJfC8Bte|;2rgiF{YTlD9bR?8#`QC^?sVb~fiAJ;1 za3t`Z4LHBb20;9noP5Q9o7VdHRY&N$paZo_*p5wH2FIEqTXAJNtoyw{&<2s^+tu!w zNxk$J<^f`0X$_5;z56$0sk?>?_S$?(4#%m7eutLXxwOz*W2-ek61(711GIbk_F>)b z$C0DNRQ{L6{YJ6EF;12lG##~>QE}saTyn>HV9t||yL#VymaJ>`;or6U9F&#*j!E6S zfv;#irr^?Oy0D;YG}`jHn-0Kx##=9qxw6qgeDmlhA@XKtU4WaWkL+V*dKYMydlH0R z^}G(5_tE@< z_jk&F^6Kl6hhl+9@t_(vV11lEb<((?XQ{lpCl(#apv4x;3a=Sy?BMk!=sL1}A%HsV`8=?Apm!6-zDX^0` ztI?3(1mm-BC$GkIP|Dy9y}JkT9g}Rz+4^gOjR5y>m?IqgI`M~zbA{oF9~=bF%n-u6 z4hB&BO%UT^_!i6L*%PNgpu_P8jKit>fX1CaB#RF4Bz2Byp3%{we+cUQl73f;(KL8?yR>=;Pv2a*5lpwR zce69<=ISgmf6_+?34rE>-liRnuQ^V1%Tr!#chKQ`v&t$H`iWYpLKru3)|~GUYsJCP zE)c7+(EIrI**gH5kzu{~#M#D~VSAl;8As}#E&#>JnUxTV-U22%W6)V)Km%}4zBaI_ zf3(l(#8=5Oa_S)AkU!&cWcIx3D}dbD-w7^dTz(D$`94!-&680*HSjMp`$O2`>UElc z^IufFLLT-M$w2;$33uWVtL=HbyZ(OwE0eMo^}N2w?XSjtNY94j4mJM+gs9^B)%^e9 zW3M`ow?^YX-3vB=nfv=Rv443Ojy^h~tkB*&jgx3J?P(4|MQaBwcP#X6O992{k2<@A z0J|^_0*D5f*d0Q`k<8yq0Ui4K1A)G>{uj4HDgPTPv2J3|YxhqJG5p_Pc?4lZ%4y^R z_Nbue(+1g*^{@3=EUz94Y9YdwN_yz;cTQwn@1M@?kW^r#a_2o=(5`(hx*Scuk2?W+ zzA%t;_$V-nkP#l0jHJkFSevLOA@TTIR^&%*jzQ?YBaJ2B8zav2aeP@q&xmKV|9r#h zm{KI0t>L~}uK8wttzs;c7mcTeYjIqulhA%vKH=ZCLvN0kq2z7nq;5){& zIe-wjJdt$evQn_7<3uWY{wUzw6=2k_J$6kV*Cfw1m(OCARi8HJ_fx$BxT=FHy8G-O zmQJ4+R$6KyB^4f_zO)8nFF0i5U-E132XrMB?w}%ox##uTKYUh23xXV<&I3k!o(Rkc zv$xNGN7wY#cca#$BPRb>pVHVHM%NvK;l$Cw@iC*ZF=n-I6}1=Ir3}pqC2ZAh!3_8_|RTRm@`gg6>eBH+dN|Mv#}&I-0V$l|&qkk8T{5j~;QnZ^Xxq9Z?E#GQw;b z|Kv)*1Ynl#$3q_*H7}Hqhz}NWg;WQ(NVsso3Jd=njQXqyEBs&PUu2?8K;a|TI1 z?K%0W8>B>g!*cumAy)c|Ty&-bO_;F_gV;F-{*XN6HPb%Z$7@Qxqyn<+!EkOxe?@mc zau!0*9G(A5yXRJf)n?uiI+=OZn*(KeWA?CgJ+b}_mUAfat3_7_;+ z#L0iSd?Udb(IKiu#^~Q46KAU@%?c_U>=AB*K>w))=!Q`N4qiatBWU#WOp9l(5P9`# z1)*!n7cb9wmWiZu3Z%ROcvU`{>HN!By(INWnqv9E|cfc^2!_OsFiHlRxUMo)HH4^jtc3_u0H2AxTrCCNn zeZ3N3&!pbl73a78WzV( zGj-wxOP0C&XN9#=meQ15@z10QJ#m7bFk*%M)BA7w`VCg@@$GJ4_(=WoR_K_&RCNl# zzoAeM-*i2`eHDZpmKS_E+iK~&DkF>Bisi@vYzNp3=50e?pw-5q-`IpnEsw!wA>JLX z!0cCKWGygO@dzpVSo;#gb>newVg|p$-0&)_v4u7B_ddrZwU(v2`fHZ%?(VEgzf3Q2 zn!4MT=Vb4Ud06W$Z{~z!<&%3JRuw$?Tu&yXn03B6`Qo{Ofw@xXmU1hugQ8g_2hMjo z9z8n9*G?)#-i%Z;)-pQwEosHKJAQjKd~fuVytCOKhe^Z$KvmH@lXXy%J!K`pli*Pw zVf5!=xu{JN724%?od@Mvqo4leLaXE+7x0n|mV@;gwVHJ~O};fj?Y&pK?BqI91-@Z<%x8 zQlH8nf$~$*ihRH9a_IN}v8*GzA)BVskysaEn4B2ph~b{M$$;FjInHOI%;8lS`PFTz zEYV&%NU&#QUeMm69$F&R*KhIQLHXXES;|G+16%jlzP>*Eny`fGzW>?H%@e%l#UF3B zit4)82$D}`y!w-c>qy;0I*`hu?v+-g?RrZ^T2Iqe9 z?OBAbOA!TG5b6w>ZiK0m)dlJ8V8eN>iI=(=Cx5x6lKD`@$03o zn9LIlOrL;OVlLTuH}F3EM7(nNpI2*u>%9sH0Ps|`{x8X`nmx(P-B2_CczY2Y)k;7t zZq!pZ>0!c4YnQTHOT`;EP=MESj&;~J#P@zmaz8#HS^^j-JC}N-2+{F8n-dV+8ps2z zonNC0xA!hSC=Vb)Pnnr31^=3svNTV*fP3KK(Q0N+l*F%GDPlysTcQ$PAaHK zXf!?+5p3=R!h@R>1v`BwW_0vre&=2Qoy~A)oWri?TzL)QQic~DX+W8jB6T+xeGp!P zo{sHOT6y7~ahypTa}dd$6zL?VtVhKFws{(;YswK`(Er)iBq>&v40;0l;sxq*RUL(r^u5u=%s2Y$+#Z&JirKQn36 zzv0=ujr)t|Zw>nbpX_&sJ=$QCl9YTrGkJ;YhJ^ke(d7+|EG=V1V~ zh#v3Xzxk~0qN%0VVPMlgw>j{4lRQS>0R+nw$U+dV`#zk-BglCQSZ67q!_SX^&0xnX zPyrP*`EKoy&hwRvr}Lrrq*6W>-{P23WALt|;5rvBaB-CZoJ=Q;imRdxQ07)n8}&=~ zL6yAU%SsgG2=t76rL|G={D7*QfJ%fKa%k|d3l}G^SKNNPjmRZg z&%lK9kgV|xz{!2BQ77ljXVR8w0Du)1Bg@OXVZ>QJC}8V z4cob#R-dZmrsgj*la!OOu9To$fZzZEt30L$NQDWdu$Q;Ft00}PqWxstdR&4~i z)GU#|*Z+73c)sD5M*%YkDem3uVcIOoSB&CBJK|hS%gHKASlj2Skc2D&$$xzAniGE9 zVzzP>nQXf?ux)N-Z0cmK=2jej2=S8R;MzJDT2N3fk)On##naavzH0?NC#93~T*@)v z2e=FbDh;1`_k){Ljcev4cW$Y3o(N04LNWBm7~Cgygx~2-r)2APz|c zu?jHEpJ@!EyWLC`oc31iEB5hfgIK0AtX9r2qd~v-4U&wmGu7(>?BLz3kvo+ZKx&@}&Is^Pk{Q zY1uBe4UM|rG?Cx^#QE%V8Px;C;0KG#z3pUjCbO1%R3QeE*b~i9adZ>i9G_fRAqsw# zFH^=bwARto^pY|LkG9@N?If&)CzLc+w9e{e;7<5@O?0S8ktyT(3nB>@PCI)qmSM@Q z7M&jPhUTeKDo2n_-bOO97@$C6*>Y%Cbu_}Vt%<^42H3*gawd$E@FZ@GQP2W(&3#({ z2(NBG_S!&o_NwjI2a}K95xC$T$F2tL7{SNaT%)!PW>0?xc@$VxKJSih%cc&=L)Kvd z!^DUH%UOd3VK~S}*=Ay8z5Q&y;~R)hqVsWczFtz;>*5<>M8@P9!j+UNo2w46HuFvO zGlV&Kh2udjY~1gm_KsT^w0mqsKEy$F#Q7KbTZ>1?Z9}SC6es4r|D})F<837e*r|de z4(+OBg8kr`jD}WG_2{VIN%hXO6pcbd=kH%8)!Y3VNctqPkr}g9%7VY+a0u_exHC)~ z3LX`5OPzp+_VK<=5@48Cg#AB3RB}V^rK|w^M6$>;IB`%5D*s1?{n3m z4WebfL~rS+e--&uRg&u0%EzSRd-Yfl5sO23Y;*qF-V2>%(V}3))v#%{+bU>U;CDr` z>(3};BgQuDprfsF97+Yc=$9)8OLKm@@l~AaI>j{HV2HZ5gVOHzlkXB^SXK{R7#g$97Vm3CY_qL(B{E47XQj0$g1#8yX`zVhcyiLm zfWC!+ul(~#b)hLauoc>7TiUTsQR#idG#~4Ywb|ctPN5@X;!t$mLl>yK{;Z#v;3%XKTzUER$%aH6$G5p@n!s|j2AGUx zUMO$wbysg2JFTGSFW~Mz&py6Dcymm6m0YkeS^HqWxw6l)Dp%QU`?8NB4b476GuSP6 znhQa}=ltgIJD%k_e_&uepb%gl3tC;_>3y(!D1k3=vSg9yx%`zHLGA2+uV%$5K>?9gX%fEhB2M!ytX~p(I$L z;n$E0Ril=A}S{{DGB_t^xk4ALJ9hf&47&h@TPco_|%yW+UM z`Z$kn>wic1mB*fsNQ*!;yGZfAVSMmEmAJ+qaf?k;g!##Lzr6t;2RVccahV zWAa@g)M@9*?q(jjX36~RDS2rEQQE%7G>zlPwrFva!1}b(4c8`pE|}|dC%tdwG$>K# zYN)kQM#F=!ci0&ujUi=TO`nkQ6w~oQ5!r0Z4}3Z~Mut~sS0FSROP}G4EkCBY18&sL z>0#dJA1x_qnUM<5^)NH2;n0_{r_l4t({p!7!V%?MbA1O+%cb|-`7}emh?eQXN2CDI z`03a=AlpVUdY&HJo}cd%`K#f9nSx<=t%P7YLFIiP#fd(HZ@pdmXp818%lJQ>sL))l za&yWjHZEp^Ko8-TdBc5eX{7Byp@K+?wZP$3#ZlXVcDNikKzp|GeC9m|MYF;^1|sc; zYrJyt5EP##0aO?G3_ImSjK*#53uaGM?!Jg$O=xv3-1s5>p(b<{aOr`K+f$#*V>(;g z*>kZx_g~%DXR{Z^F9iW5>fgrLa+B))3D#tjd3A?iFccz#5)Ex<_~Nq9MBVsPM*w`a zw4lFz&_l;q2h!GYxFuN=sAw{XSrvcx>*d!M+Ea@Y{+=QL`-KEHenyk|b|OJ3g>@N$ z)~<+aRh>9Su-We6Zc^MzmUQn{=ieTeiT+Vrqt9S1yOFDpbxVuloxS-fB(BvW$858wp-u|mjfwx0>JvM6H!_AHn!i46H2+u-Up9TsyUqes`0kot{V&-`}N3kq^&M1F)&^ZEPebvxWc^0LLIl6hNr29c?9Xsw0ebK}%c+PODFHYvbdJb}U<&*{ z_<^kV;y9i5uPaVrW$K1fu!3B)VP7YHbb~-TuNivU3V%S4ImQta3ZMO)mxChdm;z&$ zzQ!8?m@3z~a_(0^*Lls%Ow`UPi5|7dUt1j1G)F$(u5numZr=`WVErc=k(}vN6+gRH zs!t54M5bJkuJUH7A~#%P8m{F!!_~%@2?U9fG-(J*Mc*MXT|!yaJM%N}6&WbkOclhL zFlK3IQ7F0WJx=aC8|$s17V@rv9Bvg+KrVrryWbtVHzhS+RGV}%WmSeyxt5yqxTK5U zTAx;ZLvj<)_XCf&7G_s0Kl+#%P%oBS!*dLvQB|_sG*RycXCKd1{UPb$Lyhv%Qd3fg zk(4ytwA{erf#VekF^AC?ljUK4w+nTmy9S3|-Wq#K)MJCxYPM22>QvBOgy55l;ZBAU z$TYj|YlmJo!qfA!m_JF?oo=Q38{0Jbs887?AH$@Bu+b+WvkuiXE-*#vq|sy=sZzAF(K%sU;Du_x zI}62D;amGBcxCF#d@JnS>WAYat5cV6)h_}bj3$~nSKa7Rt zOa=odXgHL`S7i5iW%T3%muJn#{?--U_cj&vUa!Jios_2^jhnsfCX?yy! z>hUo&vcWC!d(S_8K!yJKaC;Hi<5>C=e-I1hmF>3)eZ*(ZhhpFa?QD_(zUpziCcjT4 z7*~}xpOGyLlq^O*ZDUI)RGqY#KUm|_kc0Ual~`>oxFpPzpJlH7cKqxPU&D}lN#vix zDx1}(=e16RPQE@p7&!z%5|a0ox5py}LMdkuEsIfhc6_|ala7&8qaL)XX|u%hw^ipU4gA{nZuS3K_ja)| zy&6;`Sn0`r`sMj8x2#FQz01wpyL!ySOPGqux>+xrqhOAQ2b}a!ZcH4XeD2*pG#QSQ zd9ajQt&EMSnrXP}RShnYyGC5i%B-oPXFQ*mic06 zh!u(pRsd`OP+R#y7GW`im>mlvr8!E;*q*D}cCYbh_6Z#oS&N17FV%Ta(Tx%XutaL^ zx*X}gmTc!-H|LdxCmjHT8BcaE$*sD@p~;On!aQEDc-jD!eqV!n-?IF8xGQZHe;yRdBFl}tjeN#Q3;WKNWva`6DCc*@&3*v+|C(@wPLhH;6@~C=yk_z0(XqtK2@J;YMn&i!dmr-8v7GU-a#K0G(yZilBmZi9TF;^9DPZq1KIn7euUNP%R0(Y>DmfmEd}lM zqXfn?uINm*Rdw8J2Dma|PwVCf6sm5?I8#6k*R}Xqq%!OIFSz$scs9jjWoi;O5l$ee zE;lmp@dqb241xZ@Cr+7KxMCtz6QgsxU$)8t1Yogn=07z}AS>isfHkC3C`j0U z#l|QS43PffK+S%)BI-cmv0IosX0Gf#YqTXe-@E!r7l4Pt2v} z!o^6lNG;mT#w7*suy^AvJa3}Zhco|nRCk$7_U@0m6bQqTB?fH9uOR9BVI)|)kY z{BdIyJ`w4n3?fx^Y|D!Rbkv+*kKkH|kc9j9BOd}PV91uE6IP0YAzTOefUV>TXBMVc zYe;jGc*n-MSKwsvyEvK_5#@}a!OC<01qOg6w!Io5??<^2Yj92ESRUO148uKR5{V=( zE#0q%bU8y<80zaIFXhWlo{CwVQ1CvSZiD*Zmp>kq2-IImyH9{5Tpl45-8)22RAtUf zYuZ9)>K|O^sW($?gk`Egly+VWo~~G^vR7>p2DW?c2s8IQoo#@>z$WMCDfu5vPvAxw zO1+x2qy1K(ggI#G4N#*J?KLSZ|K!ehv_t`OvT(Gv%m1nc5I0ibb_{u3f4o1W3)Uth97je{+YI-T@<8W z0HXzZpG7}2c61c64Evp_DmS95?s{t2ZUxXny0}rsGu%8Pr4cvR2BeotyPBXmBu+fQ ztQ$N&p(D9m_<9^Tgl}f`$0ZbO2Da_JjG5i|CJ046wrYpQ=4_J68oj0qLgj*yjZv^3 zJC?w%5>YP5CpmCmZ*PrV)X(s=J92GW8v%oQ(w76rJw=Ri15`Zb-w8Ij^rvndaN!)D zh`lxjL=r(jFru}OE>MY`v~k7U#4+my`$saTT9(@@`&=evK5aBTLZl zG3i4+?$f7n_NQMY1A^)|4sjZa&^G3vQG(-bspn;EzI?S~*#_hgk)dFu3WeQGQmP`B z@YSNdJx}~%ixOU4-TY&mE!ykB5?_U*cRS#zK9zC#J#)7LMu?pw?=7MFO_3kd^jR1e zTguE!GEA=)rVeCQ00(|OrrTQphf{2v?Xm4M#9d)6eBf`ydDAn$Ao6a8l1tJu?83Hm zEpYN_7BZd--0ycg&F>stf314F7p>^tSLlHWnPY&i`VfzZ4SV(6*{V#HV?7w}pgwJQ z32@MOexGwAdg$0K^%)>1G4Q_QRw-~}!Mh0%W>6RPQ7it)5-lT z_EY;x^w2;H1%LE)da#hunLuyXP?1u&rip#d8}6f`0l@hcPr5Ll;4aN&9Y1%J411U~ z#~DUgP&Z5>Tch9~qZ8gXrD8}g>atDxj`#j zOU+n6t?ICcqj|8rVTtr7mRDIj?DBvC=7e5ikWeD&Sz zZ=4FMTGk2Wip_vl!#*xW9@^Ep#*=ex3(|8-%GM!H21#M_2Su*1oZ@4*uuk$;!mT97 z9N(AoJYS4~9r%rX|8Nss-|IX|H4UPh@h33&z1QcZ;s*?=(pc-5%*>6o)7BYNL*AUV zORL=ABW$dP^N%JUbpE{Bgz4(ua-ly;m z9XongeV;q$HmQr&;XqW)!dgxnsAmV&6#jbLY*IxE#qZcd+hn+?X!j+NigV}MpJ22b z*4FzdL;8GL`xc5%$LBJ9S5tBZXs@N=O1f5aRU?Wf%AqvUJ>bhNg$xK#5>Pi&wyO)m zck#62H%oHS9eVMBmfe%;kagx(sb$Z2HPX{a@@7fS11VLPqLHcfkyD9^^HV%kM!YiJ7b!S8n&Tk}C0E5wxU& z2Kz>@vUM!=&Oj%zVVxjhl<{e2 zVo{`bDP-8hC%nl@&h}cgkasC8o&vjkqLsyiu?neE5uE)~L#;iD& z)8=+|9w%Rb5)Zl?1+%Z@Gq1_Ut57&G5Sh)I_a>@Ug}l|1bOb@? zj6dX6MFc%eHajfwj1RZ3UPcTouQFXutJ<+{=-A$|Z|EpAxHY8*s^oh<$K{@>vady%UNMNC*K#2qYx${|3*w_ntfM|9|7$`<-w6AH!kZw%S~C%{kYa&zg%~6E#sm zu^ul)!>4sKKO5=ad^?#>3JDr*=2a-XMaPv;J}I3tdf!bw>o_M_8#L@JjoD8KxlffU z*RI^(ui}!0;-h&lCg4jYRpl2VC5wY~jXZ?~Dmj%ch6NlPC4Cw$$Vvxv9(3cogHas5 zd+7GEnAp+7$hWce=kG$a*;#vss%8QVs%C=BTKp;cBtq#Rh@)~?Y#uG3?khQUysLwH zzgaC*2kO>lB(yr&B>uR@n&d6i$;s#8gl62$bTAywV36ak;g&S#g1j6!(rfd(jopZ+ zX2gH@Sd%NCd#{Qp^QLeSUh@hSMNe<4+80#cjqqUZ;LHkI?D~alh;SOXm#o^ZKl9?Q zTEO`6l;I84?~OU?p8;DEbD{VOA@Bvld;k79@ta>h9Aw^=tn$|}Hc9v2iXHv=)Uvqw zyy@k**_iU^SQ}xklA){ef7Xi9;;*}UR%zdLq4}{GjczG%B{XE4e9-!Z zA(yg3*ElYfi<2{Atv;*c;<)rHhXd6g_{n|N_Gy}ynY>Yz(XFT)bwD3f15}Fz0A*VWo)~9 zG_AIHYcYd%7O?532>3k1Avk5U3`Hv`hQ4JbIQ<)s(z?%8zgbr>h6$RD!0`tw|3`0) zy@n?ZL;{OaDc=WlQJcBGs?#_}`& zGcQi7jg(rXm@0)Z_x#YW?un`{>nIS1;KbYm-%U&6iO0T~6p3>vuB%K8d4cs3}M@LQPEP-X2tu^jQAh4MrXkE#X&1kjG;o6X7b~yHC22du6)VI27N8 z*QLNw4G&fAkEM+uAa*h@4{;K?z4OiYr4vyjiP7lfFesup)6&{pehn~NCq1~FpHL*FK5=8 zolgt+`IVDXui(MF7L2AZLVgC~lk!5&a*8cORTQqg)F={HykNz69f06P+5mv_FrIdO zOzPtE+_12sJ5k}rr(CC)qFPEOWsTks!jEuvm6)5Xc5n60RrXxd5(KxbT7xlJ_=fqF z{5)twdCCtR4l_RY%H$;w>#)vLF-v}N5FSNiTG3G*5!lW6i_u>gy_MU}dU->yYyWuu z{aUi;#ti=CcRUU9YWVF_fn^ek+G6#v@ZVCs^G0!DTjoM!{pQjVpoV=+4WBky-qi47ACBX1|xlsV83n-*8y`>o>CmMFVwi@VdJW%(3BmPTj z4b5{)4yUHpo~f{Aw{dr(HDe9%bw6iL?bpyRLLFg0)iHIGIcpcfg<;-XY_Cf3Z3pv0 zLVsnniLP2f*iH^GWgHKjI#@FQWMTxnByk;l_HQjoVJ2v>p!4S=c&qo~etGNxH~yIc z_0JE%|D58&s~X4ATtn728&hpauNq{<2@Eq);&Xfxo|oozL*|TBUtPl?h#Ow!dE;gK zQZN>Xp{deA)1u*+7dUsFI(##%!s<2oVpivlG!>$v6L|2uVF)J8YeM7*x|bS&s~IMj zQ5SucZ>gT%2N{!h94*ye^ON{$1t!@Nk@t;;JWw2r|Go>E3rtj;kOC9kd3HHKk3(u{ZlOjve#z_9h@+In+1~4f}IiHCQz)Y=%@C9hW(R_n!ISS z@@c^o8tqkc3n(jW&l0!S2eeYDI02P9%I&9S)q`L)`ioI3z^7~=&G|Y-5OUi5U_0`$ zE9cNSivgjKPqPx|_f{p?u*Xb6Xb%J;|BAIURfT8osmY!ke!^NVg1mkGFMIJRqt1&s zF@%?Zd{Xfu){N%5W0Yjn)gF-2;tI2#+AzjV1*AkDl86PqYYn(u$Fi0Y%+@}KyG4iI zwt-=ySRw92OU@lCS&;ZX9>OkQx^WsZCS7&MGeZmUgES9H7f9pXO;N-^(nJV~pqx6n!m1Z`i@qNI9CY25#tl#;P&e($D@|#F_r-Ky$5gh+z|pmDv@} zW5V~s*5cd`{*e2QJG%VHT+A+^%-&$Zj&j<}0)3BoN|Ba~`>aSMW~QBEgRu1$>k(eU z?u8xU@|*FVPVqiaTy*&2iAh42dey@sqa0s7k)Jl^>urLafz)YU|Fs6&_RO$XdE(*o zACB=-e#^=oK@P|9@O1Fui4C}PS8O1);{bH`ai9}9^Y>x=!yILvvu(Byay2|h@>gS8 zN{b2$eiz~Ci;?x|&-~JIG;r$2g8oLWSXaT2L(K`VQ@pL$M!Ng4yUE^=3<2&7q~tVG z%var2zR}eH#8e{&C1K4BPQ3nD@7ve%-%W}Gq)Qul=zrb|yJ~&eK_~HKg`J-6w0gwP zlHYK}7A+1B!hH{Ev~Pwb3Q7uf9O6qrkNQ$GUu8-BVYrl&Pec<%-&s%%4U+ZVSW(Ec zM*_>rEgzQT`sx+LNItz9xwc>^9jN0Mib*`F1S1EBt;zM4jV7?_pMNGoNdJKlPIFmd zh8cY`pnaXTC0T@gL)xW#*A}kb5zSzUs>8PySKvXt3Xt!$BPEL0Qr}vUTBy-GoD!gY zXk2Y~JGSNMxKyF-VwLw;ArV$|votKeWLrLh-;3d*W%bo8K9)%tb<_>>EW#*RCn_sx z7FZC^4s&^cH46hXQS!TO*}jj9J(>+{J=>rB{G1hf+mY&=7FC6lH*-r(lx`KtT2{19 zB+Sf7@|5r)xG22JB+JvT)aIv#6V+H9*eP^cUH-WM_tIdUR9Oik$XpeSav}lVL_+!B zOOKCZx=)X~qOSil6_%`%wMpF3OK@85VB#7s;`)$>e z{4y@)S5xmZE#4jz&c4f~{|$*oF?V+eT|@V#YvKr`CJWx%B+Ke@+=sX$oO*A%KZ8V_ z9^}14DmPB4au&^~k(-X2`B+P@NBK`pTNK?4!5CM&>}n5TyKU8U&zBk2i9Le~4m(J3 ze?+?;kGfEOl}lLXoRKqSa{ee`^P!93dwxR$M{}<*A|foxKr%!nq@gxh5FfW?QH@)a2X(Os)O%tSV9W> z4RoR0GE>h~bEuQxWevFBDa`0IXckX?D|;{>9C0liYwrHE+3lzLMvWvUl8|uqjbJ1n z%wpCgn50(s~;Qx~6ftH|I5`HK_{aIj!!V%WuFDRPp$HnU_FnqvN6? zN7aOss5<@#gHvS9vYIJ9WqfL5u9U-q*Y&}foQp#9A$%^&RKmm%PTD4m_riY2^E(S& zF}j?b(9=+5o%(#?0F=$w_hDf^xU7Y$>4TH(PowafqomqDbOfNvDEEH#3P#eXn#o+& zePVK4dW)S~^TIdDh1}Ol;}=I$jhgP{G>uNb@c$HiWMkD9$~TGFZd1B-S;$ht`u1R( zZC0ttaCN}~>$4kewy@5~vvGL$cNIWKv$$CjmEc?}b~Iy{Z7KJ(yG3AAF?RF#1HLIX z)N0}~%KxdsQl7<9V4X(ez>5=Qjl}?;!zy55^l-jE;U?~oYSTBmi;Q;;o46fAc4GJ- z16uTZ%(;FL$@aCG|?8!g`sM&(eoKPArrhWp0Ywo`yeM7mxU* zB3W~%e`@0MpRF#?+WPX}oJ0L%R;Md#fQ|aET{-g$MWqde1F3UP77WA4kHeIGkY#>s z`i)COWhdiZ``+ZsGXM!5C^|{O)#cs$OPo(aXw9reKAb8CM#c%|(kBJV;W83|8Rmu~ z?8Cm=`{1O=c>^Ku^3&CRYTK1U42@Tem3mGoMfx8v0b}2(;4Zgf`zD=@u+(;UjLoqZ ztfE?;4(0nzTk)ff8!9(x>g!WkG3(UzWGPO)pu}7-e~NHN~G_F7mAk-tf4~AGq1S(u8HW6j;mBma_(7jcPmPTe{Bs zxHNz~x+lz{CnQEnO`7^~Ui>xID;GAGvto4OG%tBgde)uTg3`vaY~of2St5qB;ieL~PdwF8@;FT6?f{8z9R78RMLJ(OPZn}Hq1tF{5?Tre*>5?#a zTwlqkQ|brMuezEfX$wwY!KKjl_m{MUgfs!#M~eXe?$}uJYs5j#a#6?P4l=w;+_=2I zA|cg7{|eo=p2Zze0k;5ztj#c%S=&LW!>fluo(F)-_sONrKfAlZNN_S{^nZ zSOIj4mR(hXY;jkb*8DzpdcRSbrNG5Ikzotjxz&EoVvX7!|b)MFnEVUBX7UFyp!yv+I(WuQF5uy1$n;tx!{jB7lLP82kCZ?xYR*niPg4Rryz*w47h%86W4p1iP006N2&KMtQKUdMG@d8USn8}*8FzxGX` zOB)sl;`bbTEXHwxhMo}*<8Ej)&jw9LAAt#D{`0ab|HEO@_N57Qgz^z04=bx7vq;jye9E4zC zc~dV>ym|wXKYTbtNnYytG9pHY2u|=+1^^hhjmk;oksi+D!7*DotmQIY$m@OI#Lt7X z>AO=ekFlnEhARKtbk48E!GBO+A>aZATR)}@VRjZx_p11zi&5WT){u5BFWEBCSh(G; z!^Xtr8C)@Xb?Z$56_x6K{~H2sJ@ZVpRxZOm&8PciH6u)7V-;_s*9_njbh@|36gFZH zth`o;j>$us|K34QrGT+i+wR~HeR7wV&~?5@EbI9G20c3Lz+QGk^ai)f3C>H~fi3QLv6?C7qPZnq7A9v+!Hl#I44dY{?+*k2kQ z)kQY{8VJ5g6GZ$5R}wHY7SCJw;5IG!q{*957xSA2*rB+&<_G3{M50Ysjd zkNQQ!$ugDf_k+>XUZ&8|n9{rBw`WCLRP47HeX{K4Le;Hh%W=nqVuFCddb=4u~Nlg8#4D&NqBAFL7KH}CjDC~qus|2 zG*7DP28{#Nj3VXnV!6r+qkDe8jREGeHwQ*zB87RBPow?+utFxNtp==HZqSjX6NQla zOX0JDc#Rp(nz9)|PCaC39-={B$SMN&>F6>KtG73bIvnX!$ibMPid?2E=iMH|-8*>M?Ss14R@@OftcLzQ*%{lZw_q~K zqWI3Lq6C{Ws@7>U)+ZH3Cf6k-mYuPq!m(O~lxT`8^;cJbx^>T8}#*c}Q74DJW z^xY@YjSO>p{S-@mo;l;?U9tIr6sF%cb8uP-z3bc{9rSlBz#FBy)x`bFJb04fAQA@D z#u9$t1Ur{&!5e#RYudW09+<##di#Tb>7J3-7^@nIOyR^O+5{ht$qWHafxXYR z-q?TRbICtdw|q4FrWv9xIUO7VQ7&4dJ>gwzkwlHiH**)eIzckHoV?R>eIb%hf5Ve^ zuFBXs@=MeFm@GA_Za;^hob=OFSJh z7PqtWt-%yl@=v+i#7pcl^NQwk$^_3eK{x77H_IkbOoLYAJh}Eoy7~RBEYMaw?^#Kv)E1Uz7+c|EZX`N8L&m0 zG~HU}zl**+&eQQ<=P{!|Cj80+3trg|>4;DM%43C15Ews*1G>4X&L`y$4Tx*js=GGX zZzyY&+;F^UmSpV`a3McTQ5-Uya0Z5ecb}>EJ49z)O>Ed?NpH&pz9v7Vtz(qSKkooP z0!3vGr?IW@UYeW_hu+g3+-k1WXPJbN)^Kvs>=ye+IW{}e`VqNmRfyP2!y+~#(#d4W z=UeQ^x2mAIC1h74|BUkg{?Tzoal6i2Yo^2GKgK|V&N?dd&mUV8-a%#h&Fcn5hR}#) zV)+EM3cJ~S#bbP~s^X3wmm3{aVTGr}cZUjxF_}*linmJ4U14gmg35f3r=%{_Arw}M z;^to?O>1Z-Lr$T?C}EP>8P3H}F#5Z?_QBd*hQN1{AR?f<=4?_G&t~3mQ4H}99Pv{F zTqy)q?MJCd`_U{QOD*a8o?uv}T>Bxljtz&RB>uc9##+VwlzVe=FOtg`|3B-U`^TB( zf1&072@hbz1v4_T57aEx^nGoFNh6rQwVK-QqmhNUrQ^qFGB(|@)srqw9pHrTYzG}4 zNH7~e=WmdE?=J+^8^Md%T@cLjK~^!pB}p3mePX)Qmqq|pejfq{g|L~irl6c&rBIzB%tNB$P>L4_v6k1PDi`c|5o`N!EmhT~>G9kO9xCprPVKjh;3gPQ78H zc@|tn1HI5&6>f{&r==VoDAHG}HomKJ#95;2*IDkiNPf8+LPCZmrreyIJqhA5VL!$9 z^L3r%9Zn`X--qn+2a@~0N;JQ=1XhGp2{;YE5c zq^3hO1JOuN3JV)k5(=7T+*jKS#w>D_TGZ|LvoSbyILd3%xo#T_EI)>0rt*kengc#l z^{yrkJiJ~V>a$NCL!}&$27Le8w~Iq) zwS|&S;VjnCqMV#aS;C}%3Zg#-QVrH8YUYM*g2!rhmXMIu z-{iJ6OAm&dd6WbXII;R7u;k`u9XgW6sl?kX9x!)o0feEH!eZkdB9^`-71VdQfIs$| z%l(w$kg$;w*_$&*jU(;XrW!y!qQskhGlh)Z(Z%6gevVw$fH>f2a-E`?gNiUb(8b^w=QSd;_8CNwlf8k?Hx8b+iKe80o8 zU#=KxK)0406@I?BpUaYW>eaw6RWbjv{4K$%Xk)%^`r6uA+#fjdoVY~gb*FE}glE*Eh0=h@0kRwuOPVOVNU^HsR;GSnu@C+=CRW5?zzj=+ArYe2V`Uw zMp@xn!;kl}o8MIza#LKcF!pbNNE@BdbAEP##}mxm{$hZ0?;aS_O~jg2(vMxzkdhW{> zRj$fgV~kJR^ipW-jd2c1t^ADO2gMQ)h&s9*H14Nuz8C5Z0vDi@yacREp+xVpx>dU_<#2I&_ zzmBO5ixKx2FEHBFX2h=cMwcQeVK!HE5%S=1D#-0=QV=ijQydt0ANOMFV}^GNxG_ME z*i7!**ufxBO!!E#i2>dx^HFbEQaP$Q*}8+aw?P6Rb`KWV zv^qPEWF=qReXWJSA+o^pL&}FX0yeV*r_To~Z?tpq1@~2AKt#oX+6qG$-7N}SxkXz_ z-Z1P-;>ue3_Gaxpn{kbymZ)uSxL(!M4nj~xAqt8kLos0Q$yVyWL6REHnzt%67U&`! zpr2>bbxzVM5F*yb-YrK}1#lDMbHESe@GA2k2& z8trSBN*_h6F9w$0QBBGP*`yRj!|%}n6m+`$;KX`dTqWXIiQ%Erc_9zl=1K)dnXaZ; zFjVp2O57&6aQGF z0FN@QKPFc=-A731=ak!_7VZnx4~vk*%numAp(Nh)Oz?AO$wweRHPr2}-;~3(HV?9! zw$Q%oxXrL9(nnO6BghCP9Q6A4?i%O1WfX_TVJ=JSWqt@2etjrFBsDTWaS->$DPGwM7fm(07 z-c`MN@Ile=5a^Y5`}VnUM|aqv#u~>5E&(LgUVhFqN1idMn(qL7JVBVnwqRMbzilsm z?4;>$pO27#4qtUR@)0D4O69}4SshsY^;`{>4=Pq)?Orrk;8L{Ha}!x5b?^}=l@q)a z+(0Bql`Y0n1_xGLn{@4eO_z^B~Q)FcYJp0t5A?<%lPo}j||ky=*- zo+~z-kc;%&X-!1vyVE2CZ%GlKVLnrca_&pZ{w#OGJISEa@Cj01?&eBu$Dte&#@{{A z445>q2Cy{dYu7Q$UO50BSf1=c%Os{^!&-v%A(h>K6i=7&9{Z{=6XfhZ9qkX8~&K>V_+YPT`vVCz4P{Lc)fe;Pye zKef_M58(IR1h@QD>2GWph{H~kb@8P)7wQLj9}Kcn`OUHElD0Yq(OT{xQpKN28TJD- zuEykUAt=j~Nf^S`9eg9Tg_yY2v!G3%9*);Fjy}~83lMb;c_#i-$n6bE#%UCN0 z>0BqKeA&Vkw@lj_#g0$ME)1AQF$60Vt(brHt_*G-7_RmUq*Kt^AoUdpGPXl>U`&@+ zss?C61>Fv$zcdQ61SaoW0~~^0S_TLvwsL8m2GTOGlL^G|UJGyAa_HMZ5MB*$X62;; z#L@}?2$;=0ZD6khB;+{IMw>R#)6Ts+Fp%sy><-smFHEsuB1e9a{N;UHu3-5TGJ5Bi zoxjfiAE1E$u-f-e%me<3^pmbZbyu0?1y=-L$8@beNz}`T(yyAdUEm-iT*FtK*X=0Hj9=bjU)y zXa&I%Ia8a)U=Lu5S52`az}Cr}Rs3e+hZYv%#rKDxEDbU=`v`*-^LEie{0 z(X91C&*A})=)JF>vA|#~t_KAS_@Lz5c{Ru5dv3>1pBDcwW%^;Z)A!h$%S5>aVK@Hh zcapvZw)LtnKx~j<~}b23SE9zzGO{uwyP6 ztzxGLfc-1-ZW)Mm!7*YE{7tm9vhaf`zhsSc;;WM>bypt_@?poOm~cH75bt@(|Gh-F z%LOTv8Xf~IK(}Hf;?^`Jqnq|x2k!c%mrfv4+{}}UDu4v@3IuGryoa*<8>8cBh-YcQF9@0sJ1d;+{~;vW ze@~SE7x=j2_Di4HSMi!1T?yvz=F3|eMSEq}SaN4&a6}MaYFZ-FmD9i)|G+z|dpU9p zSbX716nqHq!tIir_DEjw9|TcvD$4P11`CIha>wq6WOt@6?7lX1Cl|C=SgM#(1hXIk zpYv9~4>84e2Mj1gg|&LsJ!Js(rcB@{WR_&n6c~CW^l$Ry-vvzVB#&UMvd8LoP+P!R z@yS8-g5sfn621LDwLJc}7)l|ENW`AN2#ppn#iACX6|Uq&g_UgKjnMMkf`~1e0IM@n z2J%=UhXYLp1N-giM{KiQ=-&mgyw%HJ2A|_9fGf4+`(-(P#Q-lpRse^Pm8##M1#&om zrH$9M{-y^ghnS8nz@fnPCT${+#w%!nWv*BNQ`Jl((Cn>>eklL%hRdEAvnOlJl5T~K zoW8$D?-xDp|56v+KcSQ(E|lz@I7}>&chI?_yk;p^R9Vx-ibMxdK^A5$WtSnToi`VX z`7R1sb(+X@j$-_+9gb(4WwLaaoH96u4!*f0gH}j;_6-ZK1{_BjS2_hZC}NgJxLHjc zyIaw1QXJIRG@E}yIeP5pr0eva4-%QH?4e$)ywmSDo9g{puY&eN!y2z@u66p&KC`G|LQ|cmodHHJ|mW2>7KGybCDZz$t(-vo?z*pjgIg z8yv;=_gMfJtNl21MdAYYTc^0e8v=|pYa z2srJb-5DGIPZNacYr$W&0Fj#n((}e&Frntdod16iaBQFaXUORfnw5}@S0&7)Sh;Ag zowMU(yvnZnTj|xAe}4KlXq&6;%#lqq6HqAvxnSPeF{b}&Ls$Pbm`vJA^`MSc%EY-< zioc^e!!W2f0T$$&bNDvN7vnzwo`q|NcAjZhHkeC z>uAb#-X9Wih_~R#xK7?=EgM=$kIDFLUK_t{S4Dukf(sl*)NYfw`I5L7#rX;>-s?Ke zV#PDI)AhHA=4VqB!DIzK1OnM+6q}5ZFl&t_2ufnF*pTh|U|y zSf<+WqZ>EoJ$|H%N{@Mi|5px^92GkPeiSD8_Z?%^eDPcCAp>b*&Mn0ul8KO1RXQKJCs;_4{S(q{YEQFYl6oL85nJ{%wNa)C9i8A*^{ zW>pTSfJ0}ah7c52V%bhRg#GdLgTaQ%<(a4H%97w&k8*K4=dU_!dC#-17n$1k76MWw z>0INe3#=cJu2gvU$AvrX{xjt;et8$QwSkS1n4ql60-~X;$5fcl1|r?aPtbA~iOVtk z=KHv_dT`(!5a_gPx0W~tNQng9^uEWxgYD{!wD&c9VtY?POu&6BWFIN9O1$hxAvVG6 z+-c4P9RWT%I(PTNDv*4NbyKJKy|GJ$vo^eL>cuh}PAuOEY*((*8hVe=p%*+BBk!Zw%h+&S$@^k)ps#;m?{-C<9XbX)4-5kc+0}!w2jaFz{t~ggdDW$H-J(FC!7=>j-?0FO7u{DJmG?#p6c`lN zOnSu&;C$`X)vDe4s591BpV>M3MIro!YAUlb_1VCNE4X@`r@+Gq$ilSvwK^^Ye~1=m z;YoOLTT@%R_#A{H{$@345oe3 zQm(nUlJBwuWA%j%Cnulc!EQVNJtuo@YsRrGOx?SqR3SRdz!qk>^W)6mz&H|}={CM< zFlen?y0#PWCVhr*B4rh^N(l*j-)1Z^%INK~snXTX>q8aCo;yXJ8cpS0@N46nxj$iz zJ`By$ApMT(Q!e}2fe8|70org6!<*1F(=?~t87$!}H||Li3<0yg+&Vj@wPc9e9{)*t zNhcj533jB$oKbk1h19S?FgW!{081S;Bz!CR(MX4PR~Sh9GIiy=x_JbvSXRjO>XCxz z4JjkF^Z%C0QN zkKy>P_ONHPIC8rWEQ<|7%`_Q;-+=XlynZ%)-tZ2wQoz z+TO6>h^sv7yVCVE7w0~Oqmz;)(r3t={gT2Y+HyzE5WtdSQANcz7+-kQzMCLKb6NAM z$qf0eIcj&qxYom@$4JN>@2D&!l$#dhBI5q6;}R}A%x)zWqZs%U+~1PWHISoa4FcdO zRBvn`=6N$y@Dw6svDnZneO9;@iA25Wj*S8jR|AovX7UfldStt&2HN>MGLBcJ1!CCe?ysy zK!)wq2=6@rT>+eYeP3}*5*Ou}amf5Om|{jWu)&ZiP2KIjfkccaaHQ5{{KPF5&8LSV z!-NefzrC`K_H(qSgj+)^9JHs%>s;flwrUu$(x^JWT&c;9TmEaD_Pt(|K%0Xf2m6p_ zzRKdaV+n>+tm_?k7b5?L-*!GttfC_|Hpdku=LRx$P%rOGsd_6JTRH3`!Z?=v?TF8b#7p>H%@b`2j6@kc*}8vXZckedrEq@dal^S0cKjLwIvHqh&i- zz&b_((X*8)%TOX!42$0$k`=b;R>Hp4eqF-8hLQagBCql{@lkL=N-_hONd(7dQjIxh}D!rF~o6vc&vg2-PA2aM))6c8?GacN2L zTyCeiDr%x1<}VXBj5j>$MUh_V_38p%zAN-Ctag+=NE_EKM$ZD64@#C=bBmU5x_Bns*?iQNM2+9XS ze-Pra)g@0sQw00~!4irwNH_CTpU>X&MYb&$l_@zzrcBLhBDhETW+;E4gNXY^70EK5 zNr;Bk29!d5JF7QSGz>ce(G0idRc_%fQP_h-byL|xMsQjbW>+viVrZa)w1iTQpcynLAbMcD3H zfX7B5_@meTZ-1GP^|m(VcCMrY^52nE(Y-Bq9T`5X%|DO{9Qa7JIT4x!hs6>5Yx1WEML6%LB@BtHxPB)2GL7=Um^1H{k{f2g}QqkdG<|gIqyGuw%||2sZfQ`_ zt~%Yt3I3=TKb;0eSW|+Px2l%B5xnB1Wt#D4jz*kiX&;sq9sl}!jBZMOzs#<#h2EOX z%nXH(K$+<)0lm-XH2O?ilr~4hh_GhWW~=tMCxVtqEtBh~E2qEsEK_ycZ(WL+%V}~F z%(~;`GqE*0{Q5c;doGC^QG?_hrB- zJBaqM3mcPAWdYdEmmix07NMg!^anZ?9H?7BP7^!Kn+ZtKcQ|eu4W_gCecC4;!^ZC8 zTg5(Fc{as;a#3<1K|BCFS;hVdgV@81y5!Ona3>ynJ1AhHeG`~$0+#c;B{^oX3SYI) zANl$ga)gsjElTLvSC_M=%tZ<`w|i$pJXiC0n-epBEyBb@y*#u2 z!H4?979U-$ia zf#i-9hAt_PS|qLigoT#yX?8?lu5rOzY7I}FnmKp ztZ`=^p5iju44OPeN=`)^Rrd;Br_#|&^?Yl!>_4)FKTVIk0OZDhr;w?{H&^}8j?qop zJ51rs^+r4d@73hW+?A2_T9t%+I>yIT)jatfN~*9%&h75NXT6$iu5t|xLR-xEf$jZX ztMV@!s5WzrU%w{$!+2P?3xcq>=k`<98?X_PPa7U1t#g$kEZaT^qJWW4uN@ki zGhQ*y+1sSD#JpJ<#E?5|6W;XOC)qXl9O)%$pH7Q^BdMJy@${#s+c8MFr)t6X z(cel}yEbyD5wO^n3pVWHVl6O8eI|~@5~=p`QIAyz)<4bXWe1*!j5=^up#|nAa%2WB zfQ2>Qv1EI~15omQTYhto$=E8>Sn{+(k%1qZ>Zc;L?)19K{Au&2kaP%n)L&>&I8S`O zmSFI`U*xI;@CxwX_u&Rt6IR>|Bm^4!^c!&K!(cgm;m>CJiZ29vkYtyRhU>Z{RM*as z1n=pzy&hq2!|f4DFv;%=7!vF(gyfmT_2*PDcl7TPk6X26{kNPFwKnDbx2|q_4h#-9 zwdKclyiAmCZOSJ5D3zw99>;Ca)+VRk3%>hsru3kG8`%G?b%O4sp4K_c58_J;8M!mQ zGUH{-JJaL@zJUZ9J0z-iJyLKcP}puH`(|~u=cnn}mwa!7v^C3N<#(p!Hed+cfYlt9 zD`^)z3BJVDTXugh0`Do3ihe;x#wHz(Sx?_G;vnP7fUi4zG6+a+5I}O-@PHoC2|TpU ziyMr4i)vifGDT)1;#(FlLvj4Wjtlv7HV9;eB7jC>)e>?3`EG$_bF){X1}nW52N zC}M^r<9+i}`e_btjl7S#YB%$W&Cl>18#_hHVvvIT&PjDmhehdKmmZ-9B@x7T6Ns8{ z?;B5)cT}&x@DqyYXKdm8i%E#NmfvP|kvCnLK}zpd7~)gqBG)~c2wL`$=TyQ5>t47( z4~oF1f3fmFGgi8eLUdwIkj!g8uWZb`4&T~g!)~eZWYM+N++Hu{b!-tQxfy5gk4Fp8 zk5AU6kn=~Ajb`-m(AW|VqJPFgo+GV2{e_eq5& zTC}@I-Nxn;?A4I2jZIGeW$}a&-lEOvE1t%^DocV}p+(9HTfX(soFNR~6^4mn*F6+_ z^gzk>@-)yItAGfLnPG^_YSx`~V_f=9x37Pinm%c!`$QrO3oh2hiBcz=FW;^F_{jXm z(f3aEqb`!G{bMud7NyA(yZ}hbJ7`9)h^W!;XHmCqy+7eSlN$c=5560HQW}iiz`c$Q z4uM~lKz#DQavcr$Z>jy6MJMV4Cf?;8udq#uvSagey9}@o&oH)(^enIGuX@#6{6szz zAE>vumOVy%%XzzGz`JPZu{v84TL0lg?%Mr9AmZtb-bz+>>N)zdbxe3!Uy#kjn(%C3 zB_G4DO{Gj@h0e6&1SP!JpA0BEi80eqZM-}R*?4eXyhZrKNcT#Ya8JbRhcwU~{e~Rl zl8W%)TP0IZ2cZ5%OJK=D zczuwLtUQ8O_eXZ$Eg6I(o-GaWOA^BWK>Io;*eSW5j2kSvZ>+?|9(vI(Y)}>Um~#A& zC%m(7cB-^nmOhZt@`1fbg$%H@YHAkY;Sq7oQ|3~NJT6{inSV^kSh&m*zVUs;_=?QN}x!*ys-Sl0AZ$rcMocn`24rxr^Y+il{4*Kk4 zA97!882I-^gVip@{^w#gq7aBb2mg(R%-K!(-UryLsYMCmFV0O!mx>ki^z@!sIb~S% zTDcDm&?FJ*FSS_JI`v7$Ihm|bH+2;E=3skuK(E2|SKr&_3vOzl84ek*XaDt7@Z+|O4tTg%Dd5*ws+v9?T?3c?WHq}e-<1i3SR`zOY zA+u7y2%z@l@WJ~mvI+^^_>Ju{=ic9$m%rK&7IysezomEt*(1M@km~j4zwdqa?!sx6 zH>|dXeK~pjzn@)uvIS%>KXq~K!JsunN?{>dDl7iQ+2dW0PURF9cCVggm2p|qKDo9V zkbd}3>s$V!!--sLiE!O#j_VC_$HGz}wjI`oFP%)`PHtdhH8HpUrZXEPzp!y^)%3~f z)h^yUMpLdakK*OxAH5i}dfag9;jj`7dQ&^)%@?|S`8SD8o-iqGdc(QvsynAm_FDDD zhSs_MBFo(P zej=U(p!VO-{)SyX&x_w>5ROW1o8^!U3)&oB_Ck%%vrAq5+pS*;;_|HAuEZm%7Q`zkaA41ahvytS&!%4{|drn~?8Jp6VVI@jK)8T#EB6^RE)S9kE(?RT;O zDq6&Rn;|%TI|&VvbF=PI-AlL|v5wC(@Lw`)9s?}%ydiU}*cb=! zCQz0O#Tk9&KjX@FC9Dou}n}b zN5t;HD%c7O3+JE720uh?U&%9?TYq;^)~8Zx9<|NSt}%w`V2=YXUSJfwCUbD~0r+Q3 zwyvF&7*K+x0-s!&OAEVY?4ZnfcLNahQlWh0HN>dg_S%=82%Q{qrnYHBpTE!q$-1FW z*qjthm6Pf!P8RBgTTWgw)#VRXHVAFw^hi$yW?TPry{c%tWn=q#dwPkM0ibM~F7kIs zEn6#a?Y^2R11b?sOP6ab(d8&R92{bxZQK%Y1fTL+gc5AECoQ#+llhTDji7Ko1y;w> z#RUoMRT#1TtM;$R9D;p_Sy_bpGv-{|4u^U6Hy|A1Q1g+On^&}t>%^FT?S4o(_0t8( z?!!rzc}Za2?v$UGzT@g#o&T}`^Sf)dk_rsZ?Y2dbNzgv5Vk*MNmB|3<5=!O}2c@Wx zJ+lRMTG5keI@iW!a@yT{@B$vm`bJi90J<1>1c9pG(}y25-LMz&C^rY7l3(c$ z8yg$i0T@nBLyC(VdT|fS$DEODlBa*227wD-3Sbp#F=mVg`w_{rOo@>(9|Ju~MDCO) zI3vj_=JV8ejx=)}%c}Rn)xD04(+^hengEDpCUK01 zNU8=cLy)IM4do(IvQtZyBG+m;^fkmiW!1Vi!Li`d#^@8JC9F>~TcOyND~gs5$2d&E zuCx6eb{A+3BJ#_Fzu72M@RCsbPGMR2#BPODWZO2`^+H46EmR@|$aK`$IBE z(fp<-MncWnwK1W!zLu~2@g0_5U|>~D?Pi+d1VQ>Xqn|erU#Cw-y2rOG^X#^s8-AOb z9fnWT;A0(qSiVMpf}UnFpCXRcI*U9cUlOcpQGHga@W6!KZ{sL&X{%g_8nG9HjUDfI z2wvEn)7V(MAD{y?ed9JA>MW1|I$=Gd@xw=fK6*-Odi83g#K|#>chgl%S4;fHGaAk9 zn6e29F?Jf;TMrh#IbO`j@Lr<(Ch5ubHJr0vVm zUeQ~?R1)4+sG~&j;uQJPV(F9-(y&US-)T@*W!4EQuzlQs!SKGEr^Y1DQ_ZjY)<#Du z2dq*g$C^ub%T7o3{qAnkx-F-$G&Q5!(Co?CQfvCwEj+evHQw%hdJrtA=}NSBO^@Vm zv``gbmI%fKmnuUi5i>Zz>e_4Oe&FQO==RcO+1G)Vn}XDWLFRUR@$l5SH*6;ji0=X| z;;Kl!Z?+!oPpn%De9F*{RWG>Yy0X0eGtRxeO&m6M%zW)?vONj(tFA{+cs#-4 zyg`_5v|JTDr^j`#4hlzfD4{?;PW6^}A(smtwlch~3o1rWx_P8eG%~+Lmg14AX0%FT zd{xMuuc^OD7PweL58HeRl(-~2j43P8cW5x{_LMo;hoB2&PrxeNctw@R?s|XJ<6FMo z5I;Vpx^&eu@0!6xK zhBgAhc>gICi~pz^a{taz4^&;#Zc?j*yV44&rPnsFBJ~*Yd#!Yi-xlh?OJvzBlDzAF zB%rv&sWYXDbW@2FWMXdKeW$ziNC=)_>VyUcR#J90ek8GTZI>25-#h%p|Fh!c1ZIh& zC0U(4{i+iGS%>xN5r(IG*Zj=YAK6`9Ak8e2wd|kC(<-4|mdMZV-a86{R6>n(r<7k` zz<)*+pbI=C6$9lKuIwcI=q=LB&Eq=n8g`L(N3{xD7b5!Rf|S4)7RemHB}VMedu1-R zSb|C8iJ?DwpR$6|@@I2fcjo325+tgzVNFa5RG6-Nv`uD2JH~}J>H)C1~x%M|L`GtHkkVhYc-4mh| z%*LZCl2aR|tAA{&C7xXk+FKvEQ|G@RB^S3YyRkjy*T11-wZABH8#Odu9OD1vcDNWy zQgmVAKEH)2#5E!XE?!Q3CZU7%FXogL`s@<&%Th}AXoxPhGEiJql?yPLa%1Uq0RdB7 z>@v2O1m-8wGzy01#^P6?rq;pYhzdu!>I+iY&1E7m<-kMi#Ptv!zVQe=Udk|3A3#_X z#=fYyp@4v>VP8=`En+B_jd{xYKyc-mS2B1f<$4MS==y`L5Z)}g+Mm--CU0or&$~22 z5oD_v%3L`+zhbDp)}9q-{-FP#+^WwH4#bdjR5w3ovW}en##>4+g5W}*iOC&Rq4t`+U_pOv7rD2X#>?0QX$Cn8o?_e;eDzA- z!&pe^oT}8`0R|@JZ-wlASBHJlxb1hNI{OWZP4<%JnDnhC=mH>G3IYZv;_N-1CK~prYCR>y~!xV9OY?sGFlOAKZw9i z=dlu_xul})FZcQH{ZKaO?y)v}Ts(2@lux=pq$NPKyA=I{#I0P)d;aljP0cVLh2!_c z!VW(`t)gcM_jN^oE{E!hhW*ry19Gbn2%icC3_@W?h4miazpOSS%J&!+oM|}p%_=%7 zGctrVb?cg=7sLq9>D9zJ#|9scuJ1?4WoF*){N4{rx)gF)B><;y@Gy?_LpO!F;hVSV z%ouL9iO-}G8RYo(L5V}6^JViCcOq5&PD*1KOQ$UKJRSoXjHBF5bR~4I-u+N0n^XU9 z{$Khx|9^C!!Dy$fKJd0}V4TSl?JpWYRx>CP^X2whK(=jxuIA{uoR&jW<28m`K0t8q|{+}raDv$ zVPWhs7BXqJl?7?r3d*|NMcU;vc3!e1ra>td?XyjEjQ?tvfuqTX3t?d#BXA+{KXD(L zSP_f?kqMy9(0Xa4L#*RPMhsGet8Dev(ugijY=IddNa^B^JzubR&KoVeFoLXmMpda@ zi-|6?FyiN$tzZ#k|Ekjtl#O9;6+r^1>c2|)7o3Ybv=GHlZ8<)Ww{1$V1byOAc52v3jK_T+mS=nfJN3O&of ztOqpJ)CkH4H}Py`UPf!`%Jj$twt2A3C}Pvn*vf`kG{&Nb{LTFkEF_tW9cVFNDtCW2 z+tIooL^fRLsK0{$WC;fSrkZd65`LPL!I8Il$k^$aeDCl6{kfA1%g?bUCOvu39XKYN zSH5U28KXU1I3K}!f4gv%Y)~En)O;Vmc!C0v!jj4em~B0uuzUwpxRgf^$&3(Cpvp?p zhohwz;vHlbtov`jZAcp&0z0ml823jV(;r)fk22)#XUq$IW4k|gFX!!*PHoPd#bsQH zuoBS6r?Js?WZGViHUIwJFOotvs|WLdf*8QN8JeHin#F+Uz14gK-=`vj#f%=2k~-w+ zS|E<7;UtHL@QWm)ShRxx*+I>0&|6=GE2c2RDGHz~MB;}r9B|N-AMzr)Cmvv`-L$ke z#>fFZI^F>Rh|VJyhLI6S#e1FFH@$ln3<@K$8T~29yP!mj&Nx$8RfPO{Z84~jsjjpP4Az=nOam?eB4fCy7+cXy->j(}}yCH!&v-i;6E-6-p?w73Ns_ljL- zU9H}Jobd!cUf$!K|GCk2!mX40<$JA70zsqK{8ZPCaNjwbvJWB$vC1qU+9oAGe&AS@ z@6-O}1?WIoIv`4Tk^F0Fk)=~j!*-M!t^Dz=U#|rV7_?2YZf#k=v?7m+!H8R>i zPN^YchV!*r@Aa4Yy}qS?v44E#$x#FDV-6U?F^4`|jzZ5@rYB!%P1;?n43IwYF`W~X z|6BVmBU=a$L@%d33ef6qzQi5?#DH^Rua2hgZIT>g@$ u;?w{k>gG$miodl&K&XWL|K+U(CRm%y3AOt|TL(6UL8j*~8I>D2Kl~StfutS) From f5f9ada39c9af10198317557f472b9cc52a2503f Mon Sep 17 00:00:00 2001 From: ShizCalev Date: Wed, 20 Sep 2017 10:05:03 -0400 Subject: [PATCH 22/80] Makes magillitis affect all Hominidae. (#30841) --- code/modules/reagents/chemistry/reagents/other_reagents.dm | 4 ++-- code/modules/uplink/uplink_item.dm | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index a370ce2de9..6f0f0c4ec5 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1576,13 +1576,13 @@ /datum/reagent/magillitis name = "Magillitis" id = "magillitis" - description = "An experimental serum which causes rapid muscular growth in basic primates. Side-affects may include hypertrichosis, violent outbursts, and an unending affinity for bananas." + description = "An experimental serum which causes rapid muscular growth in Hominidae. Side-affects may include hypertrichosis, violent outbursts, and an unending affinity for bananas." reagent_state = LIQUID color = "#00f041" /datum/reagent/magillitis/on_mob_life(mob/living/carbon/M) ..() - if(ismonkey(M) && current_cycle >= 10) + if((ismonkey(M) || ishuman(M)) && current_cycle >= 10) return M.gorillize() /datum/reagent/growthserum diff --git a/code/modules/uplink/uplink_item.dm b/code/modules/uplink/uplink_item.dm index 1f57ac93ce..5fdf216b2a 100644 --- a/code/modules/uplink/uplink_item.dm +++ b/code/modules/uplink/uplink_item.dm @@ -1313,7 +1313,7 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. /datum/uplink_item/role_restricted/magillitis_serum name = "Magillitis Serum Autoinjector" - desc = "A single-use autoinjector which contains an experimental serum that causes rapid muscular growth in basic primates." + desc = "A single-use autoinjector which contains an experimental serum that causes rapid muscular growth in Hominidae. Side-affects may include hypertrichosis, violent outbursts, and an unending affinity for bananas." item = /obj/item/reagent_containers/hypospray/magillitis cost = 15 restricted_roles = list("Geneticist", "Chief Medical Officer") From e9534fb1565be38527025a2618631c673f511288 Mon Sep 17 00:00:00 2001 From: Robustin Date: Wed, 20 Sep 2017 11:58:16 -0400 Subject: [PATCH 24/80] Fix: No more beating sounds from dead hearts (#30871) * Automatic changelog generation for PR #30056 [ci skip] * Delete AutoChangeLog-pr-30056.yml * Removes beating from nonbeating hearts * single check --- code/modules/surgery/organs/heart.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm index f8388a5dab..d1699cb257 100644 --- a/code/modules/surgery/organs/heart.dm +++ b/code/modules/surgery/organs/heart.dm @@ -50,11 +50,11 @@ return S /obj/item/organ/heart/on_life() - if(owner.client) + if(owner.client && beating) var/sound/slowbeat = sound('sound/health/slowbeat.ogg', repeat = TRUE) - var/sound/fastbeat = sound('sound/health/fastbeat.ogg', repeat = TRUE) var/mob/living/carbon/H = owner + if(H.health <= HEALTH_THRESHOLD_CRIT && beat != BEAT_SLOW) beat = BEAT_SLOW H.playsound_local(get_turf(H), slowbeat,40,0, channel = CHANNEL_HEARTBEAT) From 860fe663b55cfcaf8b5e1bbcf997623b476d5ef8 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 20 Sep 2017 22:20:44 -0400 Subject: [PATCH 26/80] axes runtime's unstoppable horniness --- code/datums/mind.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index e824cc9914..5d45855038 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -121,8 +121,9 @@ new_character.key = key //now transfer the key to link the client to our new body if(isliving(new_character)) //New humans and such are by default enabled arousal. Let's always use the new mind's prefs. var/mob/living/L = new_character - L.canbearoused = L.client.prefs.arousable //Technically this should make taking over a character mean the body gain the new minds setting... - L.update_arousal_hud() //Removes the old icon + if(L.client && L.prefs) + L.canbearoused = L.client.prefs.arousable //Technically this should make taking over a character mean the body gain the new minds setting... + L.update_arousal_hud() //Removes the old icon /datum/mind/proc/store_memory(new_text) memory += "[new_text]
" From 0d653c9f44fe25ad3daf6d52f1beea64d49ca636 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Wed, 20 Sep 2017 22:39:58 -0400 Subject: [PATCH 27/80] im unrobust --- code/datums/mind.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 5d45855038..765b1f18aa 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -121,7 +121,7 @@ new_character.key = key //now transfer the key to link the client to our new body if(isliving(new_character)) //New humans and such are by default enabled arousal. Let's always use the new mind's prefs. var/mob/living/L = new_character - if(L.client && L.prefs) + if(L.client && L.client.prefs) L.canbearoused = L.client.prefs.arousable //Technically this should make taking over a character mean the body gain the new minds setting... L.update_arousal_hud() //Removes the old icon From 5b38d23bfddb2c05ca2d44cc9d3d2959b2758808 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Thu, 21 Sep 2017 02:28:37 -0500 Subject: [PATCH 28/80] oops --- code/citadel/custom_loadout/custom_items.dm | 3 ++- icons/obj/clothing/masks.dmi | Bin 32494 -> 32220 bytes 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/code/citadel/custom_loadout/custom_items.dm b/code/citadel/custom_loadout/custom_items.dm index 0b4fa8788b..dcc275c03b 100644 --- a/code/citadel/custom_loadout/custom_items.dm +++ b/code/citadel/custom_loadout/custom_items.dm @@ -73,7 +73,8 @@ /*Zigfie*/ -/obj/item/clothing/mask/luchador/Zigfie +/obj/item/clothing/mask/luchador/zigfie name = "Alboroto Rosa mask" icon = 'icons/mob/mask.dmi' icon_state = "lucharzigfie" + item_state = "lucharzigfie" diff --git a/icons/obj/clothing/masks.dmi b/icons/obj/clothing/masks.dmi index 752a0a00ece4e203dbeb2c13bc3469d2c4aff936..dfb51a9caa27fdd31b9e039f58bccbe8692339a7 100644 GIT binary patch literal 32220 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 W$J+M1qF~o{NJC9awMf|_^nU<(8(r}L literal 32494 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 From 9788c425be159d45858c1ea8a0e686b9a3ee6834 Mon Sep 17 00:00:00 2001 From: oranges Date: Thu, 21 Sep 2017 23:27:40 +1200 Subject: [PATCH 29/80] Merge pull request #30891 from vuonojenmustaturska/adminhref Fixes banning panel href errors, adds href helper functions --- code/modules/admin/DB_ban/functions.dm | 2 ++ code/modules/admin/holder2.dm | 10 ++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/code/modules/admin/DB_ban/functions.dm b/code/modules/admin/DB_ban/functions.dm index c6f44fd1da..086df300d3 100644 --- a/code/modules/admin/DB_ban/functions.dm +++ b/code/modules/admin/DB_ban/functions.dm @@ -354,6 +354,7 @@ output += "
Add custom ban: (ONLY use this if you can't ban through any other method)" output += "" + output += HrefTokenFormField() output += "" output += "
Ban type:" + output += HrefTokenFormField() output += "Ckey: " output += "Admin ckey: " output += "" diff --git a/code/modules/admin/holder2.dm b/code/modules/admin/holder2.dm index 153fb2d8c2..238512c8b7 100644 --- a/code/modules/admin/holder2.dm +++ b/code/modules/admin/holder2.dm @@ -40,7 +40,7 @@ GLOBAL_PROTECT(href_token) for(var/I in 1 to 32) . += "[rand(10)]" -/proc/HrefToken(forceGlobal = FALSE) +/proc/RawHrefToken(forceGlobal = FALSE) var/tok = GLOB.href_token if(!forceGlobal && usr) var/client/C = usr.client @@ -49,7 +49,13 @@ GLOBAL_PROTECT(href_token) var/datum/admins/holder = C.holder if(holder) tok = holder.href_token - return "admin_token=[tok]" + return tok + +/proc/HrefToken(forceGlobal = FALSE) + return "admin_token=[RawHrefToken(forceGlobal)]" + +/proc/HrefTokenFormField(forceGlobal = FALSE) + return "" /datum/admins/proc/associate(client/C) if(IsAdminAdvancedProcCall()) From aec48daa0a367ab616ddfd2c5828cde247dfc60d Mon Sep 17 00:00:00 2001 From: Poojawa Date: Thu, 21 Sep 2017 06:29:08 -0500 Subject: [PATCH 31/80] Ashdrake noms (#2868) * Initial commit * probably a better way to check this * It compiled boys. Let's see if it works. * IT WAS ALL NULLS, BOYS * Hooray, it's not broken anymore boys! * Well it works, but we need transfer IDs to work locating them post-initialize would help, probably. Then assigning their links soon after. * Bellies linked, autotransfer, LoseTarget * half-thought sanity check needs to go away * A few last minute tweaks. --- code/__DEFINES/voreconstants.dm | 1 + .../living/simple_animal/hostile/hostile.dm | 3 + .../simple_animal/hostile/megafauna/dragon.dm | 1 + .../hostile/megafauna/dragon_vore.dm | 50 +++++++++++ .../hostile/megafauna/megafauna.dm | 12 ++- .../living/simple_animal/simple_animal_vr.dm | 36 +++++++- code/modules/vore/eating/belly_vr.dm | 85 ++++++++++++------- code/modules/vore/eating/bellymodes_vr.dm | 50 +++++++++++ code/modules/vore/eating/living_vr.dm | 37 ++++++++ code/modules/vore/eating/vorepanel_vr.dm | 2 +- tgstation.dme | 1 + 11 files changed, 239 insertions(+), 39 deletions(-) create mode 100644 code/modules/mob/living/simple_animal/hostile/megafauna/dragon_vore.dm diff --git a/code/__DEFINES/voreconstants.dm b/code/__DEFINES/voreconstants.dm index ea4c26d79e..edcf4f7fd2 100644 --- a/code/__DEFINES/voreconstants.dm +++ b/code/__DEFINES/voreconstants.dm @@ -3,6 +3,7 @@ #define DM_DIGEST "Digest" #define DM_HEAL "Heal" #define DM_NOISY "Noisy" +#define DM_DRAGON "Dragon" #define VORE_STRUGGLE_EMOTE_CHANCE 40 diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index 866f9c995a..4b5789f877 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -228,6 +228,9 @@ if(!target || !CanAttack(target)) LoseTarget() return 0 + if(isturf(target.loc)) + LoseTarget() + return 0 if(target in possible_targets) if(target.z != z) LoseTarget() diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm index c8272ca65e..d1ddfa9a00 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm @@ -60,6 +60,7 @@ Difficulty: Medium score_type = DRAKE_SCORE deathmessage = "collapses into a pile of bones, its flesh sloughing away." death_sound = 'sound/magic/demon_dies.ogg' + no_vore = FALSE /mob/living/simple_animal/hostile/megafauna/dragon/Initialize() . = ..() diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon_vore.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon_vore.dm new file mode 100644 index 0000000000..898a2ad734 --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon_vore.dm @@ -0,0 +1,50 @@ +/mob/living/simple_animal/hostile/megafauna/dragon + vore_active = TRUE + +/mob/living/simple_animal/hostile/megafauna/dragon/Initialize() + // Create and register 'stomachs' + var/datum/belly/megafauna/dragon/maw/maw = new(src) + var/datum/belly/megafauna/dragon/gullet/gullet = new(src) + var/datum/belly/megafauna/dragon/gut/gut = new(src) + for(var/datum/belly/X in list(maw, gullet, gut)) + vore_organs[X.name] = X + // Connect 'stomachs' together + maw.transferlocation = gullet + gullet.transferlocation = gut + vore_selected = maw.name // NPC eats into maw + return ..() + +/datum/belly/megafauna/dragon + human_prey_swallow_time = 50 // maybe enough to switch targets if distracted + nonhuman_prey_swallow_time = 50 + +/datum/belly/megafauna/dragon/maw + name = "maw" + inside_flavor = "The maw of the dreaded Ash drake closes around you, engulfing you into a swelteringly hot, disgusting enviroment. The acidic saliva tingles over your form while that tongue pushes you further back...towards the dark gullet beyond." + vore_verb = "scoop" + vore_sound = 'sound/vore/pred/taurswallow.ogg' + swallow_time = 20 + escapechance = 25 + // From above, will transfer into gullet + transferchance = 25 + autotransferchance = 66 + autotransferwait = 200 + +/datum/belly/megafauna/dragon/gullet + name = "gullet" + inside_flavor = "A ripple of muscle and arching of the tongue pushes you down like any other food. No choice in the matter, you're simply consumed. The dark ambiance of the outside world is replaced with working, wet flesh. Your only light being what you brought with you." + swallow_time = 60 // costs extra time to eat directly to here + escapechance = 5 + // From above, will transfer into gut + transferchance = 25 + autotransferchance = 50 + autotransferwait = 200 + +/datum/belly/megafauna/dragon/gut + name = "stomach" + vore_capacity = 5 //I doubt this many people will actually last in the gut, but... + inside_flavor = "With a rush of burning ichor greeting you, you're introduced to the Drake's stomach. Wrinkled walls greedily grind against you, acidic slimes working into your body as you become fuel and nutriton for a superior predator. All that's left is your body's willingness to resist your destiny." + digest_mode = DM_DRAGON + digest_burn = 5 + swallow_time = 100 // costs extra time to eat directly to here + escapechance = 0 \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm index dfbdace1f2..5f45d47494 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm @@ -89,11 +89,15 @@ . = ..() if(. && isliving(target)) var/mob/living/L = target - if(L.stat != DEAD) - if(!client && ranged && ranged_cooldown <= world.time) - OpenFire() + if(L.stat >= SOFT_CRIT) + if(vore_active == TRUE && L.devourable == TRUE) + dragon_feeding(src,L) + else if(L.stat == DEAD) + devour(L) else - devour(L) + if(L.stat != DEAD) + if(!client && ranged && ranged_cooldown <= world.time) + OpenFire() /mob/living/simple_animal/hostile/megafauna/proc/devour(mob/living/L) if(!L) diff --git a/code/modules/mob/living/simple_animal/simple_animal_vr.dm b/code/modules/mob/living/simple_animal/simple_animal_vr.dm index 1ba77aa67f..2eca841c17 100644 --- a/code/modules/mob/living/simple_animal/simple_animal_vr.dm +++ b/code/modules/mob/living/simple_animal/simple_animal_vr.dm @@ -4,15 +4,15 @@ devourable = FALSE //insurance because who knows. var/vore_active = FALSE // If vore behavior is enabled for this mob - var/vore_capacity = 1 // The capacity (in people) this person can hold var/vore_default_mode = DM_DIGEST // Default bellymode (DM_DIGEST, DM_HOLD, DM_ABSORB) var/vore_digest_chance = 25 // Chance to switch to digest mode if resisted - var/vore_absorb_chance = 0 // Chance to switch to absorb mode if resisted var/vore_escape_chance = 25 // Chance of resisting out of mob var/vore_stomach_name // The name for the first belly if not "stomach" var/vore_stomach_flavor // The flavortext for the first belly if not the default + var/vore_fullness = 0 // How "full" the belly is (controls icons) + // Release belly contents beforey being gc'd! /mob/living/simple_animal/Destroy() @@ -22,6 +22,37 @@ prey_excludes.Cut() . = ..() + +// Update fullness based on size & quantity of belly contents +/mob/living/simple_animal/proc/update_fullness(var/atom/movable/M) + var/new_fullness = 0 + for(var/I in vore_organs) + var/datum/belly/B = vore_organs[I] + if (!(M in B.internal_contents)) + return FALSE // Nothing's inside + new_fullness += M + + vore_fullness = new_fullness + + +/mob/living/simple_animal/proc/swallow_check() + for(var/I in vore_organs) + var/datum/belly/B = vore_organs[I] + if(vore_active) + update_fullness() + if(!vore_fullness) + // Nothing + return + else + addtimer(CALLBACK(src, .proc/swallow_mob), B.swallow_time) + +/mob/living/simple_animal/proc/swallow_mob() + for(var/I in vore_organs) + var/datum/belly/B = vore_organs[I] + for(var/mob/living/M in B.internal_contents) + B.transfer_contents(M, B.transferlocation) + + /mob/living/simple_animal/death() for(var/I in vore_organs) var/datum/belly/B = vore_organs[I] @@ -69,4 +100,3 @@ "The stomach glorps and gurgles as it tries to work you into slop.") src.vore_organs[B.name] = B src.vore_selected = B.name - diff --git a/code/modules/vore/eating/belly_vr.dm b/code/modules/vore/eating/belly_vr.dm index 1a181efa58..4262d9fecd 100644 --- a/code/modules/vore/eating/belly_vr.dm +++ b/code/modules/vore/eating/belly_vr.dm @@ -15,7 +15,7 @@ var/vore_verb = "ingest" // Verb for eating with this in messages var/human_prey_swallow_time = 10 SECONDS // Time in deciseconds to swallow /mob/living/carbon/human var/nonhuman_prey_swallow_time = 5 SECONDS // Time in deciseconds to swallow anything else - var/emoteTime = 300 // How long between stomach emotes at prey + var/emoteTime = 30 SECONDS // How long between stomach emotes at prey var/digest_brute = 0 // Brute damage per tick in digestion mode var/digest_burn = 1 // Burn damage per tick in digestion mode var/digest_tickrate = 9 // Modulus this of air controller tick number to iterate gurgles on @@ -25,15 +25,21 @@ var/digestchance = 0 // % Chance of stomach beginning to digest if prey struggles // var/silenced = FALSE // Will the heartbeat/fleshy internal loop play? var/escapechance = 0 // % Chance of prey beginning to escape if prey struggles. - var/transferchance = 0 // % Chance of prey being - var/can_taste = FALSE // If this belly prints the flavor of prey when it eats someone. + var/datum/belly/transferlocation = null // Location that the prey is released if they struggle and get dropped off. - var/tmp/digest_mode = DM_HOLD // Whether or not to digest. Default to not digest. + var/transferchance = 0 // % Chance of prey being transferred to transfer location when resisting + var/autotransferchance = 0 // % Chance of prey being autotransferred to transfer location + var/autotransferwait = 10 // Time between trying to transfer. + var/can_taste = FALSE // If this belly prints the flavor of prey when it eats someone. + + var/tmp/digest_mode = DM_HOLD // Whether or not to digest. Default to not digest. var/tmp/list/digest_modes = list(DM_HOLD,DM_DIGEST,DM_HEAL,DM_NOISY) // Possible digest modes - var/tmp/mob/living/owner // The mob whose belly this is. - var/tmp/list/internal_contents = list() // People/Things you've eaten into this belly! - var/tmp/is_full // Flag for if digested remeans are present. (for disposal messages) - var/tmp/emotePend = FALSE // If there's already a spawned thing counting for the next emote + var/tmp/mob/living/owner // The mob whose belly this is. + var/tmp/list/internal_contents = list() // People/Things you've eaten into this belly! + var/tmp/is_full // Flag for if digested remeans are present. (for disposal messages) + var/tmp/emotePend = FALSE // If there's already a spawned thing counting for the next emote + var/swallow_time = 10 SECONDS // for mob transfering automation + var/vore_capacity = 1 // The capacity (in people) this person can hold // Don't forget to watch your commas at the end of each line if you change these. var/list/struggle_messages_outside = list( @@ -153,8 +159,41 @@ // if(B.silenced == FALSE) //this needs more testing later prey << sound('sound/vore/prey/loop.ogg', repeat = 1, wait = 0, volume = 35, channel = CHANNEL_PREYLOOP) + // Handle prey messages if(inside_flavor) to_chat(prey, "[src.inside_flavor]") + if(isliving(prey)) + var/mob/living/M = prey + if(can_taste && M.get_taste_message(0)) + to_chat(owner, "[M] tastes of [M.get_taste_message(0)].") + + // Setup the autotransfer checks if needed + if(transferlocation && autotransferchance > 0) + addtimer(CALLBACK(src, /datum/belly/.proc/check_autotransfer, prey), autotransferwait) + +/datum/belly/proc/check_autotransfer(var/mob/prey) + // Some sanity checks + if(transferlocation && (autotransferchance > 0) && (prey in internal_contents)) + if(prob(autotransferchance)) + // Double check transferlocation isn't insane + if(verify_transferlocation()) + transfer_contents(prey, transferlocation) + else + // Didn't transfer, so wait before retrying + addtimer(CALLBACK(src, /datum/belly/.proc/check_autotransfer, prey), autotransferwait) + +/datum/belly/proc/verify_transferlocation() + for(var/I in owner.vore_organs) + var/datum/belly/B = owner.vore_organs[I] + if(B == transferlocation) + return TRUE + + for(var/I in owner.vore_organs) + var/datum/belly/B = owner.vore_organs[I] + if(B.name == transferlocation.name) + transferlocation = B + return TRUE + return FALSE // Get the line that should show up in Examine message if the owner of this belly // is examined. By making this a proc, we not only take advantage of polymorphism, @@ -323,23 +362,9 @@ return else if(prob(transferchance) && istype(transferlocation)) //Next, let's have it see if they end up getting into an even bigger mess then when they started. - var/location_found = FALSE - var/name_found = FALSE - for(var/I in owner.vore_organs) - var/datum/belly/B = owner.vore_organs[I] - if(B == transferlocation) - location_found = TRUE - break + var/location_ok = verify_transferlocation() - if(!location_found) - for(var/I in owner.vore_organs) - var/datum/belly/B = owner.vore_organs[I] - if(B.name == transferlocation.name) - name_found = TRUE - transferlocation = B - break - - if(!location_found && !name_found) + if(!location_ok) to_chat(owner, "Something went wrong with your belly transfer settings.") transferlocation = null return @@ -358,18 +383,14 @@ to_chat(R, "But make no progress in escaping [owner]'s [name].") to_chat(owner, "But appears to be unable to make any progress in escaping your [name].") return + //Transfers contents from one belly to another /datum/belly/proc/transfer_contents(var/atom/movable/content, var/datum/belly/target, silent = 0) if(!(content in internal_contents)) return internal_contents.Remove(content) - target.internal_contents.Add(content) - if(isliving(content)) - var/mob/living/M = content - if(target.inside_flavor) - to_chat(M, "[target.inside_flavor]") - if(target.can_taste && M.get_taste_message(0)) - to_chat(owner, "[M] tastes of [M.get_taste_message(0)].") + // Re-use nom_mob + target.nom_mob(content, target.owner) if(!silent) for(var/mob/hearer in range(1,owner)) hearer << sound(target.vore_sound,volume=80) @@ -398,6 +419,8 @@ dupe.escapechance = escapechance dupe.transferchance = transferchance dupe.transferlocation = transferlocation + dupe.autotransferchance = autotransferchance + dupe.autotransferwait = autotransferwait //// Object-holding variables //struggle_messages_outside - strings diff --git a/code/modules/vore/eating/bellymodes_vr.dm b/code/modules/vore/eating/bellymodes_vr.dm index 901c1ca56f..ba5fa1e295 100644 --- a/code/modules/vore/eating/bellymodes_vr.dm +++ b/code/modules/vore/eating/bellymodes_vr.dm @@ -91,3 +91,53 @@ playsound(get_turf(owner),"digest_pred",35,0,-6,0,channel=CHANNEL_PRED) M.stop_sound_channel(CHANNEL_PRED) M.playsound_local(get_turf(M), null, 45, S = prey_gurgle) + + +//////////////////////////DM_DRAGON ///////////////////////////////////// +//because dragons need snowflake guts + if(digest_mode == DM_DRAGON) + for (var/mob/living/M in internal_contents) + if(prob(25)) + M.stop_sound_channel(CHANNEL_PRED) + playsound(get_turf(owner),"digest_pred",50,0,-6,0,channel=CHANNEL_PRED) + M.stop_sound_channel(CHANNEL_PRED) + M.playsound_local(get_turf(M), null, 45, S = prey_gurgle) + + //No digestion protection for megafauna. + + //Person just died in guts! + if(M.stat == DEAD) + var/digest_alert_owner = pick(digest_messages_owner) + var/digest_alert_prey = pick(digest_messages_prey) + + //Replace placeholder vars + digest_alert_owner = replacetext(digest_alert_owner,"%pred",owner) + digest_alert_owner = replacetext(digest_alert_owner,"%prey",M) + digest_alert_owner = replacetext(digest_alert_owner,"%belly",lowertext(name)) + + digest_alert_prey = replacetext(digest_alert_prey,"%pred",owner) + digest_alert_prey = replacetext(digest_alert_prey,"%prey",M) + digest_alert_prey = replacetext(digest_alert_prey,"%belly",lowertext(name)) + + //Send messages + to_chat(owner, "[digest_alert_owner]") + to_chat(M, "[digest_alert_prey]") + M.visible_message("You watch as [owner]'s guts loudly rumble as it finishes off a meal.") + + M.stop_sound_channel(CHANNEL_PRED) + playsound(get_turf(owner),"death_pred",45,0,-6,0,channel=CHANNEL_PRED) + M.stop_sound_channel(CHANNEL_PRED) + M.playsound_local(get_turf(M), null, 45, S = prey_digest) + M.spill_organs(FALSE,TRUE,TRUE) + M << sound(null, repeat = 0, wait = 0, volume = 80, channel = CHANNEL_PREYLOOP) + digestion_death(M) + owner.update_icons() + continue + + + // Deal digestion damage (and feed the pred) + if(!(M.status_flags & GODMODE)) + M.adjustFireLoss(digest_burn) + M.adjustToxLoss(4) // something something plasma based acids + M.adjustCloneLoss(3) // eventually this'll kill you if you're healing everything else, you nerds. + return \ No newline at end of file diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index 60206a43f1..d50cdebf45 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -121,6 +121,42 @@ var/belly = input("Choose Belly") in pred.vore_organs return perform_the_nom(user, prey, pred, belly) +//Dragon noms need to be faster +/mob/living/proc/dragon_feeding(var/mob/living/user, var/mob/living/prey) + var/belly = user.vore_selected + return perform_dragon(user, prey, user, belly) + +/mob/living/proc/perform_dragon(var/mob/living/user, var/mob/living/prey, var/mob/living/pred, var/belly, swallow_time = 20) + //Sanity + if(!user || !prey || !pred || !belly || !(belly in pred.vore_organs)) + return + + // The belly selected at the time of noms + var/datum/belly/belly_target = pred.vore_organs[belly] + var/attempt_msg = "ERROR: Vore message couldn't be created. Notify a dev. (at)" + var/success_msg = "ERROR: Vore message couldn't be created. Notify a dev. (sc)" + + // Prepare messages + if(user == pred) //Feeding someone to yourself + attempt_msg = text("[] starts to [] [] into their []!",pred,lowertext(belly_target.vore_verb),prey,lowertext(belly_target.name)) + success_msg = text("[] manages to [] [] into their []!",pred,lowertext(belly_target.vore_verb),prey,lowertext(belly_target.name)) + + // Announce that we start the attempt! + user.visible_message(attempt_msg) + + if(!do_mob(src, user, swallow_time)) // one second should be good enough, right? + return FALSE // Prey escaped (or user disabled) before timer expired. + + // If we got this far, nom successful! Announce it! + user.visible_message(success_msg) + playsound(user, belly_target.vore_sound, 100, 1) + + // Actually shove prey into the belly. + belly_target.nom_mob(prey, user) + if (pred == user) + message_admins("[key_name(pred)] ate [key_name(prey)].") + log_attack("[key_name(pred)] ate [key_name(prey)]") + return TRUE // // Master vore proc that actually does vore procedures // @@ -250,6 +286,7 @@ if(M.loc != src) B.internal_contents.Remove(M) + // OOC Escape code for pref-breaking or AFK preds // /mob/living/proc/escapeOOC() diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index ebbc2f371c..0f01a4c9e3 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -27,7 +27,7 @@ // /datum/vore_look var/datum/belly/selected - var/show_interacts = FALSE + var/show_interacts = TRUE var/datum/browser/popup var/loop = null; // Magic self-reference to stop the handler from being GC'd before user takes action. diff --git a/tgstation.dme b/tgstation.dme index b1fd32e5c7..d852af48c0 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -1823,6 +1823,7 @@ #include "code\modules\mob\living\simple_animal\hostile\megafauna\bubblegum.dm" #include "code\modules\mob\living\simple_animal\hostile\megafauna\colossus.dm" #include "code\modules\mob\living\simple_animal\hostile\megafauna\dragon.dm" +#include "code\modules\mob\living\simple_animal\hostile\megafauna\dragon_vore.dm" #include "code\modules\mob\living\simple_animal\hostile\megafauna\hierophant.dm" #include "code\modules\mob\living\simple_animal\hostile\megafauna\legion.dm" #include "code\modules\mob\living\simple_animal\hostile\megafauna\megafauna.dm" From 4f2b8a51aabf9e3516f42ef9d8b8c25480caf205 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 21 Sep 2017 06:29:11 -0500 Subject: [PATCH 32/80] Automatic changelog generation for PR #2868 [ci skip] --- html/changelogs/AutoChangeLog-pr-2868.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2868.yml diff --git a/html/changelogs/AutoChangeLog-pr-2868.yml b/html/changelogs/AutoChangeLog-pr-2868.yml new file mode 100644 index 0000000000..ccadb2ab1e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2868.yml @@ -0,0 +1,5 @@ +author: "Poojawa" +delete-after: True +changes: + - rscadd: "Ash Drakes can actually devour you now. Must have devourment on to actually get eaten, else it'll gib you outright as normal." + - rscadd: "Ash Drake digestion will drop your brain in addition to your equipment. Something something reasons. Don't mind the funny smell." From 41277ff1101b68668e48b1ba5f1a30bcf9397a93 Mon Sep 17 00:00:00 2001 From: oranges Date: Thu, 21 Sep 2017 23:29:29 +1200 Subject: [PATCH 33/80] Removes old debug text --- code/__HELPERS/maths.dm | 1 - code/controllers/configuration.dm | 1 - code/controllers/subsystem/shuttle.dm | 5 - code/datums/browser.dm | 4 - code/datums/diseases/advance/advance.dm | 5 - code/datums/mind.dm | 1 - code/datums/progressbar.dm | 1 - code/game/atoms.dm | 1 - code/game/machinery/overview.dm | 13 -- code/game/objects/items/tanks/tanks.dm | 4 - code/game/objects/structures/musician.dm | 4 - code/modules/admin/admin.dm | 2 - code/modules/admin/verbs/SDQL2/SDQL_2.dm | 1 - .../atmospherics/gasmixtures/reactions.dm | 6 - .../atmospherics/machinery/airalarm.dm | 1 - .../components/binary_devices/circulator.dm | 53 ++++++ code/modules/holiday/holidays.dm | 1 - .../living/silicon/ai/freelook/cameranet.dm | 163 ++++++++++++++++++ .../mob/living/simple_animal/bot/mulebot.dm | 8 - .../simple_animal/friendly/farm_animals.dm | 1 - .../mob/living/simple_animal/simple_animal.dm | 1 - code/modules/power/generator.dm | 12 -- code/modules/projectiles/projectile.dm | 3 - code/modules/reagents/chemistry/holder.dm | 2 - 24 files changed, 216 insertions(+), 78 deletions(-) diff --git a/code/__HELPERS/maths.dm b/code/__HELPERS/maths.dm index 41d2f721f5..8374b305ad 100644 --- a/code/__HELPERS/maths.dm +++ b/code/__HELPERS/maths.dm @@ -155,7 +155,6 @@ GLOBAL_LIST_INIT(sqrtTable, list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, var/size_factor = ((-cos(inputToDegrees) +1) /2) //returns a value from 0 to 1 return size_factor + scaling_modifier //scale mod of 0 results in a number from 0 to 1. A scale modifier of +0.5 returns 0.5 to 1.5 - //to_chat(world, "Transform multiplier of [src] is [size_factor + scaling_modifer]") //converts a uniform distributed random number into a normal distributed one //since this method produces two random numbers, one is saved for subsequent calls diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 6a9cf9b963..1de153ce15 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -962,7 +962,6 @@ GLOBAL_PROTECT(config_dir) var/list/datum/game_mode/runnable_modes = new for(var/T in gamemode_cache) var/datum/game_mode/M = new T() - //to_chat(world, "DEBUG: [T], tag=[M.config_tag], prob=[probabilities[M.config_tag]]") if(!(M.config_tag in modes)) qdel(M) continue diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index de6445831d..4770689778 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -430,17 +430,14 @@ SUBSYSTEM_DEF(shuttle) continue base if(!(T.flags_1 & UNUSED_TRANSIT_TURF_1)) continue base - //to_chat(world, "[COORD(topleft)] and [COORD(bottomright)]") break base if((!proposed_zone) || (!proposed_zone.len)) return FALSE var/turf/topleft = proposed_zone[1] - //to_chat(world, "[COORD(topleft)] is TOPLEFT") // Then create a transit docking port in the middle var/coords = M.return_coords(0, 0, dock_dir) - //to_chat(world, json_encode(coords)) /* 0------2 | | | | @@ -478,11 +475,9 @@ SUBSYSTEM_DEF(shuttle) if(WEST) transit_path = /turf/open/space/transit/west - //to_chat(world, "Docking port at [transit_x], [transit_y], [topleft.z]") var/turf/midpoint = locate(transit_x, transit_y, topleft.z) if(!midpoint) return FALSE - //to_chat(world, "Making transit dock at [COORD(midpoint)]") var/area/shuttle/transit/A = new() A.parallax_movedir = travel_dir A.contents = proposed_zone diff --git a/code/datums/browser.dm b/code/datums/browser.dm index c854d20f18..cae6e04e9b 100644 --- a/code/datums/browser.dm +++ b/code/datums/browser.dm @@ -256,7 +256,6 @@ winset(user, windowid, "on-close=\".windowclose [param]\"") - //to_chat(world, "OnClose [user]: [windowid] : ["on-close=\".windowclose [param]\""]") // the on-close client verb @@ -268,12 +267,10 @@ set hidden = 1 // hide this verb from the user's panel set name = ".windowclose" // no autocomplete on cmd line - //to_chat(world, "windowclose: [atomref]") if(atomref!="null") // if passed a real atomref var/hsrc = locate(atomref) // find the reffed atom var/href = "close=1" if(hsrc) - //to_chat(world, "[src] Topic [href] [hsrc]") usr = src.mob src.Topic(href, params2list(href), hsrc) // this will direct to the atom's return // Topic() proc via client.Topic() @@ -281,6 +278,5 @@ // no atomref specified (or not found) // so just reset the user mob's machine var if(src && src.mob) - //to_chat(world, "[src] was [src.mob.machine], setting to null") src.mob.unset_machine() return diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index 9be242a391..26f42fa059 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -245,7 +245,6 @@ /datum/disease/advance/proc/GenerateCure() if(properties && properties.len) var/res = Clamp(properties["resistance"] - (symptoms.len / 2), 1, advance_cures.len) - //to_chat(world, "Res = [res]") cures = list(advance_cures[res]) // Get the cure name from the cure_id @@ -333,9 +332,6 @@ // Mix a list of advance diseases and return the mixed result. /proc/Advance_Mix(var/list/D_list) - - //to_chat(world, "Mixing!!!!") - var/list/diseases = list() for(var/datum/disease/advance/A in D_list) @@ -359,7 +355,6 @@ D2.Mix(D1) // Should be only 1 entry left, but if not let's only return a single entry - //to_chat(world, "END MIXING!!!!!") var/datum/disease/advance/to_return = pick(diseases) to_return.Refresh(1) return to_return diff --git a/code/datums/mind.dm b/code/datums/mind.dm index e824cc9914..8b7674083a 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -1278,7 +1278,6 @@ src = null M = H.monkeyize() src = M.mind - //to_chat(world, "DEBUG: \"healthy\": M=[M], M.mind=[M.mind], src=[src]!") else if (istype(M) && length(M.viruses)) for(var/thing in M.viruses) var/datum/disease/D = thing diff --git a/code/datums/progressbar.dm b/code/datums/progressbar.dm index e3e8d0e366..f9883cfe50 100644 --- a/code/datums/progressbar.dm +++ b/code/datums/progressbar.dm @@ -29,7 +29,6 @@ bar.pixel_y = 32 + (PROGRESSBAR_HEIGHT * (listindex - 1)) /datum/progressbar/proc/update(progress) - //to_chat(world, "Update [progress] - [goal] - [(progress / goal)] - [((progress / goal) * 100)] - [round(((progress / goal) * 100), 5)]") if (!user || !user.client) shown = 0 return diff --git a/code/game/atoms.dm b/code/game/atoms.dm index a28f4d0dc7..6698cab092 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -454,7 +454,6 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons) cur_y = y_arr.Find(src.z) if(cur_y) break -// to_chat(world, "X = [cur_x]; Y = [cur_y]") if(cur_x && cur_y) return list("x"=cur_x,"y"=cur_y) else diff --git a/code/game/machinery/overview.dm b/code/game/machinery/overview.dm index 545414577e..f800309131 100644 --- a/code/game/machinery/overview.dm +++ b/code/game/machinery/overview.dm @@ -31,8 +31,6 @@ imap += icon('icons/misc/imap.dmi', "blank") imap += icon('icons/misc/imap.dmi', "blank") - //to_chat(world, "[icount] images in list") - for(var/wx = 1 ; wx <= world.maxx; wx++) @@ -142,13 +140,10 @@ var/rx = ((wx*2+xoff)%32) + 1 var/ry = ((wy*2+yoff)%32) + 1 - //to_chat(world, "trying [ix],[iy] : [ix+icx*iy]") var/icon/I = imap[1+(ix + icx*iy)*2] var/icon/I2 = imap[2+(ix + icx*iy)*2] - //to_chat(world, "icon: [icon2html(I, world)]") - I.DrawBox(colour, rx, ry, rx+1, ry+1) I2.DrawBox(colour2, rx, ry, rx+1, ry+1) @@ -164,8 +159,6 @@ H.screen_loc = "[5 + i%icx],[6+ round(i/icx)]" - //to_chat(world, "[icon2html(I, world)] at [H.screen_loc]") - H.name = (i==0)?"maprefresh":"map" var/icon/HI = new/icon @@ -272,12 +265,8 @@ var/rx = ((wx*2+xoff)%32) + 1 var/ry = ((wy*2+yoff)%32) + 1 - //to_chat(world, "trying [ix],[iy] : [ix+icx*iy]") var/icon/I = imap[1+(ix + icx*iy)] - - //to_chat(world, "icon: [icon2html(I, world)]") - I.DrawBox(colour, rx, ry, rx, ry) @@ -291,8 +280,6 @@ H.screen_loc = "[5 + i%icx],[6+ round(i/icx)]" - //to_chat(world, "[icon2html(I, world)] at [H.screen_loc]") - H.name = (i==0)?"maprefresh":"map" var/icon/I = imap[i+1] diff --git a/code/game/objects/items/tanks/tanks.dm b/code/game/objects/items/tanks/tanks.dm index c2a1666aef..dd2ea47dc4 100644 --- a/code/game/objects/items/tanks/tanks.dm +++ b/code/game/objects/items/tanks/tanks.dm @@ -236,7 +236,6 @@ if(!istype(src.loc, /obj/item/device/transfer_valve)) message_admins("Explosive tank rupture! Last key to touch the tank was [src.fingerprintslast].") log_game("Explosive tank rupture! Last key to touch the tank was [src.fingerprintslast].") - //to_chat(world, "\blue[x],[y] tank is exploding: [pressure] kPa") //Give the gas a chance to build up more pressure through reacting air_contents.react() air_contents.react() @@ -245,7 +244,6 @@ var/range = (pressure-TANK_FRAGMENT_PRESSURE)/TANK_FRAGMENT_SCALE var/turf/epicenter = get_turf(loc) - //to_chat(world, "\blue Exploding Pressure: [pressure] kPa, intensity: [range]") explosion(epicenter, round(range*0.25), round(range*0.5), round(range), round(range*1.5)) if(istype(src.loc, /obj/item/device/transfer_valve)) @@ -254,7 +252,6 @@ qdel(src) else if(pressure > TANK_RUPTURE_PRESSURE) - //to_chat(world, "\blue[x],[y] tank is rupturing: [pressure] kPa, integrity [integrity]") if(integrity <= 0) var/turf/T = get_turf(src) if(!T) @@ -266,7 +263,6 @@ integrity-- else if(pressure > TANK_LEAK_PRESSURE) - //to_chat(world, "\blue[x],[y] tank is leaking: [pressure] kPa, integrity [integrity]") if(integrity <= 0) var/turf/T = get_turf(src) if(!T) diff --git a/code/game/objects/structures/musician.dm b/code/game/objects/structures/musician.dm index ed0deef7d9..d253cbcf44 100644 --- a/code/game/objects/structures/musician.dm +++ b/code/game/objects/structures/musician.dm @@ -97,19 +97,15 @@ cur_acc[i] = "n" for(var/line in lines) - //to_chat(world, line) for(var/beat in splittext(lowertext(line), ",")) - //to_chat(world, "beat: [beat]") var/list/notes = splittext(beat, "/") for(var/note in splittext(notes[1], "-")) - //to_chat(world, "note: [note]") if(!playing || shouldStopPlaying(user))//If the instrument is playing, or special case playing = FALSE hearing_mobs = null return if(!lentext(note)) continue - //to_chat(world, "Parse: [copytext(note,1,2)]") var/cur_note = text2ascii(note) - 96 if(cur_note < 1 || cur_note > 7) continue diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index c2b5c1cd8d..48af29616e 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -380,8 +380,6 @@ else dat+="I'm sorry to break your immersion. This shit's bugged. Report this bug to Agouri, polyxenitopalidou@gmail.com" - //to_chat(world, "Channelname: [src.admincaster_feed_channel.channel_name] [src.admincaster_feed_channel.author]") - //to_chat(world, "Msg: [src.admincaster_feed_message.author] [src.admincaster_feed_message.body]") usr << browse(dat, "window=admincaster_main;size=400x600") onclose(usr, "admincaster_main") diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm index eaa98934d5..4cbac86270 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm @@ -37,7 +37,6 @@ if(!query_text || length(query_text) < 1) return - //to_chat(world, query_text) var/list/query_list = SDQL2_tokenize(query_text) diff --git a/code/modules/atmospherics/gasmixtures/reactions.dm b/code/modules/atmospherics/gasmixtures/reactions.dm index 1060c2daf2..a37e4d61c4 100644 --- a/code/modules/atmospherics/gasmixtures/reactions.dm +++ b/code/modules/atmospherics/gasmixtures/reactions.dm @@ -108,8 +108,6 @@ var/list/cached_gases = air.gases //this speeds things up because accessing datum vars is slow var/temperature = air.temperature var/list/cached_results = air.reaction_results - - //to_chat(world, "pre [temperature], [cached_gases["o2"][MOLES]], [cached_gases["plasma"][MOLES]]") cached_results[id] = 0 //General volatile gas burn @@ -165,8 +163,6 @@ if(new_heat_capacity > MINIMUM_HEAT_CAPACITY) air.temperature = (temperature*old_heat_capacity + energy_released)/new_heat_capacity - //to_chat(world, "post [temperature], [cached_gases["o2"][MOLES]], [cached_gases["plasma"][MOLES]]") - //let the floor know a fire is happening if(istype(location)) temperature = air.temperature @@ -201,7 +197,6 @@ //Fusion wont occur if the level of impurities is too high. return NO_REACTION - //to_chat(world, "pre [temperature, [cached_gases["plasma"][MOLES]], [cached_gases["co2"][MOLES]]) var/old_heat_capacity = air.heat_capacity() var/carbon_efficency = min(cached_gases["plasma"][MOLES]/cached_gases["co2"][MOLES],MAX_CARBON_EFFICENCY) var/reaction_energy = air.thermal_energy() @@ -226,7 +221,6 @@ if(new_heat_capacity > MINIMUM_HEAT_CAPACITY) air.temperature = max(((temperature*old_heat_capacity + reaction_energy)/new_heat_capacity),TCMB) //Prevents whatever mechanism is causing it to hit negative temperatures. - //to_chat(world, "post [temperature], [cached_gases["plasma"][MOLES]], [cached_gases["co2"][MOLES]]) return REACTING #undef REACTING diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index 1a03c69d49..9807fed513 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -415,7 +415,6 @@ signal.data["sigtype"] = "command" radio_connection.post_signal(src, signal, GLOB.RADIO_FROM_AIRALARM) -// to_chat(world, text("Signal [] Broadcasted to []", command, target)) return 1 diff --git a/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm b/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm index f76eb3bb65..011c73caa5 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm @@ -14,6 +14,7 @@ anchored = TRUE density = TRUE +<<<<<<< HEAD var/global/const/CIRC_LEFT = 1 var/global/const/CIRC_RIGHT = 2 @@ -68,3 +69,55 @@ icon_state = "circ[side]-off" return 1 +======= + + var/global/const/CIRC_LEFT = 1 + var/global/const/CIRC_RIGHT = 2 + + +/obj/machinery/atmospherics/components/binary/circulator/proc/return_transfer_air() + + var/datum/gas_mixture/air1 = AIR1 + var/datum/gas_mixture/air2 = AIR2 + + var/output_starting_pressure = air1.return_pressure() + var/input_starting_pressure = air2.return_pressure() + + if(output_starting_pressure >= input_starting_pressure-10) + //Need at least 10 KPa difference to overcome friction in the mechanism + last_pressure_delta = 0 + return null + + //Calculate necessary moles to transfer using PV = nRT + if(air2.temperature>0) + var/pressure_delta = (input_starting_pressure - output_starting_pressure)/2 + + var/transfer_moles = pressure_delta*air1.volume/(air2.temperature * R_IDEAL_GAS_EQUATION) + + last_pressure_delta = pressure_delta + + //Actually transfer the gas + var/datum/gas_mixture/removed = air2.remove(transfer_moles) + + update_parents() + + return removed + + else + last_pressure_delta = 0 + +/obj/machinery/atmospherics/components/binary/circulator/process_atmos() + ..() + update_icon() + +/obj/machinery/atmospherics/components/binary/circulator/update_icon() + if(!is_operational()) + icon_state = "circ[side]-p" + else if(last_pressure_delta > 0) + if(last_pressure_delta > ONE_ATMOSPHERE) + icon_state = "circ[side]-run" + else + icon_state = "circ[side]-slow" + else + icon_state = "circ[side]-off" +>>>>>>> 3791f0b... Merge pull request #30896 from ShizCalev/debug-text diff --git a/code/modules/holiday/holidays.dm b/code/modules/holiday/holidays.dm index b8fe3e777a..c8e9235646 100644 --- a/code/modules/holiday/holidays.dm +++ b/code/modules/holiday/holidays.dm @@ -485,7 +485,6 @@ Since Ramadan is an entire month that lasts 29.5 days on average, the start and begin_day += 31 begin_month-- //begins in march, ends in april -// to_chat(world, "Easter calculates to be on [begin_day] of [begin_month] ([days_early] early) to [end_day] of [end_month] ([days_extra] extra) for 20[yy]") return ..() /datum/holiday/easter/celebrate() diff --git a/code/modules/mob/living/silicon/ai/freelook/cameranet.dm b/code/modules/mob/living/silicon/ai/freelook/cameranet.dm index ca0a2e8c1c..42108f08a7 100644 --- a/code/modules/mob/living/silicon/ai/freelook/cameranet.dm +++ b/code/modules/mob/living/silicon/ai/freelook/cameranet.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD // CAMERA NET // // The datum containing all the chunks. @@ -161,4 +162,166 @@ GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new) if(cameranet.chunkGenerated(x, y, z)) var/datum/camerachunk/chunk = cameranet.getCameraChunk(x, y, z) usr.client.debug_variables(chunk) +======= +// CAMERA NET +// +// The datum containing all the chunks. + +#define CHUNK_SIZE 16 // Only chunk sizes that are to the power of 2. E.g: 2, 4, 8, 16, etc.. + +GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new) + +/datum/cameranet + var/name = "Camera Net" // Name to show for VV and stat() + + // The cameras on the map, no matter if they work or not. Updated in obj/machinery/camera.dm by New() and Del(). + var/list/cameras = list() + // The chunks of the map, mapping the areas that the cameras can see. + var/list/chunks = list() + var/ready = 0 + + // The object used for the clickable stat() button. + var/obj/effect/statclick/statclick + +// Checks if a chunk has been Generated in x, y, z. +/datum/cameranet/proc/chunkGenerated(x, y, z) + x &= ~(CHUNK_SIZE - 1) + y &= ~(CHUNK_SIZE - 1) + var/key = "[x],[y],[z]" + return (chunks[key]) + +// Returns the chunk in the x, y, z. +// If there is no chunk, it creates a new chunk and returns that. +/datum/cameranet/proc/getCameraChunk(x, y, z) + x &= ~(CHUNK_SIZE - 1) + y &= ~(CHUNK_SIZE - 1) + var/key = "[x],[y],[z]" + if(!chunks[key]) + chunks[key] = new /datum/camerachunk(null, x, y, z) + + return chunks[key] + +// Updates what the aiEye can see. It is recommended you use this when the aiEye moves or it's location is set. + +/datum/cameranet/proc/visibility(mob/camera/aiEye/ai) + // 0xf = 15 + var/x1 = max(0, ai.x - 16) & ~(CHUNK_SIZE - 1) + var/y1 = max(0, ai.y - 16) & ~(CHUNK_SIZE - 1) + var/x2 = min(world.maxx, ai.x + 16) & ~(CHUNK_SIZE - 1) + var/y2 = min(world.maxy, ai.y + 16) & ~(CHUNK_SIZE - 1) + + var/list/visibleChunks = list() + + for(var/x = x1; x <= x2; x += CHUNK_SIZE) + for(var/y = y1; y <= y2; y += CHUNK_SIZE) + visibleChunks |= getCameraChunk(x, y, ai.z) + + var/list/remove = ai.visibleCameraChunks - visibleChunks + var/list/add = visibleChunks - ai.visibleCameraChunks + + for(var/chunk in remove) + var/datum/camerachunk/c = chunk + c.remove(ai) + + for(var/chunk in add) + var/datum/camerachunk/c = chunk + c.add(ai) + +// Updates the chunks that the turf is located in. Use this when obstacles are destroyed or when doors open. + +/datum/cameranet/proc/updateVisibility(atom/A, opacity_check = 1) + + if(!SSticker || (opacity_check && !A.opacity)) + return + majorChunkChange(A, 2) + +/datum/cameranet/proc/updateChunk(x, y, z) + // 0xf = 15 + if(!chunkGenerated(x, y, z)) + return + var/datum/camerachunk/chunk = getCameraChunk(x, y, z) + chunk.hasChanged() + +// Removes a camera from a chunk. + +/datum/cameranet/proc/removeCamera(obj/machinery/camera/c) + if(c.can_use()) + majorChunkChange(c, 0) + +// Add a camera to a chunk. + +/datum/cameranet/proc/addCamera(obj/machinery/camera/c) + if(c.can_use()) + majorChunkChange(c, 1) + +// Used for Cyborg cameras. Since portable cameras can be in ANY chunk. + +/datum/cameranet/proc/updatePortableCamera(obj/machinery/camera/c) + if(c.can_use()) + majorChunkChange(c, 1) + //else + // majorChunkChange(c, 0) + +// Never access this proc directly!!!! +// This will update the chunk and all the surrounding chunks. +// It will also add the atom to the cameras list if you set the choice to 1. +// Setting the choice to 0 will remove the camera from the chunks. +// If you want to update the chunks around an object, without adding/removing a camera, use choice 2. + +/datum/cameranet/proc/majorChunkChange(atom/c, choice) + // 0xf = 15 + if(!c) + return + + var/turf/T = get_turf(c) + if(T) + var/x1 = max(0, T.x - (CHUNK_SIZE / 2)) & ~(CHUNK_SIZE - 1) + var/y1 = max(0, T.y - (CHUNK_SIZE / 2)) & ~(CHUNK_SIZE - 1) + var/x2 = min(world.maxx, T.x + (CHUNK_SIZE / 2)) & ~(CHUNK_SIZE - 1) + var/y2 = min(world.maxy, T.y + (CHUNK_SIZE / 2)) & ~(CHUNK_SIZE - 1) + for(var/x = x1; x <= x2; x += CHUNK_SIZE) + for(var/y = y1; y <= y2; y += CHUNK_SIZE) + if(chunkGenerated(x, y, T.z)) + var/datum/camerachunk/chunk = getCameraChunk(x, y, T.z) + if(choice == 0) + // Remove the camera. + chunk.cameras -= c + else if(choice == 1) + // You can't have the same camera in the list twice. + chunk.cameras |= c + chunk.hasChanged() + +// Will check if a mob is on a viewable turf. Returns 1 if it is, otherwise returns 0. + +/datum/cameranet/proc/checkCameraVis(mob/living/target) + + // 0xf = 15 + var/turf/position = get_turf(target) + return checkTurfVis(position) + + +/datum/cameranet/proc/checkTurfVis(turf/position) + var/datum/camerachunk/chunk = getCameraChunk(position.x, position.y, position.z) + if(chunk) + if(chunk.changed) + chunk.hasChanged(1) // Update now, no matter if it's visible or not. + if(chunk.visibleTurfs[position]) + return 1 + return 0 + +/datum/cameranet/proc/stat_entry() + if(!statclick) + statclick = new/obj/effect/statclick/debug(null, "Initializing...", src) + + stat(name, statclick.update("Cameras: [GLOB.cameranet.cameras.len] | Chunks: [GLOB.cameranet.chunks.len]")) + +// Debug verb for VVing the chunk that the turf is in. +/* +/turf/verb/view_chunk() + set src in world + + if(cameranet.chunkGenerated(x, y, z)) + var/datum/camerachunk/chunk = cameranet.getCameraChunk(x, y, z) + usr.client.debug_variables(chunk) +>>>>>>> 3791f0b... Merge pull request #30896 from ShizCalev/debug-text */ \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index 4007822ebb..e6a4b978ca 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -432,7 +432,6 @@ return if(on) var/speed = (wires.is_cut(WIRE_MOTOR1) ? 0 : 1) + (wires.is_cut(WIRE_MOTOR2) ? 0 : 2) - //to_chat(world, "speed: [speed]") var/num_steps = 0 switch(speed) if(0) @@ -474,8 +473,6 @@ path -= next return if(isturf(next)) - //to_chat(world, "at ([x],[y]) moving to ([next.x],[next.y])") - if(bloodiness) var/obj/effect/decal/cleanable/blood/tracks/B = new(loc) if(blood_DNA && blood_DNA.len) @@ -497,7 +494,6 @@ var/moved = step_towards(src, next) // attempt to move if(cell) cell.use(1) if(moved && oldloc!=loc) // successful move - //to_chat(world, "Successful move.") blockcount = 0 path -= loc @@ -508,7 +504,6 @@ else // failed to move - //to_chat(world, "Unable to move.") blockcount++ mode = BOT_BLOCKED if(blockcount == 3) @@ -528,16 +523,13 @@ return else buzz(ANNOYED) - //to_chat(world, "Bad turf.") mode = BOT_NAV return else - //to_chat(world, "No path.") mode = BOT_NAV return if(BOT_NAV) // calculate new path - //to_chat(world, "Calc new path.") mode = BOT_WAIT_FOR_NAV spawn(0) calc_path() diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index b48e676a23..c29236c2fc 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -278,7 +278,6 @@ user.drop_item() qdel(O) eggsleft += rand(1, 4) - //to_chat(world, eggsleft) else to_chat(user, "[name] doesn't seem hungry!") else diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index dab8210940..144fec4a4a 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -233,7 +233,6 @@ if( abs(areatemp - bodytemperature) > 40 ) var/diff = areatemp - bodytemperature diff = diff / 5 - //to_chat(world, "changed from [bodytemperature] by [diff] to [bodytemperature + diff]") bodytemperature += diff if(!environment_is_safe(environment)) diff --git a/code/modules/power/generator.dm b/code/modules/power/generator.dm index b5eef4260e..6aeaff9477 100644 --- a/code/modules/power/generator.dm +++ b/code/modules/power/generator.dm @@ -82,24 +82,16 @@ return if(powernet) - //to_chat(world, "cold_circ and hot_circ pass") - var/datum/gas_mixture/cold_air = cold_circ.return_transfer_air() var/datum/gas_mixture/hot_air = hot_circ.return_transfer_air() - //to_chat(world, "hot_air = [hot_air]; cold_air = [cold_air];") - if(cold_air && hot_air) - //to_chat(world, "hot_air = [hot_air] temperature = [hot_air.temperature]; cold_air = [cold_air] temperature = [hot_air.temperature];") - - //to_chat(world, "coldair and hotair pass") var/cold_air_heat_capacity = cold_air.heat_capacity() var/hot_air_heat_capacity = hot_air.heat_capacity() var/delta_temperature = hot_air.temperature - cold_air.temperature - //to_chat(world, "delta_temperature = [delta_temperature]; cold_air_heat_capacity = [cold_air_heat_capacity]; hot_air_heat_capacity = [hot_air_heat_capacity]") if(delta_temperature > 0 && cold_air_heat_capacity > 0 && hot_air_heat_capacity > 0) var/efficiency = 0.65 @@ -109,13 +101,9 @@ var/heat = energy_transfer*(1-efficiency) lastgen += energy_transfer*efficiency - //to_chat(world, "lastgen = [lastgen]; heat = [heat]; delta_temperature = [delta_temperature]; hot_air_heat_capacity = [hot_air_heat_capacity]; cold_air_heat_capacity = [cold_air_heat_capacity];") - hot_air.temperature = hot_air.temperature - energy_transfer/hot_air_heat_capacity cold_air.temperature = cold_air.temperature + heat/cold_air_heat_capacity - //to_chat(world, "POWER: [lastgen] W generated at [efficiency*100]% efficiency and sinks sizes [cold_air_heat_capacity], [hot_air_heat_capacity]") - //add_avail(lastgen) This is done in process now // update icon overlays only if displayed level has changed diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 527d02e52a..a0f4712471 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -324,7 +324,6 @@ //Split Y+Pixel_Y up into list(Y, Pixel_Y) var/list/screen_loc_Y = splittext(screen_loc_params[2],":") - // to_chat(world, "X: [screen_loc_X[1]] PixelX: [screen_loc_X[2]] / Y: [screen_loc_Y[1]] PixelY: [screen_loc_Y[2]]") var/x = text2num(screen_loc_X[1]) * 32 + text2num(screen_loc_X[2]) - 32 var/y = text2num(screen_loc_Y[1]) * 32 + text2num(screen_loc_Y[2]) - 32 @@ -333,9 +332,7 @@ var/ox = round(screenview/2) - user.client.pixel_x //"origin" x var/oy = round(screenview/2) - user.client.pixel_y //"origin" y - // to_chat(world, "Pixel position: [x] [y]") angle = Atan2(y - oy, x - ox) - // to_chat(world, "Angle: [angle]") return list(angle, p_x, p_y) /obj/item/projectile/Crossed(atom/movable/AM) //A mob moving on a tile with a projectile is hit by it. diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index ad339b8e39..9bcd909faf 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -671,7 +671,6 @@ for(var/reagent in cached_reagents) var/datum/reagent/R = reagent if(R.id == reagent_id) - //to_chat(world, "proffering a data-carrying reagent ([reagent_id])") return R.data /datum/reagents/proc/set_data(reagent_id, new_data) @@ -679,7 +678,6 @@ for(var/reagent in cached_reagents) var/datum/reagent/R = reagent if(R.id == reagent_id) - //to_chat(world, "reagent data set ([reagent_id])") R.data = new_data /datum/reagents/proc/copy_data(datum/reagent/current_reagent) From 1b7df01851079f78a495ef7ec4e537b7bb8cdee3 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 21 Sep 2017 06:30:24 -0500 Subject: [PATCH 34/80] Automatic changelog generation for PR #2865 [ci skip] --- html/changelogs/AutoChangeLog-pr-2865.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2865.yml diff --git a/html/changelogs/AutoChangeLog-pr-2865.yml b/html/changelogs/AutoChangeLog-pr-2865.yml new file mode 100644 index 0000000000..d45e9014b9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2865.yml @@ -0,0 +1,4 @@ +author: "PopNotes" +delete-after: True +changes: + - imageadd: "Airlocks animate faster. This doesn't change the time it takes to pass through an airlock, but it does visually match up much better so you don't just appear to glide through the airlock while it's half-open." From 11b5a9c03c9985a9a9025501ddfb0ecad99a19d9 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 21 Sep 2017 06:31:46 -0500 Subject: [PATCH 35/80] Automatic changelog generation for PR #2877 [ci skip] --- html/changelogs/AutoChangeLog-pr-2877.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2877.yml diff --git a/html/changelogs/AutoChangeLog-pr-2877.yml b/html/changelogs/AutoChangeLog-pr-2877.yml new file mode 100644 index 0000000000..523acefc54 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2877.yml @@ -0,0 +1,4 @@ +author: "ShizCalev" +delete-after: True +changes: + - balance: "Magillitis will now ALSO affect humans." From c1a3dc1c1e08068cfbe039a052d4a95c4fc84b51 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Thu, 21 Sep 2017 06:33:36 -0500 Subject: [PATCH 36/80] Update cameranet.dm --- .../living/silicon/ai/freelook/cameranet.dm | 168 +----------------- 1 file changed, 1 insertion(+), 167 deletions(-) diff --git a/code/modules/mob/living/silicon/ai/freelook/cameranet.dm b/code/modules/mob/living/silicon/ai/freelook/cameranet.dm index 42108f08a7..6624b75fd5 100644 --- a/code/modules/mob/living/silicon/ai/freelook/cameranet.dm +++ b/code/modules/mob/living/silicon/ai/freelook/cameranet.dm @@ -1,168 +1,3 @@ -<<<<<<< HEAD -// CAMERA NET -// -// The datum containing all the chunks. - -#define CHUNK_SIZE 16 // Only chunk sizes that are to the power of 2. E.g: 2, 4, 8, 16, etc.. - -GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new) - -/datum/cameranet - var/name = "Camera Net" // Name to show for VV and stat() - - // The cameras on the map, no matter if they work or not. Updated in obj/machinery/camera.dm by New() and Del(). - var/list/cameras = list() - // The chunks of the map, mapping the areas that the cameras can see. - var/list/chunks = list() - var/ready = 0 - - // The object used for the clickable stat() button. - var/obj/effect/statclick/statclick - -// Checks if a chunk has been Generated in x, y, z. -/datum/cameranet/proc/chunkGenerated(x, y, z) - x &= ~(CHUNK_SIZE - 1) - y &= ~(CHUNK_SIZE - 1) - var/key = "[x],[y],[z]" - return (chunks[key]) - -// Returns the chunk in the x, y, z. -// If there is no chunk, it creates a new chunk and returns that. -/datum/cameranet/proc/getCameraChunk(x, y, z) - x &= ~(CHUNK_SIZE - 1) - y &= ~(CHUNK_SIZE - 1) - var/key = "[x],[y],[z]" - if(!chunks[key]) - chunks[key] = new /datum/camerachunk(null, x, y, z) - - return chunks[key] - -// Updates what the aiEye can see. It is recommended you use this when the aiEye moves or it's location is set. - -/datum/cameranet/proc/visibility(mob/camera/aiEye/ai) - // 0xf = 15 - var/x1 = max(0, ai.x - 16) & ~(CHUNK_SIZE - 1) - var/y1 = max(0, ai.y - 16) & ~(CHUNK_SIZE - 1) - var/x2 = min(world.maxx, ai.x + 16) & ~(CHUNK_SIZE - 1) - var/y2 = min(world.maxy, ai.y + 16) & ~(CHUNK_SIZE - 1) - - var/list/visibleChunks = list() - - for(var/x = x1; x <= x2; x += CHUNK_SIZE) - for(var/y = y1; y <= y2; y += CHUNK_SIZE) - visibleChunks |= getCameraChunk(x, y, ai.z) - - var/list/remove = ai.visibleCameraChunks - visibleChunks - var/list/add = visibleChunks - ai.visibleCameraChunks - - for(var/chunk in remove) - var/datum/camerachunk/c = chunk - c.remove(ai) - - for(var/chunk in add) - var/datum/camerachunk/c = chunk - c.add(ai) - -// Updates the chunks that the turf is located in. Use this when obstacles are destroyed or when doors open. - -/datum/cameranet/proc/updateVisibility(atom/A, opacity_check = 1) - - if(!SSticker || (opacity_check && !A.opacity)) - return - majorChunkChange(A, 2) - -/datum/cameranet/proc/updateChunk(x, y, z) - // 0xf = 15 - if(!chunkGenerated(x, y, z)) - return - var/datum/camerachunk/chunk = getCameraChunk(x, y, z) - chunk.hasChanged() - -// Removes a camera from a chunk. - -/datum/cameranet/proc/removeCamera(obj/machinery/camera/c) - if(c.can_use()) - majorChunkChange(c, 0) - -// Add a camera to a chunk. - -/datum/cameranet/proc/addCamera(obj/machinery/camera/c) - if(c.can_use()) - majorChunkChange(c, 1) - -// Used for Cyborg cameras. Since portable cameras can be in ANY chunk. - -/datum/cameranet/proc/updatePortableCamera(obj/machinery/camera/c) - if(c.can_use()) - majorChunkChange(c, 1) - //else - // majorChunkChange(c, 0) - -// Never access this proc directly!!!! -// This will update the chunk and all the surrounding chunks. -// It will also add the atom to the cameras list if you set the choice to 1. -// Setting the choice to 0 will remove the camera from the chunks. -// If you want to update the chunks around an object, without adding/removing a camera, use choice 2. - -/datum/cameranet/proc/majorChunkChange(atom/c, choice) - // 0xf = 15 - if(!c) - return - - var/turf/T = get_turf(c) - if(T) - var/x1 = max(0, T.x - (CHUNK_SIZE / 2)) & ~(CHUNK_SIZE - 1) - var/y1 = max(0, T.y - (CHUNK_SIZE / 2)) & ~(CHUNK_SIZE - 1) - var/x2 = min(world.maxx, T.x + (CHUNK_SIZE / 2)) & ~(CHUNK_SIZE - 1) - var/y2 = min(world.maxy, T.y + (CHUNK_SIZE / 2)) & ~(CHUNK_SIZE - 1) - - //to_chat(world, "X1: [x1] - Y1: [y1] - X2: [x2] - Y2: [y2]") - - for(var/x = x1; x <= x2; x += CHUNK_SIZE) - for(var/y = y1; y <= y2; y += CHUNK_SIZE) - if(chunkGenerated(x, y, T.z)) - var/datum/camerachunk/chunk = getCameraChunk(x, y, T.z) - if(choice == 0) - // Remove the camera. - chunk.cameras -= c - else if(choice == 1) - // You can't have the same camera in the list twice. - chunk.cameras |= c - chunk.hasChanged() - -// Will check if a mob is on a viewable turf. Returns 1 if it is, otherwise returns 0. - -/datum/cameranet/proc/checkCameraVis(mob/living/target) - - // 0xf = 15 - var/turf/position = get_turf(target) - return checkTurfVis(position) - - -/datum/cameranet/proc/checkTurfVis(turf/position) - var/datum/camerachunk/chunk = getCameraChunk(position.x, position.y, position.z) - if(chunk) - if(chunk.changed) - chunk.hasChanged(1) // Update now, no matter if it's visible or not. - if(chunk.visibleTurfs[position]) - return 1 - return 0 - -/datum/cameranet/proc/stat_entry() - if(!statclick) - statclick = new/obj/effect/statclick/debug(null, "Initializing...", src) - - stat(name, statclick.update("Cameras: [GLOB.cameranet.cameras.len] | Chunks: [GLOB.cameranet.chunks.len]")) - -// Debug verb for VVing the chunk that the turf is in. -/* -/turf/verb/view_chunk() - set src in world - - if(cameranet.chunkGenerated(x, y, z)) - var/datum/camerachunk/chunk = cameranet.getCameraChunk(x, y, z) - usr.client.debug_variables(chunk) -======= // CAMERA NET // // The datum containing all the chunks. @@ -323,5 +158,4 @@ GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new) if(cameranet.chunkGenerated(x, y, z)) var/datum/camerachunk/chunk = cameranet.getCameraChunk(x, y, z) usr.client.debug_variables(chunk) ->>>>>>> 3791f0b... Merge pull request #30896 from ShizCalev/debug-text -*/ \ No newline at end of file +*/ From e154c27a72eb0d7e4548cf5dbbbf9c9d91edf5d7 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Thu, 21 Sep 2017 06:35:01 -0500 Subject: [PATCH 37/80] Update circulator.dm --- .../components/binary_devices/circulator.dm | 85 +++---------------- 1 file changed, 14 insertions(+), 71 deletions(-) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm b/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm index 011c73caa5..45c48726d3 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm @@ -1,75 +1,19 @@ -//node2, air2, network2 correspond to input -//node1, air1, network1 correspond to output - - -/obj/machinery/atmospherics/components/binary/circulator - name = "circulator/heat exchanger" - desc = "A gas circulator pump and heat exchanger." - icon_state = "circ1-off" - - var/side = CIRC_LEFT - var/status = 0 - - var/last_pressure_delta = 0 - +//node2, air2, network2 correspond to input +//node1, air1, network1 correspond to output + + +/obj/machinery/atmospherics/components/binary/circulator + name = "circulator/heat exchanger" + desc = "A gas circulator pump and heat exchanger." + icon_state = "circ1-off" + + var/side = CIRC_LEFT + var/status = 0 + + var/last_pressure_delta = 0 + anchored = TRUE density = TRUE -<<<<<<< HEAD - - var/global/const/CIRC_LEFT = 1 - var/global/const/CIRC_RIGHT = 2 - - -/obj/machinery/atmospherics/components/binary/circulator/proc/return_transfer_air() - - var/datum/gas_mixture/air1 = AIR1 - var/datum/gas_mixture/air2 = AIR2 - - var/output_starting_pressure = air1.return_pressure() - var/input_starting_pressure = air2.return_pressure() - - if(output_starting_pressure >= input_starting_pressure-10) - //Need at least 10 KPa difference to overcome friction in the mechanism - last_pressure_delta = 0 - return null - - //Calculate necessary moles to transfer using PV = nRT - if(air2.temperature>0) - var/pressure_delta = (input_starting_pressure - output_starting_pressure)/2 - - var/transfer_moles = pressure_delta*air1.volume/(air2.temperature * R_IDEAL_GAS_EQUATION) - - last_pressure_delta = pressure_delta - - //to_chat(world, "pressure_delta = [pressure_delta]; transfer_moles = [transfer_moles];") - - //Actually transfer the gas - var/datum/gas_mixture/removed = air2.remove(transfer_moles) - - update_parents() - - return removed - - else - last_pressure_delta = 0 - -/obj/machinery/atmospherics/components/binary/circulator/process_atmos() - ..() - update_icon() - -/obj/machinery/atmospherics/components/binary/circulator/update_icon() - if(stat & (BROKEN|NOPOWER)) - icon_state = "circ[side]-p" - else if(last_pressure_delta > 0) - if(last_pressure_delta > ONE_ATMOSPHERE) - icon_state = "circ[side]-run" - else - icon_state = "circ[side]-slow" - else - icon_state = "circ[side]-off" - - return 1 -======= var/global/const/CIRC_LEFT = 1 var/global/const/CIRC_RIGHT = 2 @@ -120,4 +64,3 @@ icon_state = "circ[side]-slow" else icon_state = "circ[side]-off" ->>>>>>> 3791f0b... Merge pull request #30896 from ShizCalev/debug-text From 55841673b55b4f5eb25d040f6fb13cbb0f6fb42b Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 21 Sep 2017 06:36:46 -0500 Subject: [PATCH 38/80] Automatic changelog generation for PR #2872 [ci skip] --- html/changelogs/AutoChangeLog-pr-2872.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2872.yml diff --git a/html/changelogs/AutoChangeLog-pr-2872.yml b/html/changelogs/AutoChangeLog-pr-2872.yml new file mode 100644 index 0000000000..ff61e5dbd0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2872.yml @@ -0,0 +1,5 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - balance: "Knockdown and unconcious now let you regenerate stamina damage." + - rscadd: "Sleeping regenerates more stamina damage." From b7739d1c7771f43103da79e1bd4ff099727291dc Mon Sep 17 00:00:00 2001 From: Poojawa Date: Thu, 21 Sep 2017 15:40:04 -0500 Subject: [PATCH 39/80] Update hostile.dm --- code/modules/mob/living/simple_animal/hostile/hostile.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index 4b5789f877..c8fbfd53fa 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -228,7 +228,7 @@ if(!target || !CanAttack(target)) LoseTarget() return 0 - if(isturf(target.loc)) + if(ismob(target.loc)) LoseTarget() return 0 if(target in possible_targets) From fd64d4fdfa79d6de6bf230280c053e4e36ddfbcf Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 04:45:24 -0500 Subject: [PATCH 40/80] [MIRROR] Fixes IRC ahelp answer notifications (#2888) * Merge pull request #30912 from tgstation/Cyberboss-patch-4 Fixes IRC ahelp answer notifications * Fixes IRC ahelp answer notifications --- code/modules/admin/verbs/adminhelp.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 4349bb307a..16f654bb80 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -211,7 +211,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) return ..() /datum/admin_help/proc/AddInteraction(formatted_message) - if(heard_by_no_admins && usr && usr.client != initiator) + if(heard_by_no_admins && usr && usr.ckey != initiator_ckey) heard_by_no_admins = FALSE send2irc(initiator_ckey, "Ticket #[id]: Answered by [key_name(usr)]") _interactions += "[gameTimestamp()]: [formatted_message]" From 2ab0c3696e08b843cbe05c7c13ce315ddebb00c0 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 04:46:19 -0500 Subject: [PATCH 41/80] [MIRROR] Fixes it so patches do not work on robotic limbs. (#2893) * Merge pull request #30851 from Firecage/nopatchesonnonorganiclimbspleaseandthankyoumistergoof Fixes it so patches do not work on robotic limbs. * Fixes it so patches do not work on robotic limbs. --- code/modules/reagents/reagent_containers/patch.dm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/code/modules/reagents/reagent_containers/patch.dm b/code/modules/reagents/reagent_containers/patch.dm index ba106e8cd3..9321595a8d 100644 --- a/code/modules/reagents/reagent_containers/patch.dm +++ b/code/modules/reagents/reagent_containers/patch.dm @@ -13,6 +13,14 @@ /obj/item/reagent_containers/pill/patch/afterattack(obj/target, mob/user , proximity) return // thanks inheritance again +/obj/item/reagent_containers/pill/patch/attack(mob/living/L, mob/user) + if(ishuman(L)) + var/obj/item/bodypart/affecting = L.get_bodypart(check_zone(user.zone_selected)) + if(affecting.status != BODYPART_ORGANIC) + to_chat(user, "Medicine won't work on a robotic limb!") + return + ..() + /obj/item/reagent_containers/pill/patch/canconsume(mob/eater, mob/user) if(!iscarbon(eater)) return 0 From e783c3941915d883320439c280c8c0e03da86805 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 04:47:08 -0500 Subject: [PATCH 42/80] [MIRROR] Mice spawn now chooses correct z-level (#2887) * Merge pull request #30897 from AutomaticFrenzy/squeakFix Mice spawn now chooses correct z-level * Mice spawn now chooses correct z-level * Update squeak.dm --- code/controllers/subsystem/squeak.dm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/code/controllers/subsystem/squeak.dm b/code/controllers/subsystem/squeak.dm index d94efd0a4a..16b722c71b 100644 --- a/code/controllers/subsystem/squeak.dm +++ b/code/controllers/subsystem/squeak.dm @@ -1,6 +1,6 @@ // The Squeak // because this is about placement of mice mobs, and nothing to do with -// mice - the computer peripheral +// mice - the computer peripheral SUBSYSTEM_DEF(squeak) name = "Squeak" @@ -32,8 +32,9 @@ SUBSYSTEM_DEF(squeak) /datum/controller/subsystem/squeak/proc/find_exposed_wires() exposed_wires.Cut() - - var/list/all_turfs = block(locate(1,1,1), locate(world.maxx,world.maxy,1)) + var/list/all_turfs + for (var/z in GLOB.station_z_levels) + all_turfs += block(locate(1,1,z), locate(world.maxx,world.maxy,z)) for(var/turf/open/floor/plating/T in all_turfs) if(is_blocked_turf(T)) continue From 60ca9a16eabe743338b0e672638678a051db2c82 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 04:47:10 -0500 Subject: [PATCH 43/80] Automatic changelog generation for PR #2887 [ci skip] --- html/changelogs/AutoChangeLog-pr-2887.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2887.yml diff --git a/html/changelogs/AutoChangeLog-pr-2887.yml b/html/changelogs/AutoChangeLog-pr-2887.yml new file mode 100644 index 0000000000..fd7d73182a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2887.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Mice spawning finds the station z level properly" From 9e18d9055a0388f318dca311b16b008153cbbb5e Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 04:47:39 -0500 Subject: [PATCH 44/80] [MIRROR] Removes the ability of non-interacting admin ghosts to steal and carry objects, pick pockets etc. (#2886) * Merge pull request #30890 from vuonojenmustaturska/adminghostfix Removes the ability of non-interacting admin ghosts to steal and carry objects, pick pockets etc. * Removes the ability of non-interacting admin ghosts to steal and carry objects, pick pockets etc. --- code/modules/mob/dead/observer/observer.dm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 9eb16d74e2..1022719805 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -711,9 +711,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp update_icon() /mob/dead/observer/canUseTopic(atom/movable/AM,be_close = FALSE) - if(check_rights(R_ADMIN, 0)) - return 1 - return + return IsAdminGhost(usr) /mob/dead/observer/is_literate() return 1 From b1ff46f22881867e5e0e4ad701867d17075fe0b1 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 04:47:41 -0500 Subject: [PATCH 45/80] Automatic changelog generation for PR #2886 [ci skip] --- html/changelogs/AutoChangeLog-pr-2886.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2886.yml diff --git a/html/changelogs/AutoChangeLog-pr-2886.yml b/html/changelogs/AutoChangeLog-pr-2886.yml new file mode 100644 index 0000000000..75edb3a080 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2886.yml @@ -0,0 +1,4 @@ +author: "Naksu" +delete-after: True +changes: + - bugfix: "Admin ghosts can no longer unintentionally make a mess of things." From 573a81a4d90ae846de567c50aeb4ef29f92c49f5 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Fri, 22 Sep 2017 09:31:39 -0500 Subject: [PATCH 46/80] Reapplies material componets --- code/__DEFINES/components.dm | 8 + code/_onclick/item_attack.dm | 9 +- .../{ => components}/material_container.dm | 107 +++++++--- code/datums/components/squeek.dm | 61 ++++++ code/game/machinery/autolathe.dm | 67 +++--- code/game/machinery/droneDispenser.dm | 33 +-- code/game/machinery/recycler.dm | 7 +- code/game/mecha/mech_fabricator.dm | 94 +++------ code/modules/clothing/shoes/bananashoes.dm | 38 +--- code/modules/mining/machine_processing.dm | 10 +- code/modules/mining/machine_redemption.dm | 18 +- code/modules/mining/mint.dm | 194 +++++++++--------- code/modules/research/circuitprinter.dm | 73 ++----- code/modules/research/experimentor.dm | 3 +- code/modules/research/protolathe.dm | 85 ++------ code/modules/research/rdconsole.dm | 51 +++-- sound/items/toysqueak1.ogg | Bin 0 -> 12956 bytes sound/items/toysqueak2.ogg | Bin 0 -> 14781 bytes sound/items/toysqueak3.ogg | Bin 0 -> 13778 bytes tgstation.dme | 3 +- 20 files changed, 416 insertions(+), 445 deletions(-) rename code/datums/{ => components}/material_container.dm (61%) create mode 100644 code/datums/components/squeek.dm create mode 100644 sound/items/toysqueak1.ogg create mode 100644 sound/items/toysqueak2.ogg create mode 100644 sound/items/toysqueak3.ogg diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 641454a799..94b9c84fb0 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -39,6 +39,14 @@ #define COMSIG_MOVABLE_COLLIDE "movable_collide" //from base of atom/movable/Collide(): (atom) #define COMSIG_MOVABLE_IMPACT "movable_impact" //from base of atom/movable/throw_impact(): (atom, throwingdatum) +// /obj/item signals +#define COMSIG_ITEM_ATTACK "item_attack" //from base of obj/item/attack(): (mob/living/target, mob/living/user) +#define COMSIG_ITEM_ATTACK_SELF "item_attack_self" //from base of obj/item/attack_self(): (mob) +#define COMSIG_ITEM_ATTACK_OBJ "item_attack_obj" //from base of obj/item/attack_obj(): (obj, mob) + +// /obj/item/clothing signals +#define COMSIG_SHOES_STEP_ACTION "shoes_step_action" //from base of obj/item/clothing/shoes/proc/step_action(): () + // /obj/machinery signals #define COMSIG_MACHINE_PROCESS "machine_process" //from machinery subsystem fire(): () #define COMSIG_MACHINE_PROCESS_ATMOS "machine_process_atmos" //from air subsystem process_atmos_machinery(): () \ No newline at end of file diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 5265a8e8ea..987818924f 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -9,17 +9,18 @@ // Called when the item is in the active hand, and clicked; alternately, there is an 'activate held object' verb or you can hit pagedown. /obj/item/proc/attack_self(mob/user) - return + SendSignal(COMSIG_ITEM_ATTACK_SELF, user) + interact(user) /obj/item/proc/pre_attackby(atom/A, mob/living/user, params) //do stuff before attackby! return TRUE //return FALSE to avoid calling attackby after this proc does stuff // No comment /atom/proc/attackby(obj/item/W, mob/user, params) - return + return SendSignal(COMSIG_PARENT_ATTACKBY, W, user, params) /obj/attackby(obj/item/I, mob/living/user, params) - return I.attack_obj(src, user) + return ..() || I.attack_obj(src, user) /mob/living/attackby(obj/item/I, mob/living/user, params) user.changeNext_move(CLICK_CD_MELEE) @@ -35,6 +36,7 @@ /obj/item/proc/attack(mob/living/M, mob/living/user) + SendSignal(COMSIG_ITEM_ATTACK, M, user) if(flags_1 & NOBLUDGEON_1) return if(!force) @@ -54,6 +56,7 @@ //the equivalent of the standard version of attack() but for object targets. /obj/item/proc/attack_obj(obj/O, mob/living/user) + SendSignal(COMSIG_ITEM_ATTACK_OBJ, O, user) if(flags_1 & NOBLUDGEON_1) return user.changeNext_move(CLICK_CD_MELEE) diff --git a/code/datums/material_container.dm b/code/datums/components/material_container.dm similarity index 61% rename from code/datums/material_container.dm rename to code/datums/components/material_container.dm index a8863c70bc..55504d47d5 100644 --- a/code/datums/material_container.dm +++ b/code/datums/components/material_container.dm @@ -5,22 +5,34 @@ amount - raw amount of the mineral this container is holding, calculated by the defined value MINERAL_MATERIAL_AMOUNT=2000. max_amount - max raw amount of mineral this container can hold. sheet_type - type of the mineral sheet the container handles, used for output. - owner - object that this container is being used by, used for output. + parent - object that this container is being used by, used for output. MAX_STACK_SIZE - size of a stack of mineral sheets. Constant. */ -/datum/material_container +/datum/component/material_container var/total_amount = 0 var/max_amount var/sheet_type - var/obj/owner - var/list/materials = list() + var/list/materials + var/show_on_examine + var/list/allowed_typecache + var/last_inserted_type + var/last_amount_inserted + var/last_insert_success + var/datum/callback/precondition //MAX_STACK_SIZE = 50 //MINERAL_MATERIAL_AMOUNT = 2000 -/datum/material_container/New(obj/O, list/mat_list, max_amt = 0) - owner = O +/datum/component/material_container/Initialize(list/mat_list, max_amt = 0, _show_on_examine = FALSE, list/allowed_types, datum/callback/_precondition) + materials = list() max_amount = max(0, max_amt) + show_on_examine = _show_on_examine + if(allowed_types) + allowed_typecache = typecacheof(allowed_types) + precondition = _precondition + + RegisterSignal(COMSIG_PARENT_ATTACKBY, .proc/OnAttackBy) + RegisterSignal(COMSIG_PARENT_EXAMINE, .proc/OnExamine) var/list/possible_mats = list() for(var/mat_type in subtypesof(/datum/material)) @@ -31,12 +43,47 @@ var/mat_path = possible_mats[id] materials[id] = new mat_path() -/datum/material_container/Destroy() - owner = null - return ..() +/datum/component/material_container/proc/OnExamine(mob/user) + for(var/I in materials) + var/datum/material/M = materials[I] + var/amt = amount(M.id) + if(amt) + to_chat(user, "It has [amt] units of [lowertext(M.name)] stored.") + +/datum/component/material_container/proc/OnAttackBy(obj/item/I, mob/living/user) + var/list/tc = allowed_typecache + if(user.a_intent == INTENT_HARM || (I.flags_2 & HOLOGRAM_2) || (tc && !is_type_in_typecache(I, tc))) + return FALSE + . = TRUE + last_insert_success = FALSE + var/datum/callback/pc = precondition + if(pc && !pc.Invoke()) + return + var/material_amount = get_item_material_amount(I) + if(!material_amount) + to_chat(user, "[I] does not contain sufficient amounts of metal or glass to be accepted by [parent].") + return + if(!has_space(material_amount)) + to_chat(user, "[parent] is full. Please remove metal or glass from [parent] in order to insert more.") + return + if(!user.temporarilyRemoveItemFromInventory(I)) + to_chat(user, "[I] is stuck to you and cannot be placed into [parent].") + return + var/inserted = insert_item(I) + if(inserted) + last_insert_success = TRUE + if(istype(I, /obj/item/stack)) + to_chat(user, "You insert [inserted] sheet[inserted>1 ? "s" : ""] into [parent].") + if(!QDELETED(I)) + user.put_in_active_hand(I) + else + to_chat(user, "You insert a material total of [inserted] into [parent].") + qdel(I) + else + user.put_in_active_hand(I) //For inserting an amount of material -/datum/material_container/proc/insert_amount(amt, id = null) +/datum/component/material_container/proc/insert_amount(amt, id = null) if(amt > 0 && has_space(amt)) var/total_amount_saved = total_amount if(id) @@ -52,7 +99,7 @@ return (total_amount - total_amount_saved) return 0 -/datum/material_container/proc/insert_stack(obj/item/stack/S, amt = 0) +/datum/component/material_container/proc/insert_stack(obj/item/stack/S, amt = 0) if(amt <= 0) return 0 if(amt > S.amount) @@ -67,10 +114,12 @@ return 0 insert_materials(S,amt) + last_inserted_type = S.type S.use(amt) + last_amount_inserted = amt return amt -/datum/material_container/proc/insert_item(obj/item/I, multiplier = 1) +/datum/component/material_container/proc/insert_item(obj/item/I, multiplier = 1) if(!I) return 0 if(istype(I, /obj/item/stack)) @@ -82,9 +131,11 @@ return 0 insert_materials(I, multiplier) + last_inserted_type = I.type + last_amount_inserted = material_amount return material_amount -/datum/material_container/proc/insert_materials(obj/item/I, multiplier = 1) //for internal usage only +/datum/component/material_container/proc/insert_materials(obj/item/I, multiplier = 1) //for internal usage only var/datum/material/M for(var/MAT in materials) M = materials[MAT] @@ -93,7 +144,7 @@ //For consuming material //mats is a list of types of material to use and the corresponding amounts, example: list(MAT_METAL=100, MAT_GLASS=200) -/datum/material_container/proc/use_amount(list/mats, multiplier=1) +/datum/component/material_container/proc/use_amount(list/mats, multiplier=1) if(!mats || !mats.len) return 0 @@ -112,7 +163,7 @@ return total_amount_save - total_amount -/datum/material_container/proc/use_amount_type(amt, id) +/datum/component/material_container/proc/use_amount_type(amt, id) var/datum/material/M = materials[id] if(M) if(M.amount >= amt) @@ -121,7 +172,7 @@ return amt return 0 -/datum/material_container/proc/can_use_amount(amt, id, list/mats) +/datum/component/material_container/proc/can_use_amount(amt, id, list/mats) if(amt && id) var/datum/material/M = materials[id] if(M && M.amount >= amt) @@ -136,7 +187,7 @@ return FALSE //For spawning mineral sheets; internal use only -/datum/material_container/proc/retrieve(sheet_amt, datum/material/M, target = null) +/datum/component/material_container/proc/retrieve(sheet_amt, datum/material/M, target = null) if(!M.sheet_type) return 0 if(sheet_amt > 0) @@ -144,12 +195,12 @@ sheet_amt = round(M.amount / MINERAL_MATERIAL_AMOUNT) var/count = 0 while(sheet_amt > MAX_STACK_SIZE) - new M.sheet_type(get_turf(owner), MAX_STACK_SIZE) + new M.sheet_type(get_turf(parent), MAX_STACK_SIZE) count += MAX_STACK_SIZE use_amount_type(sheet_amt * MINERAL_MATERIAL_AMOUNT, M.id) sheet_amt -= MAX_STACK_SIZE if(round((sheet_amt * MINERAL_MATERIAL_AMOUNT) / MINERAL_MATERIAL_AMOUNT)) - var/obj/item/stack/sheet/s = new M.sheet_type(get_turf(owner), sheet_amt) + var/obj/item/stack/sheet/s = new M.sheet_type(get_turf(parent), sheet_amt) if(target) s.forceMove(target) count += sheet_amt @@ -157,15 +208,15 @@ return count return 0 -/datum/material_container/proc/retrieve_sheets(sheet_amt, id, target = null) +/datum/component/material_container/proc/retrieve_sheets(sheet_amt, id, target = null) if(materials[id]) return retrieve(sheet_amt, materials[id], target) return 0 -/datum/material_container/proc/retrieve_amount(amt, id, target) +/datum/component/material_container/proc/retrieve_amount(amt, id, target) return retrieve_sheets(amount2sheet(amt), id, target) -/datum/material_container/proc/retrieve_all(target = null) +/datum/component/material_container/proc/retrieve_all(target = null) var/result = 0 var/datum/material/M for(var/MAT in materials) @@ -173,10 +224,10 @@ result += retrieve_sheets(amount2sheet(M.amount), MAT, target) return result -/datum/material_container/proc/has_space(amt = 0) +/datum/component/material_container/proc/has_space(amt = 0) return (total_amount + amt) <= max_amount -/datum/material_container/proc/has_materials(list/mats, multiplier=1) +/datum/component/material_container/proc/has_materials(list/mats, multiplier=1) if(!mats || !mats.len) return 0 @@ -187,23 +238,23 @@ return 0 return 1 -/datum/material_container/proc/amount2sheet(amt) +/datum/component/material_container/proc/amount2sheet(amt) if(amt >= MINERAL_MATERIAL_AMOUNT) return round(amt / MINERAL_MATERIAL_AMOUNT) return 0 -/datum/material_container/proc/sheet2amount(sheet_amt) +/datum/component/material_container/proc/sheet2amount(sheet_amt) if(sheet_amt > 0) return sheet_amt * MINERAL_MATERIAL_AMOUNT return 0 -/datum/material_container/proc/amount(id) +/datum/component/material_container/proc/amount(id) var/datum/material/M = materials[id] return M ? M.amount : 0 //returns the amount of material relevant to this container; //if this container does not support glass, any glass in 'I' will not be taken into account -/datum/material_container/proc/get_item_material_amount(obj/item/I) +/datum/component/material_container/proc/get_item_material_amount(obj/item/I) if(!istype(I)) return 0 var/material_amount = 0 diff --git a/code/datums/components/squeek.dm b/code/datums/components/squeek.dm new file mode 100644 index 0000000000..40fd0af598 --- /dev/null +++ b/code/datums/components/squeek.dm @@ -0,0 +1,61 @@ +/datum/component/squeak + var/static/list/default_squeak_sounds = list('sound/items/toysqueak1.ogg'=1, 'sound/items/toysqueak2.ogg'=1, 'sound/items/toysqueak3.ogg'=1) + var/list/override_squeak_sounds + var/squeak_chance = 100 + var/volume = 30 + + // This is so shoes don't squeak every step + var/steps = 0 + var/step_delay = 1 + + // This is to stop squeak spam from inhand usage + var/last_use = 0 + var/use_delay = 20 + +/datum/component/squeak/Initialize(custom_sounds, volume_override, chance_override, step_delay_override, use_delay_override) + if(custom_sounds) + override_squeak_sounds = custom_sounds + if(chance_override) + squeak_chance = chance_override + if(volume_override) + volume = volume_override + if(step_delay_override) + step_delay = step_delay_override + if(use_delay_override) + use_delay = use_delay_override + + if(istype(parent, /atom)) + RegisterSignal(COMSIG_ATOM_BLOB_ACT, .proc/play_squeak) + RegisterSignal(COMSIG_ATOM_HULK_ATTACK, .proc/play_squeak) + RegisterSignal(COMSIG_PARENT_ATTACKBY, .proc/play_squeak) + if(istype(parent, /atom/movable)) + RegisterSignal(COMSIG_MOVABLE_CROSSED, .proc/play_squeak) + RegisterSignal(COMSIG_MOVABLE_COLLIDE, .proc/play_squeak) + RegisterSignal(COMSIG_MOVABLE_IMPACT, .proc/play_squeak) + if(istype(parent, /obj/item)) + RegisterSignal(COMSIG_ITEM_ATTACK, .proc/play_squeak) + RegisterSignal(COMSIG_ITEM_ATTACK_SELF, .proc/use_squeak) + RegisterSignal(COMSIG_ITEM_ATTACK_OBJ, .proc/play_squeak) + if(istype(parent, /obj/item/clothing/shoes)) + RegisterSignal(COMSIG_SHOES_STEP_ACTION, .proc/step_squeak) + else + RegisterSignal(COMSIG_ATOM_ENTERED, .proc/play_squeak) + +/datum/component/squeak/proc/play_squeak() + if(prob(squeak_chance)) + if(!override_squeak_sounds) + playsound(parent, pickweight(default_squeak_sounds), volume, 1, -1) + else + playsound(parent, pickweight(override_squeak_sounds), volume, 1, -1) + +/datum/component/squeak/proc/step_squeak() + if(steps > step_delay) + play_squeak() + steps = 0 + else + steps++ + +/datum/component/squeak/proc/use_squeak() + if(last_use + use_delay < world.time) + last_use = world.time + play_squeak() \ No newline at end of file diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index c185a8f734..9fa53765ed 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -32,8 +32,6 @@ var/selected_category var/screen = 1 - var/datum/material_container/materials - var/list/categories = list( "Tools", "Electronics", @@ -48,15 +46,15 @@ ) /obj/machinery/autolathe/Initialize() - materials = new /datum/material_container(src, list(MAT_METAL, MAT_GLASS)) + AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS)) + . = ..() + wires = new /datum/wires/autolathe(src) files = new /datum/research/autolathe(src) matching_designs = list() - return ..() /obj/machinery/autolathe/Destroy() QDEL_NULL(wires) - QDEL_NULL(materials) return ..() /obj/machinery/autolathe/interact(mob/user) @@ -81,6 +79,7 @@ popup.open() /obj/machinery/autolathe/on_deconstruction() + GET_COMPONENT(materials, /datum/component/material_container) materials.retrieve_all() /obj/machinery/autolathe/attackby(obj/item/O, mob/user, params) @@ -123,42 +122,26 @@ busy = FALSE return 1 - if(O.flags_2 & HOLOGRAM_2) - return 1 + return ..() - var/material_amount = materials.get_item_material_amount(O) - if(!material_amount) - to_chat(user, "This object does not contain sufficient amounts of metal or glass to be accepted by the autolathe.") - return 1 - if(!materials.has_space(material_amount)) - to_chat(user, "The autolathe is full. Please remove metal or glass from the autolathe in order to insert more.") - return 1 - if(!user.temporarilyRemoveItemFromInventory(O)) - to_chat(user, "\The [O] is stuck to you and cannot be placed into the autolathe.") - return 1 - - busy = TRUE - var/inserted = materials.insert_item(O) - if(inserted) - if(istype(O, /obj/item/stack)) - if (O.materials[MAT_METAL]) - flick("autolathe_o",src)//plays metal insertion animation - if (O.materials[MAT_GLASS]) - flick("autolathe_r",src)//plays glass insertion animation - to_chat(user, "You insert [inserted] sheet[inserted>1 ? "s" : ""] to the autolathe.") - use_power(inserted*100) - if(!QDELETED(O)) - user.put_in_active_hand(O) +/obj/machinery/mecha_part_fabricator/ComponentActivated(datum/component/C) + ..() + if(istype(C, /datum/component/material_container)) + var/datum/component/material_container/M = C + if(!M.last_insert_success) + return + var/lit = M.last_inserted_type + if(ispath(lit, /obj/item/ore/bluespace_crystal)) + use_power(max(500,M.last_amount_inserted/10)) else - to_chat(user, "You insert a material total of [inserted] to the autolathe.") - use_power(max(500,inserted/10)) - qdel(O) - else - user.put_in_active_hand(O) - - busy = FALSE - updateUsrDialog() - return 1 + var/obj/item/stack/S = lit + var/list/initmats = initial(S.materials) + if (initmats[MAT_METAL]) + flick("autolathe_o",src)//plays metal insertion animation + if (initmats[MAT_GLASS]) + flick("autolathe_r",src)//plays glass insertion animation + use_power(M.last_amount_inserted*100) + updateUsrDialog() /obj/machinery/autolathe/Topic(href, href_list) if(..()) @@ -193,6 +176,7 @@ var/power = max(2000, (metal_cost+glass_cost)*multiplier/5) + GET_COMPONENT(materials, /datum/component/material_container) if((materials.amount(MAT_METAL) >= metal_cost*multiplier*coeff) && (materials.amount(MAT_GLASS) >= glass_cost*multiplier*coeff)) busy = TRUE use_power(power) @@ -246,6 +230,7 @@ var/T = 0 for(var/obj/item/stock_parts/matter_bin/MB in component_parts) T += MB.rating*75000 + GET_COMPONENT(materials, /datum/component/material_container) materials.max_amount = T T=1.2 for(var/obj/item/stock_parts/manipulator/M in component_parts) @@ -294,6 +279,7 @@ dat += "[D.name]" if(ispath(D.build_path, /obj/item/stack)) + GET_COMPONENT(materials, /datum/component/material_container) var/max_multiplier = min(D.maxstack, D.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/D.materials[MAT_METAL]):INFINITY,D.materials[MAT_GLASS]?round(materials.amount(MAT_GLASS)/D.materials[MAT_GLASS]):INFINITY) if (max_multiplier>10 && !disabled) dat += " x10" @@ -325,6 +311,7 @@ dat += "[D.name]" if(ispath(D.build_path, /obj/item/stack)) + GET_COMPONENT(materials, /datum/component/material_container) var/max_multiplier = min(D.maxstack, D.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/D.materials[MAT_METAL]):INFINITY,D.materials[MAT_GLASS]?round(materials.amount(MAT_GLASS)/D.materials[MAT_GLASS]):INFINITY) if (max_multiplier>10 && !disabled) dat += " x10" @@ -339,6 +326,7 @@ return dat /obj/machinery/autolathe/proc/materials_printout() + GET_COMPONENT(materials, /datum/component/material_container) var/dat = "Total amount: [materials.total_amount] / [materials.max_amount] cm3
" for(var/mat_id in materials.materials) var/datum/material/M = materials.materials[mat_id] @@ -351,6 +339,7 @@ var/coeff = (ispath(D.build_path, /obj/item/stack) ? 1 : prod_coeff) + GET_COMPONENT(materials, /datum/component/material_container) if(D.materials[MAT_METAL] && (materials.amount(MAT_METAL) < (D.materials[MAT_METAL] * coeff * amount))) return 0 if(D.materials[MAT_GLASS] && (materials.amount(MAT_GLASS) < (D.materials[MAT_GLASS] * coeff * amount))) diff --git a/code/game/machinery/droneDispenser.dm b/code/game/machinery/droneDispenser.dm index 2d848d95ed..5d7be7fbd8 100644 --- a/code/game/machinery/droneDispenser.dm +++ b/code/game/machinery/droneDispenser.dm @@ -22,7 +22,6 @@ var/icon_recharging = "recharge" var/icon_creating = "make" - var/datum/material_container/materials var/list/using_materials var/starting_amount = 0 var/metal_cost = 1000 @@ -55,14 +54,10 @@ /obj/machinery/droneDispenser/Initialize() . = ..() - materials = new(src, list(MAT_METAL, MAT_GLASS), MINERAL_MATERIAL_AMOUNT*MAX_STACK_SIZE*2) + var/datum/component/material_container/materials = AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS), MINERAL_MATERIAL_AMOUNT * MAX_STACK_SIZE * 2, TRUE) materials.insert_amount(starting_amount) using_materials = list(MAT_METAL=metal_cost, MAT_GLASS=glass_cost) -/obj/machinery/droneDispenser/Destroy() - QDEL_NULL(materials) - return ..() - /obj/machinery/droneDispenser/preloaded starting_amount = 5000 @@ -148,10 +143,6 @@ ..() if((mode == DRONE_RECHARGING) && !stat && recharging_text) to_chat(user, "[recharging_text]") - if(metal_cost) - to_chat(user, "It has [materials.amount(MAT_METAL)] units of metal stored.") - if(glass_cost) - to_chat(user, "It has [materials.amount(MAT_GLASS)] units of glass stored.") /obj/machinery/droneDispenser/power_change() ..() @@ -166,6 +157,7 @@ if((stat & (NOPOWER|BROKEN)) || !anchored) return + GET_COMPONENT(materials, /datum/component/material_container) if(!materials.has_materials(using_materials)) return // We require more minerals @@ -232,25 +224,8 @@ icon_state = icon_on /obj/machinery/droneDispenser/attackby(obj/item/O, mob/living/user) - if(istype(O, /obj/item/stack)) - if(!O.materials[MAT_METAL] && !O.materials[MAT_GLASS]) - return ..() - if(!metal_cost && !glass_cost) - to_chat(user, "There isn't a place to insert [O]!") - return - var/obj/item/stack/sheets = O - if(!user.canUnEquip(sheets)) - to_chat(user, "[O] is stuck to your hand, you can't get it off!") - return - - var/used = materials.insert_stack(sheets, sheets.amount) - - if(used) - to_chat(user, "You insert [used] sheet[used > 1 ? "s" : ""] into [src].") - else - to_chat(user, "The [src] isn't accepting the [sheets].") - - else if(istype(O, /obj/item/crowbar)) + if(istype(O, /obj/item/crowbar)) + GET_COMPONENT(materials, /datum/component/material_container) materials.retrieve_all() playsound(loc, O.usesound, 50, 1) to_chat(user, "You retrieve the materials from [src].") diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index b4bee2bdae..fbe02dca37 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -14,15 +14,14 @@ var/blood = 0 var/eat_dir = WEST var/amount_produced = 50 - var/datum/material_container/materials var/crush_damage = 1000 var/eat_victim_items = TRUE var/item_recycle_sound = 'sound/items/welder.ogg' /obj/machinery/recycler/Initialize() - materials = new /datum/material_container(src, list(MAT_METAL, MAT_GLASS, MAT_PLASMA, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM)) + AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_PLASMA, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM)) + . = ..() update_icon() - return ..() /obj/machinery/recycler/RefreshParts() var/amt_made = 0 @@ -32,6 +31,7 @@ mat_mod *= 50000 for(var/obj/item/stock_parts/manipulator/M in component_parts) amt_made = 12.5 * M.rating //% of materials salvaged + GET_COMPONENT(materials, /datum/component/material_container) materials.max_amount = mat_mod amount_produced = min(50, amt_made) + 50 @@ -126,6 +126,7 @@ /obj/machinery/recycler/proc/recycle_item(obj/item/I) I.loc = src.loc + GET_COMPONENT(materials, /datum/component/material_container) var/material_amount = materials.get_item_material_amount(I) if(!material_amount) qdel(I) diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 79c4971665..8efc14d966 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -12,7 +12,6 @@ circuit = /obj/item/circuitboard/machine/mechfab var/time_coeff = 1 var/component_coeff = 1 - var/datum/material_container/materials var/datum/research/files var/sync = 0 var/part_set @@ -36,9 +35,11 @@ ) /obj/machinery/mecha_part_fabricator/Initialize() + AddComponent(/datum/component/material_container, + list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE), + FALSE, list(/obj/item/stack, /obj/item/ore/bluespace_crystal), CALLBACK(src, .proc/is_insertion_ready)) + . = ..() files = new /datum/research(src) //Setup the research data holder. - materials = new(src, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE)) - return ..() /obj/machinery/mecha_part_fabricator/RefreshParts() var/T = 0 @@ -46,6 +47,7 @@ //maximum stocking amount (default 300000, 600000 at T4) for(var/obj/item/stock_parts/matter_bin/M in component_parts) T += M.rating + GET_COMPONENT(materials, /datum/component/material_container) materials.max_amount = (200000 + (T*50000)) //resources adjustment coefficient (1 -> 0.85 -> 0.7 -> 0.55) @@ -113,6 +115,7 @@ /obj/machinery/mecha_part_fabricator/proc/output_available_resources() var/output + GET_COMPONENT(materials, /datum/component/material_container) for(var/mat_id in materials.materials) var/datum/material/M = materials.materials[mat_id] output += "[M.name]: [M.amount] cm³" @@ -133,6 +136,7 @@ /obj/machinery/mecha_part_fabricator/proc/check_resources(datum/design/D) if(D.reagents_list.len) // No reagents storage - no reagent designs. return 0 + GET_COMPONENT(materials, /datum/component/material_container) if(materials.has_materials(get_resources_w_coeff(D))) return 1 return 0 @@ -142,6 +146,7 @@ desc = "It's building \a [initial(D.name)]." var/list/res_coef = get_resources_w_coeff(D) + GET_COMPONENT(materials, /datum/component/material_container) materials.use_amount(res_coef) add_overlay("fab-active") use_power = ACTIVE_POWER_USE @@ -398,15 +403,34 @@ break if(href_list["remove_mat"] && href_list["material"]) + GET_COMPONENT(materials, /datum/component/material_container) materials.retrieve_sheets(text2num(href_list["remove_mat"]), href_list["material"]) updateUsrDialog() return /obj/machinery/mecha_part_fabricator/on_deconstruction() + GET_COMPONENT(materials, /datum/component/material_container) materials.retrieve_all() ..() +/obj/machinery/mecha_part_fabricator/ComponentActivated(datum/component/C) + ..() + if(istype(C, /datum/component/material_container)) + var/datum/component/material_container/M = C + if(!M.last_insert_success) + return + var/lit = M.last_inserted_type + var/stack_name + if(ispath(lit, /obj/item/ore/bluespace_crystal)) + stack_name = "bluespace" + else + var/obj/item/stack/S = lit + stack_name = material2name(initial(S.materials)[1]) + add_overlay("fab-load-[stack_name]") + addtimer(CALLBACK(src, /atom/proc/cut_overlay, "fab-load-[stack_name]"), 10) + updateUsrDialog() + /obj/machinery/mecha_part_fabricator/attackby(obj/item/W, mob/user, params) if(default_deconstruction_screwdriver(user, "fab-o", "fab-idle", W)) return 1 @@ -417,55 +441,7 @@ if(default_deconstruction_crowbar(W)) return 1 - if(istype(W, /obj/item/stack/sheet)) - - if(!is_insertion_ready(user)) - return 1 - - var/material_amount = materials.get_item_material_amount(W) - - if(!try_insert(user, W, material_amount)) - return 1 - - var/inserted = materials.insert_item(W) - if(inserted) - to_chat(user, "You insert [inserted] sheet\s into [src].") - if(W && W.materials.len) - if(!QDELETED(W)) - user.put_in_active_hand(W) - var/mat_overlay = "fab-load-[material2name(W.materials[1])]" - add_overlay(mat_overlay) - sleep(10) - if(!QDELETED(src)) - cut_overlay(mat_overlay) //No matter what the overlay shall still be deleted - - updateUsrDialog() - - else if(istype(W, /obj/item/ore/bluespace_crystal)) - - if(!is_insertion_ready(user)) - return 1 - - var/material_amount = materials.get_item_material_amount(W) - - if(!try_insert(user, W, material_amount)) - return 1 - - var/inserted = materials.insert_item(W) - if(inserted) - to_chat(user, "You add [W] to the [src].") - if(W && W.materials.len) - qdel(W) - var/mat_overlay = "fab-load-bluespace" - add_overlay(mat_overlay) - sleep(10) - if(!QDELETED(src)) - cut_overlay(mat_overlay) - - updateUsrDialog() - - else - return ..() + return ..() /obj/machinery/mecha_part_fabricator/proc/material2name(ID) return copytext(ID,2) @@ -479,17 +455,3 @@ return FALSE return TRUE - - -/obj/machinery/mecha_part_fabricator/proc/try_insert(mob/user, obj/item/I, material_amount) - if(!material_amount) - to_chat(user, "This object does not contain sufficient amounts of materials to be accepted by [src].") - return FALSE - if(!materials.has_space(material_amount)) - to_chat(user, "\The [src] is full. Please remove some materials from [src] in order to insert more.") - return FALSE - if(!user.temporarilyRemoveItemFromInventory(I)) - to_chat(user, "\The [I] is stuck to you and cannot be placed into [src].") - return FALSE - - return TRUE \ No newline at end of file diff --git a/code/modules/clothing/shoes/bananashoes.dm b/code/modules/clothing/shoes/bananashoes.dm index e10f089eb8..bf3a1f28e0 100644 --- a/code/modules/clothing/shoes/bananashoes.dm +++ b/code/modules/clothing/shoes/bananashoes.dm @@ -5,59 +5,39 @@ desc = "Lost prototype of advanced clown tech. Powered by bananium, these shoes leave a trail of chaos in their wake." icon_state = "clown_prototype_off" var/on = FALSE - var/datum/material_container/bananium actions_types = list(/datum/action/item_action/toggle) -/obj/item/clothing/shoes/clown_shoes/banana_shoes/New() - ..() - bananium = new/datum/material_container(src,list(MAT_BANANIUM),200000) +/obj/item/clothing/shoes/clown_shoes/banana_shoes/Initialize() + . = ..() + AddComponent(/datum/component/material_container, list(MAT_BANANIUM), 200000, TRUE) + AddComponent(/datum/component/squeak, list('sound/items/bikehorn.ogg'=1), 75) /obj/item/clothing/shoes/clown_shoes/banana_shoes/step_action() + . = ..() if(on) - if(footstep > 1)//honks when its on - playsound(src, 'sound/items/bikehorn.ogg', 75, 1) - footstep = 0 - else - footstep++ - new/obj/item/grown/bananapeel/specialpeel(get_step(src,turn(usr.dir, 180))) //honk + GET_COMPONENT(bananium, /datum/component/material_container) bananium.use_amount_type(100, MAT_BANANIUM) if(bananium.amount(MAT_BANANIUM) < 100) on = !on flags_1 &= ~NOSLIP_1 update_icon() to_chat(loc, "You ran out of bananium!") - else - ..() /obj/item/clothing/shoes/clown_shoes/banana_shoes/attack_self(mob/user) + GET_COMPONENT(bananium, /datum/component/material_container) var/sheet_amount = bananium.retrieve_all() if(sheet_amount) to_chat(user, "You retrieve [sheet_amount] sheets of bananium from the prototype shoes.") else to_chat(user, "You cannot retrieve any bananium from the prototype shoes.") -/obj/item/clothing/shoes/clown_shoes/banana_shoes/attackby(obj/item/O, mob/user, params) - if(!bananium.get_item_material_amount(O)) - to_chat(user, "This item has no bananium!") - return - if(!user.dropItemToGround(O)) - to_chat(user, "You can't drop [O]!") - return - - var/bananium_amount = bananium.insert_item(O) - if(bananium_amount) - to_chat(user, "You insert [O] into the prototype shoes.") - qdel(O) - else - to_chat(user, "You are unable to insert more bananium!") - /obj/item/clothing/shoes/clown_shoes/banana_shoes/examine(mob/user) ..() - var/ban_amt = bananium.amount(MAT_BANANIUM) - to_chat(user, "The shoes are [on ? "enabled" : "disabled"]. There is [ban_amt ? ban_amt : "no"] bananium left.") + to_chat(user, "The shoes are [on ? "enabled" : "disabled"]") /obj/item/clothing/shoes/clown_shoes/banana_shoes/ui_action_click(mob/user) + GET_COMPONENT(bananium, /datum/component/material_container) if(bananium.amount(MAT_BANANIUM)) on = !on update_icon() diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index 8428036860..0927a0ba88 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -66,7 +66,6 @@ density = TRUE anchored = TRUE var/obj/machinery/mineral/CONSOLE = null - var/datum/material_container/materials var/on = FALSE var/selected_material = MAT_METAL var/selected_alloy = null @@ -75,12 +74,11 @@ /obj/machinery/mineral/processing_unit/Initialize() . = ..() proximity_monitor = new(src, 1) - materials = new(src, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE),INFINITY) + AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE), INFINITY) files = new /datum/research/smelter(src) /obj/machinery/mineral/processing_unit/Destroy() CONSOLE = null - QDEL_NULL(materials) QDEL_NULL(files) return ..() @@ -89,6 +87,7 @@ process_ore(AM) /obj/machinery/mineral/processing_unit/proc/process_ore(obj/item/ore/O) + GET_COMPONENT(materials, /datum/component/material_container) var/material_amount = materials.get_item_material_amount(O) if(!materials.has_space(material_amount)) unload_mineral(O) @@ -100,6 +99,7 @@ /obj/machinery/mineral/processing_unit/proc/get_machine_data() var/dat = "Smelter control console

" + GET_COMPONENT(materials, /datum/component/material_container) for(var/mat_id in materials.materials) var/datum/material/M = materials.materials[mat_id] dat += "[M.name]: [M.amount] cm³" @@ -165,6 +165,7 @@ continue*/ /obj/machinery/mineral/processing_unit/proc/smelt_ore() + GET_COMPONENT(materials, /datum/component/material_container) var/datum/material/mat = materials.materials[selected_material] if(mat) var/sheets_to_remove = (mat.amount >= (MINERAL_MATERIAL_AMOUNT * SMELT_AMOUNT) ) ? SMELT_AMOUNT : round(mat.amount / MINERAL_MATERIAL_AMOUNT) @@ -187,6 +188,7 @@ on = FALSE return + GET_COMPONENT(materials, /datum/component/material_container) materials.use_amount(alloy.materials, amount) generate_mineral(alloy.build_path) @@ -197,6 +199,7 @@ var/build_amount = SMELT_AMOUNT + GET_COMPONENT(materials, /datum/component/material_container) for(var/mat_id in D.materials) var/M = D.materials[mat_id] @@ -214,6 +217,7 @@ unload_mineral(O) /obj/machinery/mineral/processing_unit/on_deconstruction() + GET_COMPONENT(materials, /datum/component/material_container) materials.retrieve_all() ..() diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm index abead3ab9a..38e02474f4 100644 --- a/code/modules/mining/machine_redemption.dm +++ b/code/modules/mining/machine_redemption.dm @@ -22,17 +22,15 @@ var/list/ore_values = list(MAT_GLASS = 1, MAT_METAL = 1, MAT_PLASMA = 15, MAT_SILVER = 16, MAT_GOLD = 18, MAT_TITANIUM = 30, MAT_URANIUM = 30, MAT_DIAMOND = 50, MAT_BLUESPACE = 50, MAT_BANANIUM = 60) var/message_sent = FALSE var/list/ore_buffer = list() - var/datum/material_container/materials var/datum/research/files var/obj/item/disk/design_disk/inserted_disk /obj/machinery/mineral/ore_redemption/Initialize() . = ..() - materials = new(src, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE),INFINITY) + AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE),INFINITY) files = new /datum/research/smelter(src) /obj/machinery/mineral/ore_redemption/Destroy() - QDEL_NULL(materials) QDEL_NULL(files) return ..() @@ -57,6 +55,7 @@ if(O && O.refined_type) points += O.points * point_upgrade + GET_COMPONENT(materials, /datum/component/material_container) var/material_amount = materials.get_item_material_amount(O) if(!material_amount) @@ -75,6 +74,7 @@ var/build_amount = 0 + GET_COMPONENT(materials, /datum/component/material_container) for(var/mat_id in D.materials) var/M = D.materials[mat_id] var/datum/material/redemption_mat = materials.materials[mat_id] @@ -110,6 +110,7 @@ var/has_minerals = FALSE + GET_COMPONENT(materials, /datum/component/material_container) for(var/mat_id in materials.materials) var/datum/material/M = materials.materials[mat_id] var/mineral_amount = M.amount / MINERAL_MATERIAL_AMOUNT @@ -148,6 +149,7 @@ /obj/machinery/mineral/ore_redemption/attackby(obj/item/W, mob/user, params) if(exchange_parts(user, W)) return + GET_COMPONENT(materials, /datum/component/material_container) if(default_pry_open(W)) materials.retrieve_all() return @@ -181,16 +183,10 @@ if(user.transferItemToLoc(W, src)) inserted_disk = W return TRUE - - if(istype(W, /obj/item/stack/sheet)) - var/obj/item/stack/sheet/S = W - var/inserted = materials.insert_stack(S, S.amount) - to_chat(user, "You add [inserted] [S] sheets to \the [src].") - return - return ..() /obj/machinery/mineral/ore_redemption/on_deconstruction() + GET_COMPONENT(materials, /datum/component/material_container) materials.retrieve_all() ..() @@ -213,6 +209,7 @@ data["claimedPoints"] = inserted_id.mining_points data["materials"] = list() + GET_COMPONENT(materials, /datum/component/material_container) for(var/mat_id in materials.materials) var/datum/material/M = materials.materials[mat_id] var/sheet_amount = M.amount ? M.amount / MINERAL_MATERIAL_AMOUNT : "0" @@ -236,6 +233,7 @@ /obj/machinery/mineral/ore_redemption/ui_act(action, params) if(..()) return + GET_COMPONENT(materials, /datum/component/material_container) switch(action) if("Eject") if(!inserted_id) diff --git a/code/modules/mining/mint.dm b/code/modules/mining/mint.dm index e48db7c6fd..1a4e4c5ed1 100644 --- a/code/modules/mining/mint.dm +++ b/code/modules/mining/mint.dm @@ -1,107 +1,103 @@ -/**********************Mint**************************/ - - -/obj/machinery/mineral/mint - name = "coin press" - icon = 'icons/obj/economy.dmi' - icon_state = "coinpress0" +/**********************Mint**************************/ + + +/obj/machinery/mineral/mint + name = "coin press" + icon = 'icons/obj/economy.dmi' + icon_state = "coinpress0" density = TRUE anchored = TRUE - var/datum/material_container/materials - var/newCoins = 0 //how many coins the machine made in it's last load + var/newCoins = 0 //how many coins the machine made in it's last load var/processing = FALSE - var/chosen = MAT_METAL //which material will be used to make coins - var/coinsToProduce = 10 - speed_process = 1 - - + var/chosen = MAT_METAL //which material will be used to make coins + var/coinsToProduce = 10 + speed_process = 1 + + /obj/machinery/mineral/mint/Initialize() . = ..() - materials = new /datum/material_container(src, - list(MAT_METAL, MAT_PLASMA, MAT_SILVER, MAT_GOLD, MAT_URANIUM, MAT_DIAMOND, MAT_BANANIUM), - max_amt = MINERAL_MATERIAL_AMOUNT*50) - -/obj/machinery/mineral/mint/Destroy() - QDEL_NULL(materials) - return ..() - -/obj/machinery/mineral/mint/process() - var/turf/T = get_step(src, input_dir) - if(!T) - return - - for(var/obj/item/stack/sheet/O in T) - materials.insert_stack(O, O.amount) - -/obj/machinery/mineral/mint/attack_hand(mob/user) - var/dat = "Coin Press
" - - for(var/mat_id in materials.materials) - var/datum/material/M = materials.materials[mat_id] - if(!M.amount && chosen != mat_id) - continue - dat += "
[M.name] amount: [M.amount] cm3 " - if (chosen == mat_id) - dat += "Chosen" - else - dat += "Choose" - - var/datum/material/M = materials.materials[chosen] - - dat += "

Will produce [coinsToProduce] [lowertext(M.name)] coins if enough materials are available.
" - dat += "-10 " - dat += "-5 " - dat += "-1 " - dat += "+1 " - dat += "+5 " - dat += "+10 " - - dat += "

In total this machine produced [newCoins] coins." - dat += "
Make coins" - user << browse(dat, "window=mint") - -/obj/machinery/mineral/mint/Topic(href, href_list) - if(..()) - return - usr.set_machine(src) - src.add_fingerprint(usr) - if(processing==1) - to_chat(usr, "The machine is processing.") - return - if(href_list["choose"]) - if(materials.materials[href_list["choose"]]) - chosen = href_list["choose"] - if(href_list["chooseAmt"]) - coinsToProduce = Clamp(coinsToProduce + text2num(href_list["chooseAmt"]), 0, 1000) - if(href_list["makeCoins"]) - var/temp_coins = coinsToProduce + AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_PLASMA, MAT_SILVER, MAT_GOLD, MAT_URANIUM, MAT_DIAMOND, MAT_BANANIUM), MINERAL_MATERIAL_AMOUNT * 50) + +/obj/machinery/mineral/mint/process() + var/turf/T = get_step(src, input_dir) + if(!T) + return + + GET_COMPONENT(materials, /datum/component/material_container) + for(var/obj/item/stack/sheet/O in T) + materials.insert_stack(O, O.amount) + +/obj/machinery/mineral/mint/attack_hand(mob/user) + var/dat = "Coin Press
" + + GET_COMPONENT(materials, /datum/component/material_container) + for(var/mat_id in materials.materials) + var/datum/material/M = materials.materials[mat_id] + if(!M.amount && chosen != mat_id) + continue + dat += "
[M.name] amount: [M.amount] cm3 " + if (chosen == mat_id) + dat += "Chosen" + else + dat += "Choose" + + var/datum/material/M = materials.materials[chosen] + + dat += "

Will produce [coinsToProduce] [lowertext(M.name)] coins if enough materials are available.
" + dat += "-10 " + dat += "-5 " + dat += "-1 " + dat += "+1 " + dat += "+5 " + dat += "+10 " + + dat += "

In total this machine produced [newCoins] coins." + dat += "
Make coins" + user << browse(dat, "window=mint") + +/obj/machinery/mineral/mint/Topic(href, href_list) + if(..()) + return + usr.set_machine(src) + src.add_fingerprint(usr) + if(processing==1) + to_chat(usr, "The machine is processing.") + return + GET_COMPONENT(materials, /datum/component/material_container) + if(href_list["choose"]) + if(materials.materials[href_list["choose"]]) + chosen = href_list["choose"] + if(href_list["chooseAmt"]) + coinsToProduce = Clamp(coinsToProduce + text2num(href_list["chooseAmt"]), 0, 1000) + if(href_list["makeCoins"]) + var/temp_coins = coinsToProduce processing = TRUE - icon_state = "coinpress1" - var/coin_mat = MINERAL_MATERIAL_AMOUNT * 0.2 - var/datum/material/M = materials.materials[chosen] - if(!M || !M.coin_type) - updateUsrDialog() - return - - while(coinsToProduce > 0 && materials.use_amount_type(coin_mat, chosen)) - create_coins(M.coin_type) - coinsToProduce-- - newCoins++ - src.updateUsrDialog() - sleep(5) - - icon_state = "coinpress0" + icon_state = "coinpress1" + var/coin_mat = MINERAL_MATERIAL_AMOUNT * 0.2 + var/datum/material/M = materials.materials[chosen] + if(!M || !M.coin_type) + updateUsrDialog() + return + + while(coinsToProduce > 0 && materials.use_amount_type(coin_mat, chosen)) + create_coins(M.coin_type) + coinsToProduce-- + newCoins++ + src.updateUsrDialog() + sleep(5) + + icon_state = "coinpress0" processing = FALSE - coinsToProduce = temp_coins - src.updateUsrDialog() - return - -/obj/machinery/mineral/mint/proc/create_coins(P) - var/turf/T = get_step(src,output_dir) - if(T) - var/obj/item/O = new P(src) - var/obj/item/storage/bag/money/M = locate(/obj/item/storage/bag/money, T) - if(!M) - M = new /obj/item/storage/bag/money(src) - unload_mineral(M) + coinsToProduce = temp_coins + src.updateUsrDialog() + return + +/obj/machinery/mineral/mint/proc/create_coins(P) + var/turf/T = get_step(src,output_dir) + if(T) + var/obj/item/O = new P(src) + var/obj/item/storage/bag/money/M = locate(/obj/item/storage/bag/money, T) + if(!M) + M = new /obj/item/storage/bag/money(src) + unload_mineral(M) O.loc = M \ No newline at end of file diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm index ad2345afe5..f9a2c0d63c 100644 --- a/code/modules/research/circuitprinter.dm +++ b/code/modules/research/circuitprinter.dm @@ -11,7 +11,6 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). container_type = OPENCONTAINER_1 circuit = /obj/item/circuitboard/machine/circuit_imprinter - var/datum/material_container/materials var/efficiency_coeff var/list/categories = list( @@ -29,20 +28,18 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). ) /obj/machinery/r_n_d/circuit_imprinter/Initialize() - materials = new(src, list(MAT_GLASS, MAT_GOLD, MAT_DIAMOND, MAT_METAL, MAT_BLUESPACE)) + AddComponent(/datum/component/material_container, list(MAT_GLASS, MAT_GOLD, MAT_DIAMOND, MAT_METAL, MAT_BLUESPACE), + FALSE, list(/obj/item/stack, /obj/item/ore/bluespace_crystal), CALLBACK(src, .proc/is_insertion_ready)) create_reagents(0) return ..() -/obj/machinery/r_n_d/circuit_imprinter/Destroy() - QDEL_NULL(materials) - return ..() - /obj/machinery/r_n_d/circuit_imprinter/RefreshParts() reagents.maximum_volume = 0 for(var/obj/item/reagent_containers/glass/G in component_parts) reagents.maximum_volume += G.volume G.reagents.trans_to(src, G.reagents.total_volume) + GET_COMPONENT(materials, /datum/component/material_container) materials.max_amount = 0 for(var/obj/item/stock_parts/matter_bin/M in component_parts) materials.max_amount += M.rating * 75000 @@ -59,6 +56,7 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). /obj/machinery/r_n_d/circuit_imprinter/proc/check_mat(datum/design/being_built, M) // now returns how many times the item can be built with the material var/list/all_materials = being_built.reagents_list + being_built.materials + GET_COMPONENT(materials, /datum/component/material_container) var/A = materials.amount(M) if(!A) A = reagents.get_reagent_amount(M) @@ -69,6 +67,7 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). /obj/machinery/r_n_d/circuit_imprinter/on_deconstruction() for(var/obj/item/reagent_containers/glass/G in component_parts) reagents.trans_to(G, G.reagents.maximum_volume) + GET_COMPONENT(materials, /datum/component/material_container) materials.retrieve_all() ..() @@ -77,52 +76,20 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). linked_console.linked_imprinter = null ..() -/obj/machinery/r_n_d/circuit_imprinter/Insert_Item(obj/item/O, mob/user) - - if(istype(O, /obj/item/stack/sheet)) - . = 1 - if(!is_insertion_ready(user)) +/obj/machinery/r_n_d/circuit_imprinter/ComponentActivated(datum/component/C) + ..() + if(istype(C, /datum/component/material_container)) + var/datum/component/material_container/M = C + if(!M.last_insert_success) return - var/sheet_material = materials.get_item_material_amount(O) - if(!sheet_material) - return - - if(!materials.has_space(sheet_material)) - to_chat(user, "The [src.name]'s material bin is full! Please remove material before adding more.") - return 1 - - var/obj/item/stack/sheet/stack = O - var/amount = round(input("How many sheets do you want to add?") as num)//No decimals - if(!in_range(src, stack) || !user.Adjacent(src)) - return - var/amount_inserted = materials.insert_stack(O,amount) - if(!amount_inserted) - return 1 + var/lit = M.last_inserted_type + var/stack_name + if(ispath(lit, /obj/item/ore/bluespace_crystal)) + stack_name = "bluespace" + use_power(MINERAL_MATERIAL_AMOUNT / 10) else - use_power(max(1000, (MINERAL_MATERIAL_AMOUNT*amount_inserted/10))) - to_chat(user, "You add [amount_inserted] sheets to the [src.name].") - updateUsrDialog() - - else if(istype(O, /obj/item/ore/bluespace_crystal)) //Bluespace crystals can be either a stack or an item - . = 1 - if(!is_insertion_ready(user)) - return - var/bs_material = materials.get_item_material_amount(O) - if(!bs_material) - return - - if(!materials.has_space(bs_material)) - to_chat(user, "The [src.name]'s material bin is full! Please remove material before adding more.") - return 1 - - materials.insert_item(O) - use_power(MINERAL_MATERIAL_AMOUNT/10) - to_chat(user, "You add [O] to the [src.name].") - qdel(O) - updateUsrDialog() - - else if(user.a_intent != INTENT_HARM) - to_chat(user, "You cannot insert this item into the [name]!") - return 1 - else - return 0 \ No newline at end of file + var/obj/item/stack/S = lit + stack_name = initial(S.name) + use_power(max(1000, (MINERAL_MATERIAL_AMOUNT * M.last_amount_inserted / 10))) + add_overlay("protolathe_[stack_name]") + addtimer(CALLBACK(src, /atom/proc/cut_overlay, "protolathe_[stack_name]"), 10) diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index cbbb73652b..4d8938b1b8 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -418,8 +418,9 @@ if(exp == SCANTYPE_OBLITERATE) visible_message("[exp_on] activates the crushing mechanism, [exp_on] is destroyed!") if(linked_console.linked_lathe) + GET_COMPONENT_FROM(linked_materials, /datum/component/material_container, linked_console.linked_lathe) for(var/material in exp_on.materials) - linked_console.linked_lathe.materials.insert_amount( min((linked_console.linked_lathe.materials.max_amount - linked_console.linked_lathe.materials.total_amount), (exp_on.materials[material])), material) + linked_materials.insert_amount( min((linked_materials.max_amount - linked_materials.total_amount), (exp_on.materials[material])), material) if(prob(EFFECT_PROB_LOW) && criticalReaction) visible_message("[src]'s crushing mechanism slowly and smoothly descends, flattening the [exp_on]!") new /obj/item/stack/sheet/plasteel(get_turf(pick(oview(1,src)))) diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm index 7a18a5e630..88c902a70d 100644 --- a/code/modules/research/protolathe.dm +++ b/code/modules/research/protolathe.dm @@ -14,7 +14,6 @@ Note: Must be placed west/left of and R&D console to function. container_type = OPENCONTAINER_1 circuit = /obj/item/circuitboard/machine/protolathe - var/datum/material_container/materials var/efficiency_coeff var/list/categories = list( @@ -34,11 +33,9 @@ Note: Must be placed west/left of and R&D console to function. /obj/machinery/r_n_d/protolathe/Initialize() create_reagents(0) - materials = new(src, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE)) - return ..() - -/obj/machinery/r_n_d/protolathe/Destroy() - QDEL_NULL(materials) + AddComponent(/datum/component/material_container, + list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE), + FALSE, list(/obj/item/stack, /obj/item/ore/bluespace_crystal), CALLBACK(src, .proc/is_insertion_ready)) return ..() /obj/machinery/r_n_d/protolathe/RefreshParts() @@ -47,6 +44,7 @@ Note: Must be placed west/left of and R&D console to function. reagents.maximum_volume += G.volume G.reagents.trans_to(src, G.reagents.total_volume) + GET_COMPONENT(materials, /datum/component/material_container) materials.max_amount = 0 for(var/obj/item/stock_parts/matter_bin/M in component_parts) materials.max_amount += M.rating * 75000 @@ -59,6 +57,7 @@ Note: Must be placed west/left of and R&D console to function. /obj/machinery/r_n_d/protolathe/proc/check_mat(datum/design/being_built, M) // now returns how many times the item can be built with the material var/list/all_materials = being_built.reagents_list + being_built.materials + GET_COMPONENT(materials, /datum/component/material_container) var/A = materials.amount(M) if(!A) A = reagents.get_reagent_amount(M) @@ -69,6 +68,7 @@ Note: Must be placed west/left of and R&D console to function. /obj/machinery/r_n_d/protolathe/on_deconstruction() for(var/obj/item/reagent_containers/glass/G in component_parts) reagents.trans_to(G, G.reagents.maximum_volume) + GET_COMPONENT(materials, /datum/component/material_container) materials.retrieve_all() ..() @@ -77,63 +77,20 @@ Note: Must be placed west/left of and R&D console to function. linked_console.linked_lathe = null ..() -/obj/machinery/r_n_d/protolathe/Insert_Item(obj/item/O, mob/user) - - if(istype(O, /obj/item/stack/sheet)) - . = 1 - if(!is_insertion_ready(user)) +/obj/machinery/r_n_d/protolathe/ComponentActivated(datum/component/C) + ..() + if(istype(C, /datum/component/material_container)) + var/datum/component/material_container/M = C + if(!M.last_insert_success) return - var/sheet_material = materials.get_item_material_amount(O) - if(!sheet_material) - return - - if(!materials.has_space(sheet_material)) - to_chat(user, "The [src.name]'s material bin is full! Please remove material before adding more.") - return 1 - - var/obj/item/stack/sheet/stack = O - var/amount = round(input("How many sheets do you want to add?") as num)//No decimals - if(!in_range(src, stack) || !user.Adjacent(src)) - return - var/amount_inserted = materials.insert_stack(O,amount) - if(!amount_inserted) - return 1 + var/lit = M.last_inserted_type + var/stack_name + if(ispath(lit, /obj/item/ore/bluespace_crystal)) + stack_name = "bluespace" + use_power(MINERAL_MATERIAL_AMOUNT / 10) else - var/stack_name = stack.name - busy = TRUE - use_power(max(1000, (MINERAL_MATERIAL_AMOUNT*amount_inserted/10))) - to_chat(user, "You add [amount_inserted] sheets to the [src.name].") - add_overlay("protolathe_[stack_name]") - sleep(10) - cut_overlay("protolathe_[stack_name]") - busy = FALSE - updateUsrDialog() - - else if(istype(O, /obj/item/ore/bluespace_crystal)) //Bluespace crystals can be either a stack or an item - . = 1 - if(!is_insertion_ready(user)) - return - var/bs_material = materials.get_item_material_amount(O) - if(!bs_material) - return - - if(!materials.has_space(bs_material)) - to_chat(user, "The [src.name]'s material bin is full! Please remove material before adding more.") - return 1 - - materials.insert_item(O) - busy = TRUE - use_power(MINERAL_MATERIAL_AMOUNT/10) - to_chat(user, "You add [O] to the [src.name].") - qdel(O) - add_overlay("protolathe_bluespace") - sleep(10) - cut_overlay("protolathe_bluespace") - busy = FALSE - updateUsrDialog() - - else if(user.a_intent != INTENT_HARM) - to_chat(user, "You cannot insert this item into the [name]!") - return 1 - else - return 0 + var/obj/item/stack/S = lit + stack_name = initial(S.name) + use_power(max(1000, (MINERAL_MATERIAL_AMOUNT * M.last_amount_inserted / 10))) + add_overlay("protolathe_[stack_name]") + addtimer(CALLBACK(src, /atom/proc/cut_overlay, "protolathe_[stack_name]"), 10) diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 2f60e280ec..ee2cba39fd 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -169,6 +169,15 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(href_list["menu"]) //Switches menu screens. Converts a sent text string into a number. Saves a LOT of code. var/temp_screen = text2num(href_list["menu"]) screen = temp_screen + + + var/datum/component/material_container/linked_materials + if(linked_lathe) + linked_materials = linked_lathe.GetComponent(/datum/component/material_container) + + var/datum/component/material_container/imprinter_materials + if(linked_imprinter) + imprinter_materials = linked_imprinter.GetComponent(/datum/component/material_container) if(href_list["category"]) selected_category = href_list["category"] @@ -315,7 +324,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(linked_lathe) //Also sends salvaged materials to a linked protolathe, if any. for(var/material in linked_destroy.loaded_item.materials) - linked_lathe.materials.insert_amount(min((linked_lathe.materials.max_amount - linked_lathe.materials.total_amount), (linked_destroy.loaded_item.materials[material]*(linked_destroy.decon_mod/10))), material) + linked_materials.insert_amount(min((linked_materials.max_amount - linked_materials.total_amount), (linked_destroy.loaded_item.materials[material]*(linked_destroy.decon_mod/10))), material) SSblackbox.add_details("item_deconstructed","[linked_destroy.loaded_item.type]") linked_destroy.loaded_item = null for(var/obj/I in linked_destroy.contents) @@ -421,7 +430,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, for(var/MAT in being_built.materials) efficient_mats[MAT] = being_built.materials[MAT]*coeff - if(!linked_lathe.materials.has_materials(efficient_mats, amount)) + if(!linked_materials.has_materials(efficient_mats, amount)) linked_lathe.say("Not enough materials to complete prototype.") enough_materials = 0 g2g = 0 @@ -433,7 +442,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, g2g = 0 if(enough_materials) - linked_lathe.materials.use_amount(efficient_mats, amount) + linked_materials.use_amount(efficient_mats, amount) for(var/R in being_built.reagents_list) linked_lathe.reagents.remove_reagent(R, being_built.reagents_list[R]*coeff) @@ -497,7 +506,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, for(var/MAT in being_built.materials) efficient_mats[MAT] = being_built.materials[MAT]/coeff - if(!linked_imprinter.materials.has_materials(efficient_mats)) + if(!imprinter_materials.has_materials(efficient_mats)) linked_imprinter.say("Not enough materials to complete prototype.") enough_materials = 0 g2g = 0 @@ -509,7 +518,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, g2g = 0 if(enough_materials) - linked_imprinter.materials.use_amount(efficient_mats) + imprinter_materials.use_amount(efficient_mats) for(var/R in being_built.reagents_list) linked_imprinter.reagents.remove_reagent(R, being_built.reagents_list[R]/coeff) @@ -536,7 +545,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, linked_lathe.reagents.clear_reagents() else if(href_list["ejectsheet"] && linked_lathe) //Causes the protolathe to eject a sheet of material - linked_lathe.materials.retrieve_sheets(text2num(href_list["eject_amt"]), href_list["ejectsheet"]) + linked_materials.retrieve_sheets(text2num(href_list["eject_amt"]), href_list["ejectsheet"]) //Circuit Imprinter Materials else if(href_list["disposeI"] && linked_imprinter) //Causes the circuit imprinter to dispose of a single reagent (all of it) @@ -546,7 +555,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, linked_imprinter.reagents.clear_reagents() else if(href_list["imprinter_ejectsheet"] && linked_imprinter) //Causes the imprinter to eject a sheet of material - linked_imprinter.materials.retrieve_sheets(text2num(href_list["eject_amt"]), href_list["imprinter_ejectsheet"]) + imprinter_materials.retrieve_sheets(text2num(href_list["eject_amt"]), href_list["imprinter_ejectsheet"]) else if(href_list["find_device"]) //The R&D console looks for devices nearby to link up with. @@ -634,6 +643,14 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(linked_imprinter == null) screen = 4.0 + + var/datum/component/material_container/linked_materials + if(linked_lathe) + linked_materials = linked_lathe.GetComponent(/datum/component/material_container) + + var/datum/component/material_container/imprinter_materials + if(linked_imprinter) + imprinter_materials = linked_imprinter.GetComponent(/datum/component/material_container) switch(screen) //////////////////////R&D CONSOLE SCREENS////////////////// @@ -823,7 +840,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "Material Storage" dat += "Chemical Storage
" dat += "

Protolathe Menu:


" - dat += "Material Amount: [linked_lathe.materials.total_amount] / [linked_lathe.materials.max_amount]
" + dat += "Material Amount: [linked_materials.total_amount] / [linked_materials.max_amount]
" dat += "Chemical Volume: [linked_lathe.reagents.total_volume] / [linked_lathe.reagents.maximum_volume]
" dat += "\ @@ -841,7 +858,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "Main Menu" dat += "Protolathe Menu" dat += "

Browsing [selected_category]:


" - dat += "Material Amount: [linked_lathe.materials.total_amount] / [linked_lathe.materials.max_amount]
" + dat += "Material Amount: [linked_materials.total_amount] / [linked_materials.max_amount]
" dat += "Chemical Volume: [linked_lathe.reagents.total_volume] / [linked_lathe.reagents.maximum_volume]
" var/coeff = linked_lathe.efficiency_coeff @@ -879,7 +896,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "Main Menu" dat += "Protolathe Menu" dat += "

Search results:


" - dat += "Material Amount: [linked_lathe.materials.total_amount] / [linked_lathe.materials.max_amount]
" + dat += "Material Amount: [linked_materials.total_amount] / [linked_materials.max_amount]
" dat += "Chemical Volume: [linked_lathe.reagents.total_volume] / [linked_lathe.reagents.maximum_volume]
" var/coeff = linked_lathe.efficiency_coeff @@ -916,8 +933,8 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(!linked_lathe) dat += "ERROR: Protolathe connection failed." else - for(var/mat_id in linked_lathe.materials.materials) - var/datum/material/M = linked_lathe.materials.materials[mat_id] + for(var/mat_id in linked_materials.materials) + var/datum/material/M = linked_materials.materials[mat_id] dat += "* [M.amount] of [M.name]: " if(M.amount >= MINERAL_MATERIAL_AMOUNT) dat += "Eject " if(M.amount >= MINERAL_MATERIAL_AMOUNT*5) dat += "5x " @@ -944,7 +961,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "Material Storage" dat += "Chemical Storage
" dat += "

Circuit Imprinter Menu:


" - dat += "Material Amount: [linked_imprinter.materials.total_amount]
" + dat += "Material Amount: [imprinter_materials.total_amount]
" dat += "Chemical Volume: [linked_imprinter.reagents.total_volume]
" dat += "\ @@ -961,7 +978,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "Main Menu" dat += "Circuit Imprinter Menu" dat += "

Browsing [selected_category]:


" - dat += "Material Amount: [linked_imprinter.materials.total_amount]
" + dat += "Material Amount: [imprinter_materials.total_amount]
" dat += "Chemical Volume: [linked_imprinter.reagents.total_volume]
" var/coeff = linked_imprinter.efficiency_coeff @@ -991,7 +1008,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "Main Menu" dat += "Circuit Imprinter Menu" dat += "

Search results:


" - dat += "Material Amount: [linked_imprinter.materials.total_amount]
" + dat += "Material Amount: [imprinter_materials.total_amount]
" dat += "Chemical Volume: [linked_imprinter.reagents.total_volume]
" var/coeff = linked_imprinter.efficiency_coeff @@ -1028,8 +1045,8 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(!linked_imprinter) dat += "ERROR: Protolathe connection failed." else - for(var/mat_id in linked_imprinter.materials.materials) - var/datum/material/M = linked_imprinter.materials.materials[mat_id] + for(var/mat_id in imprinter_materials.materials) + var/datum/material/M = imprinter_materials.materials[mat_id] dat += "* [M.amount] of [M.name]: " if(M.amount >= MINERAL_MATERIAL_AMOUNT) dat += "Eject " if(M.amount >= MINERAL_MATERIAL_AMOUNT*5) dat += "5x " diff --git a/sound/items/toysqueak1.ogg b/sound/items/toysqueak1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..e64a6fb179d114ab0146593cbfa0c8171504649f GIT binary patch literal 12956 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 BufzZV literal 0 HcmV?d00001 diff --git a/sound/items/toysqueak2.ogg b/sound/items/toysqueak2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..fddf1edfb926c20dbfd01608870b6f09cd8809fd GIT binary patch literal 14781 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 literal 0 HcmV?d00001 diff --git a/sound/items/toysqueak3.ogg b/sound/items/toysqueak3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..338f4d8aa90bb5188cb86eb5a9814974e0634b32 GIT binary patch literal 13778 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 literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index d852af48c0..a0365fdd75 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -263,7 +263,6 @@ #include "code\datums\hud.dm" #include "code\datums\map_config.dm" #include "code\datums\martial.dm" -#include "code\datums\material_container.dm" #include "code\datums\mind.dm" #include "code\datums\mutable_appearance.dm" #include "code\datums\mutations.dm" @@ -286,7 +285,9 @@ #include "code\datums\antagonists\ninja.dm" #include "code\datums\components\archaeology.dm" #include "code\datums\components\component.dm" +#include "code\datums\components\material_container.dm" #include "code\datums\components\slippery.dm" +#include "code\datums\components\squeek.dm" #include "code\datums\diseases\_disease.dm" #include "code\datums\diseases\_MobProcs.dm" #include "code\datums\diseases\anxiety.dm" From 2599bca054866bebab2a95814d329522d117b104 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 18:58:22 -0500 Subject: [PATCH 47/80] [MIRROR] Taking the beaker out of a cryotube now tries to put it into your hand (#2904) * Taking the beaker out of a cryotube now tries to put it into your hand (#30938) * Taking the beaker out of a cryotube now tries to put it into your hand * this is better * THIS is better * Fixes potential bugs * Update cryo.dm * Taking the beaker out of a cryotube now tries to put it into your hand --- .../atmospherics/machinery/components/unary_devices/cryo.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index 4583680d13..96bd0e8f65 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -378,6 +378,8 @@ if("ejectbeaker") if(beaker) beaker.forceMove(loc) + if(Adjacent(usr) && !issilicon(usr)) + usr.put_in_hands(beaker) beaker = null . = TRUE update_icon() From 6b4da1f99cac819c018fbb94e4f37206f67807c1 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 18:58:23 -0500 Subject: [PATCH 48/80] Automatic changelog generation for PR #2904 [ci skip] --- html/changelogs/AutoChangeLog-pr-2904.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2904.yml diff --git a/html/changelogs/AutoChangeLog-pr-2904.yml b/html/changelogs/AutoChangeLog-pr-2904.yml new file mode 100644 index 0000000000..dbcf3ed59e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2904.yml @@ -0,0 +1,4 @@ +author: "More Robust Than You" +delete-after: True +changes: + - tweak: "Taking the beaker out of a cryotube now tries to put it into your hand" From d0274da310bd861b9a2aa08db43b768a956a6673 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 18:59:17 -0500 Subject: [PATCH 49/80] [MIRROR] Click signals (#2903) * Merge pull request #30924 from ninjanomnom/click-signals Click signals * Click signals --- code/__DEFINES/components.dm | 40 +++++++++++++++++++++--------------- code/_onclick/click.dm | 5 +++++ 2 files changed, 28 insertions(+), 17 deletions(-) diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 94b9c84fb0..900b1680c4 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -12,41 +12,47 @@ // When the signal is called: (signal arguments) // /datum signals -#define COMSIG_COMPONENT_ADDED "component_added" //when a component is added to a datum: (datum/component) -#define COMSIG_COMPONENT_REMOVING "component_removing" //before a component is removed from a datum because of RemoveComponent: (datum/component) +#define COMSIG_COMPONENT_ADDED "component_added" //when a component is added to a datum: (/datum/component) +#define COMSIG_COMPONENT_REMOVING "component_removing" //before a component is removed from a datum because of RemoveComponent: (/datum/component) #define COMSIG_PARENT_QDELETED "parent_qdeleted" //before a datum's Destroy() is called: () // /atom signals -#define COMSIG_PARENT_ATTACKBY "atom_attackby" //from base of atom/attackby(): (obj/item, mob/living, params) -#define COMSIG_ATOM_HULK_ATTACK "hulk_attack" //from base of atom/attack_hulk(): (mob/living/carbon/human) -#define COMSIG_PARENT_EXAMINE "atom_examine" //from base of atom/examine(): (mob) -#define COMSIG_ATOM_ENTERED "atom_entered" //from base of atom/Entered(): (atom/movable, atom) +#define COMSIG_PARENT_ATTACKBY "atom_attackby" //from base of atom/attackby(): (/obj/item, /mob/living, params) +#define COMSIG_ATOM_HULK_ATTACK "hulk_attack" //from base of atom/attack_hulk(): (/mob/living/carbon/human) +#define COMSIG_PARENT_EXAMINE "atom_examine" //from base of atom/examine(): (/mob) +#define COMSIG_ATOM_ENTERED "atom_entered" //from base of atom/Entered(): (/atom/movable, /atom) #define COMSIG_ATOM_EX_ACT "atom_ex_act" //from base of atom/ex_act(): (severity, target) #define COMSIG_ATOM_EMP_ACT "atom_emp_act" //from base of atom/emp_act(): (severity) #define COMSIG_ATOM_FIRE_ACT "atom_fire_act" //from base of atom/fire_act(): (exposed_temperature, exposed_volume) -#define COMSIG_ATOM_BULLET_ACT "atom_bullet_act" //from base of atom/bullet_act(): (obj/item/projectile, def_zone) -#define COMSIG_ATOM_BLOB_ACT "atom_blob_act" //from base of atom/blob_act(): (obj/structure/blob) +#define COMSIG_ATOM_BULLET_ACT "atom_bullet_act" //from base of atom/bullet_act(): (/obj/item/projectile, def_zone) +#define COMSIG_ATOM_BLOB_ACT "atom_blob_act" //from base of atom/blob_act(): (/obj/structure/blob) #define COMSIG_ATOM_ACID_ACT "atom_acid_act" //from base of atom/acid_act(): (acidpwr, acid_volume) #define COMSIG_ATOM_EMAG_ACT "atom_emag_act" //from base of atom/emag_act(): () #define COMSIG_ATOM_NARSIE_ACT "atom_narsie_act" //from base of atom/narsie_act(): () #define COMSIG_ATOM_RATVAR_ACT "atom_ratvar_act" //from base of atom/ratvar_act(): () -#define COMSIG_ATOM_RCD_ACT "atom_rcd_act" //from base of atom/rcd_act(): (mob, obj/item/construction/rcd, passed_mode) +#define COMSIG_ATOM_RCD_ACT "atom_rcd_act" //from base of atom/rcd_act(): (/mob, /obj/item/construction/rcd, passed_mode) #define COMSIG_ATOM_SING_PULL "atom_sing_pull" //from base of atom/singularity_pull(): (S, current_size) +#define COMSIG_CLICK "atom_click" //from base of atom/Click(): (location, control, params) +#define COMSIG_CLICK_SHIFT "shift_click" //from base of atom/ShiftClick(): (/mob) +#define COMSIG_CLICK_CTRL "ctrl_click" //from base of atom/CtrlClickOn(): (/mob) +#define COMSIG_CLICK_ALT "alt_click" //from base of atom/AltClick(): (/mob) +#define COMSIG_CLICK_CTRL_SHIFT "ctrl_shift_click" //from base of atom/CtrlShiftClick(/mob) + // /atom/movable signals -#define COMSIG_MOVABLE_MOVED "movable_moved" //from base of atom/movable/Moved(): (atom, dir) -#define COMSIG_MOVABLE_CROSSED "movable_crossed" //from base of atom/movable/Crossed(): (atom/movable) -#define COMSIG_MOVABLE_COLLIDE "movable_collide" //from base of atom/movable/Collide(): (atom) -#define COMSIG_MOVABLE_IMPACT "movable_impact" //from base of atom/movable/throw_impact(): (atom, throwingdatum) +#define COMSIG_MOVABLE_MOVED "movable_moved" //from base of atom/movable/Moved(): (/atom, dir) +#define COMSIG_MOVABLE_CROSSED "movable_crossed" //from base of atom/movable/Crossed(): (/atom/movable) +#define COMSIG_MOVABLE_COLLIDE "movable_collide" //from base of atom/movable/Collide(): (/atom) +#define COMSIG_MOVABLE_IMPACT "movable_impact" //from base of atom/movable/throw_impact(): (/atom, throwingdatum) // /obj/item signals -#define COMSIG_ITEM_ATTACK "item_attack" //from base of obj/item/attack(): (mob/living/target, mob/living/user) -#define COMSIG_ITEM_ATTACK_SELF "item_attack_self" //from base of obj/item/attack_self(): (mob) -#define COMSIG_ITEM_ATTACK_OBJ "item_attack_obj" //from base of obj/item/attack_obj(): (obj, mob) +#define COMSIG_ITEM_ATTACK "item_attack" //from base of obj/item/attack(): (/mob/living/target, /mob/living/user) +#define COMSIG_ITEM_ATTACK_SELF "item_attack_self" //from base of obj/item/attack_self(): (/mob) +#define COMSIG_ITEM_ATTACK_OBJ "item_attack_obj" //from base of obj/item/attack_obj(): (/obj, /mob) // /obj/item/clothing signals #define COMSIG_SHOES_STEP_ACTION "shoes_step_action" //from base of obj/item/clothing/shoes/proc/step_action(): () // /obj/machinery signals #define COMSIG_MACHINE_PROCESS "machine_process" //from machinery subsystem fire(): () -#define COMSIG_MACHINE_PROCESS_ATMOS "machine_process_atmos" //from air subsystem process_atmos_machinery(): () \ No newline at end of file +#define COMSIG_MACHINE_PROCESS_ATMOS "machine_process_atmos" //from air subsystem process_atmos_machinery(): () diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 0eeca2eaf7..2bc6e144dd 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -32,6 +32,7 @@ */ /atom/Click(location,control,params) if(initialized) + SendSignal(COMSIG_CLICK, location, control, params) usr.ClickOn(src, params) /atom/DblClick(location,control,params) @@ -305,6 +306,7 @@ A.ShiftClick(src) return /atom/proc/ShiftClick(mob/user) + SendSignal(COMSIG_CLICK_SHIFT, user) if(user.client && user.client.eye == user || user.client.eye == user.loc) user.examinate(src) return @@ -319,6 +321,7 @@ return /atom/proc/CtrlClick(mob/user) + SendSignal(COMSIG_CLICK_CTRL, user) var/mob/living/ML = user if(istype(ML)) ML.pulled(src) @@ -348,6 +351,7 @@ ..() /atom/proc/AltClick(mob/user) + SendSignal(COMSIG_CLICK_ALT, user) var/turf/T = get_turf(src) if(T && user.TurfAdjacent(T)) if(user.listed_turf == T) @@ -373,6 +377,7 @@ return /atom/proc/CtrlShiftClick(mob/user) + SendSignal(COMSIG_CLICK_CTRL_SHIFT) return /* From 0925853992350c7152090e150ac2af9cbdfc2783 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 19:00:07 -0500 Subject: [PATCH 50/80] [MIRROR] [S] fixes sentience potions working through cams (#2896) * Fixes sentience potions working through cams (#30914) * [S] fixes sentience potions working through cams --- code/modules/research/xenobiology/xenobiology.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index 79fc4078f8..0b3c930962 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -168,7 +168,7 @@ var/sentience_type = SENTIENCE_ORGANIC /obj/item/slimepotion/sentience/afterattack(mob/living/M, mob/user) - if(being_used || !ismob(M)) + if(being_used || !ismob(M) || !user.Adjacent(M)) return if(!isanimal(M) || M.ckey) //only works on animals that aren't player controlled to_chat(user, "[M] is already too intelligent for this to work!") From 944753dccde1f56040eb2f4673b9a24cb634f5c8 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 19:00:34 -0500 Subject: [PATCH 51/80] [MIRROR] Makes action buttons call the correct procs (#2902) * Makes action buttons call the correct procs (#30921) * Makes action buttons call the correct procs * Changed to mob/living proc * CB * Makes action buttons call the correct procs --- code/_onclick/hud/alert.dm | 26 ++++++++++++++++++++------ code/modules/mob/living/living.dm | 5 ++++- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index 638b4a31cf..b361ef1a78 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -242,9 +242,12 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." icon_state = "fire" /obj/screen/alert/fire/Click() - if(isliving(usr)) - var/mob/living/L = usr - return L.resist() + var/mob/living/L = usr + if(!L.can_resist()) + return + L.changeNext_move(CLICK_CD_RESIST) + if(L.canmove) + return L.resist_fire() //I just want to start a flame in your hearrrrrrtttttt. //ALIENS @@ -644,9 +647,20 @@ so as to remain in compliance with the most up-to-date laws." desc = "You're legcuffed, which slows you down considerably. Click the alert to free yourself." /obj/screen/alert/restrained/Click() - if(isliving(usr)) - var/mob/living/L = usr - return L.resist() + var/mob/living/L = usr + if(!L.can_resist()) + return + L.changeNext_move(CLICK_CD_RESIST) + if((L.canmove) && (L.last_special <= world.time)) + return L.resist_restraints() + +/obj/screen/alert/restrained/buckled/Click() + var/mob/living/L = usr + if(!L.can_resist()) + return + L.changeNext_move(CLICK_CD_RESIST) + if(L.last_special <= world.time) + return L.resist_buckle() // PRIVATE = only edit, use, or override these if you're editing the system as a whole diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index acea72e911..f31ee2fa95 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -544,11 +544,14 @@ if(!force_moving) ..(pressure_difference, direction, pressure_resistance_prob_delta) +/mob/living/proc/can_resist() + return !((next_move > world.time) || incapacitated(ignore_restraints = TRUE)) + /mob/living/verb/resist() set name = "Resist" set category = "IC" - if(!isliving(src) || next_move > world.time || incapacitated(ignore_restraints = 1)) + if(!can_resist()) return changeNext_move(CLICK_CD_RESIST) From ec65e75b101bb58aebfad03b4b517a46c281966d Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 19:10:18 -0500 Subject: [PATCH 52/80] [MIRROR] Fix MetaStation xenobio area (#2850) * Fix MetaStation xenobio area (#30830) * Fix MetaStation xenobio area --- _maps/map_files/MetaStation/MetaStation.dmm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 17572d65f0..c39cda4929 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -122233,7 +122233,7 @@ cRu cRi cRi cRi -bpu +cRi aaf aaa aaf @@ -129583,7 +129583,7 @@ arI atd bai ate -dDM +dDL axP dnS axY From 8ef3861b0b2c35d09ddaf2e77bfa1f3b3f93b40d Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 19:43:56 -0500 Subject: [PATCH 53/80] [MIRROR] New squeaky datum and plushes (#2847) * New squeaky datum and plushes * Update bananashoes.dm --- .../lavaland_surface_animal_hospital.dmm | 2 +- .../map_files/Deltastation/DeltaStation2.dmm | 2 +- _maps/map_files/MetaStation/MetaStation.dmm | 2 +- _maps/map_files/generic/CentCom.dmm | 2 +- code/__DEFINES/components.dm | 8 +++ code/game/objects/items.dm | 3 -- code/game/objects/items/clown_items.dm | 46 ++++++------------ code/game/objects/items/dehy_carp.dm | 6 +-- code/game/objects/items/plushes.dm | 42 ++++++++++++++++ code/game/objects/items/toys.dm | 27 ---------- code/modules/cargo/packs.dm | 2 +- code/modules/clothing/shoes/miscellaneous.dm | 11 ++--- code/modules/holiday/easter.dm | 2 +- .../living/simple_animal/friendly/mouse.dm | 2 +- .../chemistry/reagents/other_reagents.dm | 4 +- code/modules/uplink/uplink_item.dm | 2 +- icons/obj/plushes.dmi | Bin 0 -> 3736 bytes icons/obj/toy.dmi | Bin 34071 -> 33413 bytes tgstation.dme | 1 + 19 files changed, 84 insertions(+), 80 deletions(-) create mode 100644 code/game/objects/items/plushes.dm create mode 100644 icons/obj/plushes.dmi diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm index 5ed42e8922..214ff213c8 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm @@ -47,7 +47,7 @@ /area/ruin/powered/animal_hospital) "al" = ( /obj/structure/table/wood, -/obj/item/toy/carpplushie, +/obj/item/toy/plush/carpplushie, /turf/open/floor/plasteel/cmo, /area/ruin/powered/animal_hospital) "am" = ( diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 6f385e23ee..a4ec56f95e 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -5118,7 +5118,7 @@ /area/maintenance/starboard/fore) "alA" = ( /obj/structure/table/wood, -/obj/item/toy/carpplushie, +/obj/item/toy/plush/carpplushie, /obj/effect/decal/cleanable/cobweb, /turf/open/floor/plasteel/vault{ dir = 8 diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index c39cda4929..b12cbde21c 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -49068,7 +49068,7 @@ /area/bridge/showroom/corporate) "bQl" = ( /obj/structure/table/wood, -/obj/item/toy/carpplushie{ +/obj/item/toy/plush/carpplushie{ color = "red"; name = "Nanotrasen wildlife department space carp plushie" }, diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index e482dcc0bc..f0476df53d 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -6423,7 +6423,7 @@ "qX" = ( /obj/structure/table, /obj/item/toy/katana, -/obj/item/toy/carpplushie, +/obj/item/toy/plush/carpplushie, /obj/effect/turf_decal/stripes/line{ dir = 1 }, diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 900b1680c4..6f20117d36 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -53,6 +53,14 @@ // /obj/item/clothing signals #define COMSIG_SHOES_STEP_ACTION "shoes_step_action" //from base of obj/item/clothing/shoes/proc/step_action(): () +// /obj/item signals +#define COMSIG_ITEM_ATTACK "item_attack" //from base of obj/item/attack(): (mob/living/target, mob/living/user) +#define COMSIG_ITEM_ATTACK_SELF "item_attack_self" //from base of obj/item/attack_self(): (mob) +#define COMSIG_ITEM_ATTACK_OBJ "item_attack_obj" //from base of obj/item/attack_obj(): (obj, mob) + +// /obj/item/clothing signals +#define COMSIG_SHOES_STEP_ACTION "shoes_step_action" //from base of obj/item/clothing/shoes/proc/step_action(): () + // /obj/machinery signals #define COMSIG_MACHINE_PROCESS "machine_process" //from machinery subsystem fire(): () #define COMSIG_MACHINE_PROCESS_ATMOS "machine_process_atmos" //from air subsystem process_atmos_machinery(): () diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index d8ed75737d..efa8a1db44 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -218,9 +218,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) /obj/item/proc/speechModification(message) //For speech modification by mask slot items. return message -/obj/item/attack_self(mob/user) - interact(user) - /obj/item/interact(mob/user) add_fingerprint(user) if(hidden_uplink && hidden_uplink.active) diff --git a/code/game/objects/items/clown_items.dm b/code/game/objects/items/clown_items.dm index 1c3c712db6..aae4aad91d 100644 --- a/code/game/objects/items/clown_items.dm +++ b/code/game/objects/items/clown_items.dm @@ -107,39 +107,26 @@ throw_speed = 3 throw_range = 7 attack_verb = list("HONKED") - var/next_usable = 0 - var/honksound = 'sound/items/bikehorn.ogg' - var/cooldowntime = 20 + +/obj/item/bikehorn/Initialize() + . = ..() + AddComponent(/datum/component/squeak, list('sound/items/bikehorn.ogg'=1), 50) /obj/item/bikehorn/suicide_act(mob/user) user.visible_message("[user] solemnly points the horn at [user.p_their()] temple! It looks like [user.p_theyre()] trying to commit suicide!") - playsound(src.loc, honksound, 50, 1) + playsound(src, 'sound/items/bikehorn.ogg', 50, 1) return (BRUTELOSS) -/obj/item/bikehorn/attack(mob/living/carbon/M, mob/living/carbon/user) - if(!(next_usable > world.time)) - playsound(loc, honksound, 50, 1, -1) //plays instead of tap.ogg! - return ..() - -/obj/item/bikehorn/attack_self(mob/user) - if(!(next_usable > world.time)) - next_usable = world.time + cooldowntime - playsound(src.loc, honksound, 50, 1) - src.add_fingerprint(user) - -/obj/item/bikehorn/Crossed(mob/living/L) - if(isliving(L)) - playsound(loc, honksound, 50, 1, -1) - ..() - /obj/item/bikehorn/airhorn name = "air horn" desc = "Damn son, where'd you find this?" icon_state = "air_horn" - honksound = 'sound/items/airhorn2.ogg' - cooldowntime = 50 origin_tech = "materials=4;engineering=4" +/obj/item/bikehorn/airhorn/Initialize() + . = ..() + AddComponent(/datum/component/squeak, list('sound/items/airhorn2.ogg'=1), 50) + /obj/item/bikehorn/golden name = "golden bike horn" desc = "Golden? Clearly, it's made with bananium! Honk!" @@ -155,14 +142,13 @@ ..() /obj/item/bikehorn/golden/proc/flip_mobs(mob/living/carbon/M, mob/user) - if(!(next_usable > world.time)) - var/turf/T = get_turf(src) - for(M in ohearers(7, T)) - if(ishuman(M) && M.can_hear()) - var/mob/living/carbon/human/H = M - if(istype(H.ears, /obj/item/clothing/ears/earmuffs)) - continue - M.emote("flip") + var/turf/T = get_turf(src) + for(M in ohearers(7, T)) + if(ishuman(M) && M.can_hear()) + var/mob/living/carbon/human/H = M + if(istype(H.ears, /obj/item/clothing/ears/earmuffs)) + continue + M.emote("flip") /obj/item/reagent_containers/food/drinks/soda_cans/canned_laughter name = "Canned Laughter" diff --git a/code/game/objects/items/dehy_carp.dm b/code/game/objects/items/dehy_carp.dm index 9432a434f0..649efc0802 100644 --- a/code/game/objects/items/dehy_carp.dm +++ b/code/game/objects/items/dehy_carp.dm @@ -4,13 +4,13 @@ */ //Child of carpplushie because this should do everything the toy does and more -/obj/item/toy/carpplushie/dehy_carp +/obj/item/toy/plush/carpplushie/dehy_carp var/mob/owner = null //Carp doesn't attack owner, set when using in hand var/owned = 0 //Boolean, no owner to begin with var/mobtype = /mob/living/simple_animal/hostile/carp //So admins can change what mob spawns via var fuckery //Attack self -/obj/item/toy/carpplushie/dehy_carp/attack_self(mob/user) +/obj/item/toy/plush/carpplushie/dehy_carp/attack_self(mob/user) src.add_fingerprint(user) //Anyone can add their fingerprints to it with this if(!owned) to_chat(user, "You pet [src]. You swear it looks up at you.") @@ -18,7 +18,7 @@ owned = 1 else return ..() -/obj/item/toy/carpplushie/dehy_carp/proc/Swell() +/obj/item/toy/plush/carpplushie/dehy_carp/proc/Swell() desc = "It's growing!" visible_message("[src] swells up!") diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm new file mode 100644 index 0000000000..778655d4b0 --- /dev/null +++ b/code/game/objects/items/plushes.dm @@ -0,0 +1,42 @@ +/obj/item/toy/plush + name = "plush" + desc = "this is the special coder plush, do not steal" + icon = 'icons/obj/plushes.dmi' + icon_state = "debug" + attack_verb = list("thumped", "whomped", "bumped") + w_class = WEIGHT_CLASS_SMALL + resistance_flags = FLAMMABLE + var/list/squeak_override //Weighted list; If you want your plush to have different squeak sounds use this + +/obj/item/toy/plush/Initialize() + . = ..() + AddComponent(/datum/component/squeak, squeak_override) + +/obj/item/toy/plush/attack_self(mob/user) + . = ..() + to_chat(user, "You pet [src]. D'awww.") + +/obj/item/toy/plush/carpplushie + name = "space carp plushie" + desc = "An adorable stuffed toy that resembles a space carp." + icon_state = "carpplush" + item_state = "carp_plushie" + attack_verb = list("bitten", "eaten", "fin slapped") + squeak_override = list('sound/weapons/bite.ogg'=1) + +/obj/item/toy/plush/bubbleplush + name = "bubblegum plushie" + desc = "The friendly red demon that gives good miners gifts." + icon_state = "bubbleplush" + attack_verb = list("rends") + squeak_override = list('sound/magic/demon_attack1.ogg'=1) + +/obj/item/toy/plush/plushvar + name = "ratvar plushie" + desc = "An adorable plushie of the clockwork justiciar himself with new and improved spring arm action." + icon_state = "plushvar" + +/obj/item/toy/plush/narplush + name = "nar'sie plushie" + desc = "A small stuffed doll of the elder god nar'sie. Who thought this was a good children's toy?" + icon_state = "narplush" \ No newline at end of file diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 87ff199dfe..a918fe494a 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -14,7 +14,6 @@ * Cards * Toy nuke * Fake meteor - * Carp plushie * Foam armblade * Toy big red button * Beach ball @@ -987,32 +986,6 @@ shake_camera(M, 3, 1) qdel(src) -/* - * Carp plushie - */ - -/obj/item/toy/carpplushie - name = "space carp plushie" - desc = "An adorable stuffed toy that resembles a space carp." - icon = 'icons/obj/toy.dmi' - icon_state = "carpplushie" - item_state = "carp_plushie" - w_class = WEIGHT_CLASS_SMALL - attack_verb = list("bitten", "eaten", "fin slapped") - resistance_flags = FLAMMABLE - var/bitesound = 'sound/weapons/bite.ogg' - -//Attack mob -/obj/item/toy/carpplushie/attack(mob/M, mob/user) - playsound(loc, bitesound, 20, 1) //Play bite sound in local area - return ..() - -//Attack self -/obj/item/toy/carpplushie/attack_self(mob/user) - playsound(src.loc, bitesound, 20, 1) - to_chat(user, "You pet [src]. D'awww.") - return ..() - /* * Toy big red button */ diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index ba536acdac..bfe0c8e776 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -1643,7 +1643,7 @@ /obj/item/toy/talking/griffin, /obj/item/toy/nuke, /obj/item/toy/minimeteor, - /obj/item/toy/carpplushie, + /obj/item/toy/plush/carpplushie, /obj/item/coin/antagtoken, /obj/item/stack/tile/fakespace/loaded, /obj/item/gun/ballistic/shotgun/toy/crossbow, diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index c0ac24c1cc..081362ee9d 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -1,4 +1,5 @@ /obj/item/clothing/shoes/proc/step_action() //this was made to rewrite clown shoes squeaking + SendSignal(COMSIG_SHOES_STEP_ACTION) /obj/item/clothing/shoes/suicide_act(mob/user) user.visible_message("[user] is bashing [user.p_their()] own head in with [src]! Ain't that a kick in the head?") @@ -79,15 +80,11 @@ item_state = "clown_shoes" slowdown = SHOES_SLOWDOWN+1 item_color = "clown" - var/footstep = 1 //used for squeeks whilst walking pockets = /obj/item/storage/internal/pocket/shoes/clown -/obj/item/clothing/shoes/clown_shoes/step_action() - if(footstep > 1) - playsound(src, "clownstep", 50, 1) - footstep = 0 - else - footstep++ +/obj/item/clothing/shoes/clown_shoes/Initialize() + . = ..() + AddComponent(/datum/component/squeak, list('sound/effects/clownstep1.ogg'=1,'sound/effects/clownstep2.ogg'=1), 50) /obj/item/clothing/shoes/clown_shoes/jester name = "jester shoes" diff --git a/code/modules/holiday/easter.dm b/code/modules/holiday/easter.dm index 2415f08d6d..71ff26a17e 100644 --- a/code/modules/holiday/easter.dm +++ b/code/modules/holiday/easter.dm @@ -126,7 +126,7 @@ /obj/item/toy/foamblade, /obj/item/toy/prize/ripley, /obj/item/toy/prize/honk, - /obj/item/toy/carpplushie, + /obj/item/toy/plush/carpplushie, /obj/item/toy/redbutton, /obj/item/clothing/head/collectable/rabbitears) new won(where) diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index 6983bed378..1a7ed0261f 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -28,6 +28,7 @@ /mob/living/simple_animal/mouse/Initialize() . = ..() + AddComponent(/datum/component/squeak, list('sound/effects/mousesqueek.ogg'=1), 100) if(!body_color) body_color = pick( list("brown","gray","white") ) icon_state = "mouse_[body_color]" @@ -58,7 +59,6 @@ if(!stat) var/mob/M = AM to_chat(M, "[icon2html(src, M)] Squeek!") - playsound(src, 'sound/effects/mousesqueek.ogg', 100, 1) ..() /mob/living/simple_animal/mouse/handle_automated_action() diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 6f0f0c4ec5..6e02cc5696 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -160,8 +160,8 @@ cube.Expand() // Dehydrated carp - else if(istype(O, /obj/item/toy/carpplushie/dehy_carp)) - var/obj/item/toy/carpplushie/dehy_carp/dehy = O + else if(istype(O, /obj/item/toy/plush/carpplushie/dehy_carp)) + var/obj/item/toy/plush/carpplushie/dehy_carp/dehy = O dehy.Swell() // Makes a carp else if(istype(O, /obj/item/stack/sheet/hairlesshide)) diff --git a/code/modules/uplink/uplink_item.dm b/code/modules/uplink/uplink_item.dm index 5fdf216b2a..70f7a76a7a 100644 --- a/code/modules/uplink/uplink_item.dm +++ b/code/modules/uplink/uplink_item.dm @@ -710,7 +710,7 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. name = "Dehydrated Space Carp" desc = "Looks like a plush toy carp, but just add water and it becomes a real-life space carp! Activate in \ your hand before use so it knows not to kill you." - item = /obj/item/toy/carpplushie/dehy_carp + item = /obj/item/toy/plush/carpplushie/dehy_carp cost = 1 /datum/uplink_item/stealthy_weapons/soap_clusterbang diff --git a/icons/obj/plushes.dmi b/icons/obj/plushes.dmi new file mode 100644 index 0000000000000000000000000000000000000000..6a7b21efec060a084f049312277207777835d421 GIT binary patch literal 3736 zcmV;J4rlR+P)V=-0C=2@%)JW3AQ*+=+3zY2$zJ-mx|D?Cklce-8wH!lr>3{xA<(huc3yZm zEpGi?jpznNtK%G&84}mSk;FUL;vsQ4lkhG~zHE_;E)Einb*4@Y2^%;=;zZ)f`sKF$ zRi+vfU5YjPUHj0S{*x)z>{rdZaMt|uu|+?2=mtd}zcowNUtzrd000fcNklCq*jL#ep#XFAE=6i zPco+naZ+@Oh(n;2!YNT=up;4vt3jr0j?kR3eL1skf0Ddqg**<@J64Zdy>a3%9f=@gyxP*C5$@hmW!RP?oY}co zTsjgl%wbn3$+93#0N_nv50yZ-#c3;elP>nmo+cwNxYb)PE**(byfP2Zns_+r?&ze} zT|}!oNUggFK-+Fr2dSu94?u9hPhez<&4*n)y!N;)tsg9`0dHzs-7^+#0o{sr?4Hyk zlj4kNf%Ub12te`5JX%Kv*?ibV>ybeKZM%479>D=W0N&bd0GvM30vH!(J0YnDfb@b2 z(js4?TR|S1uJxN2+n(GpJZs7b4)_h8aNwPF0KESErv}THW6Q$@KzxljeX0dJijdL+ zd_JF|#dAm}0>uUEwjO$9rX%-HpK8&ppVkizk18^-J<0PQ08e z)wvcE*3wWD@j_IhC|$|htO{j<%vLrZc2Qbd#_P|=iK}%N(UUtihveN){yhNge=>># zP#!MOh(GYoI{Nzj+Bt4zc6oD9_{Ih?aXredsFSIfgF8%8S&_%^zE3QRYrFe^TfOz7 zbS8h73#k6)ORfcG%!&OoAxCCGrKM%`EzrF|;Ts!7XedUoJHlkl!53i{VWwmK;;)X? zzwS@Vvob10n5{oqTROOOB%)aY7X+XEr<2}L9)AqyGA0!I#falsUwY(&%{*Y) z@j?Ll>fw4@Kai zoG3+1GZ}O6m(bm$#{l;LhWCB4Jkc170w~CP0_#YBjg#5V>f?}zq`Kx4%ITeZMXkGN zCceinzxPxNvMpJrv+Q^wLnW)UP-O)(1Tr-c0pME&WBP#!LzXTT37Wzdn> zN~I^%x{LUqP(J{FyX4V?mam5-zdT$(U>*;U#NYlPf_Kt`Z)p&K2dka%Q52jprUfil zU^1qVs|YHWMCb}V!Z|OZ)bU+Pazn9^n~I|+w1iOxsZ4UNG}eIGvP3*B)qhvT)R)=a z|4_*)%EJW&2mI8!i%3*rmgM*3j%jT@xnuK=m*fwXteW>a9{F{cq1G?}zNJCDlO6!R z{GEWmb21cjF)b9PVhZC?Cr(9>?~GBF8|C}XM|j9JPFN_8>metj43cVXm{)*!9t*jrN z-IpFPFrCBLT_;8P5n{y6EJ~cjX#r}~$%8;XOK~cKNelLE$phju%J^0}g@P86_~CL(fzmH=~08ivF4Q@CXwk6n$dJG^;4$ zocGbBA;HobpfAiNhq2%5RYW!-P*O(u4Gi&GZRv>D{AU*3-(39+Kr6)Q%NG*qk`K_Z z{5AliF$belc>siTA$Mpxhme4Qa1H|z7x%bBm@pB((!$L-@1vq3C(61d@ZX_Ffc}K% zn%4u8lYi3mF(dslv^hKsm8{ajN?r2_rBxl&M39TFY?tKAb{VeBG2coEde+ykJnQRM zHu(NS8D)@B1{voj>Vyf>X2hXMO!j_w)q64UIC) zpOc;|!~1}fB(8J5nAvnQkXewq@TNyk?il3>9=@n89SPSBm|LKmFALJcynz1JTPC_g zOL(j=%=+>v`u(}wjZP2}3OPJLn0wRbypIYg;(YUGAV8dab9kAx_RK`kTdiJ%)f5=U zdDfK0Q&kh>!W~@66AJd`LSBN}b(U9hV9+1M2SRq`RY&&4*{5w66Jt5*V4%%FKGWcT^D=nKD@S z=EE*+9;^2NRxrHp6D3>XB`k*^tAu82^$@S;$da_akd_H#DZ2H@AQdc(01F9Qy_i+k zd_vJb>5|Y_MuCKHK zBGD7CL~}1TY$t%UUj1K~eNfZa=clx^%<#HNvc6<<*$F8h%G(8cvL9Z1Trpd@e&0Oy zo4(d`abF1VZHDba(El~qZ&mt+;q`hK_58N>0I_M)g1pzcQ1g5pu(bfn<;zMU^0sc- zqP6M!_3iq8YYsv7b7c0J@6 zeS5LnZ4k;%NJ{`|)eXnml%}KGMdM^0mk#Wrak7r4quYh_ifpW3LJ|(fn6F=Ki`{Nc z27?LP&Ed!_lwFXP08K}?i<;`yG#%Y8Uiw85Kdk8i;D|NNb=<0rtxuY+>bVH^q8IK)>ne#+!|10k+ug#G3QbSw>+1GHaO=&z-BWk|;2mbBVYPS6HBiIE0 z+IE|5uU7My;Xly!#iUlIkjJ{F4hk89taw7ISS?BX;K~)v@&l@>g`rfj-j3cerxqk* z{^QU5CMi)ez5Mx4tJw0(k7$3jnz!DIzZjLO7&qVCdW)6uTee+nZ&zOU$xk#-NJON* z{nXjBivHMS^V_NxbnX0Z(REd&>#90u@ipUj*QNkyf3@1MpA6~DZ3X(eP@)>q{Q`pk zT~}2qpLA3Cq?@j*iN8?ep&C(By_%;UkNpzd*=*R^ zHIbL~!x(9$$=b}@#csD2>-EPaJ0?-Tt=52a&~U6x;quJRi_ z{`s(eT&lV3g6v;QxeRQAl9`_)qKh3%=8);8d(W&L;e^; zFT$pU7a`G@WH)6CG5;``Z%U==b1$?WKU#DcsVdc*Xyq#Hh;@=XZv zZNS&|YNA<`uN!s?EmmRccSBR*ekI(D`&NK&3;q{G1#9lmJSBku0000L_clC)gh+{ifV7m--6f?oC|x2T9nw7rNOyxsNq6_qf^?@agmerw0z=Gq z;r-md_x+Cd_}=6DOOie`|_aXU15D0|(T0uqw1VUN8|6pMN zdwi!MNgxoqiPu{l7a4Qs51*_YU924JK_HK>`HPAUOM(QT)!N&ap?}g1d82>#cZD>t zxYb6GF#o}PO8@D3b%8?C_jSPzKYYJlx4EIUr_Ikheb!&`gv(8OpX?4%t3rD><_b@E z5ZRf;it0Ca??o3aiS?_W;3u3E$u8G9UC4(LsI&I9E=m=4_PcMyO^S!+H&Mq}<5M2_ zNnpI$$>?J2vBu0iXAc^*Q|L-U3H~`?k^?i$ir#;D5g)lIDPtVKHJY#e7FXP0;oB!s z4NH@k$?JFaNFFM(ZA8Q?kH#OR^tYITnX3-k?jNUHo_dk?Y5XE}KWj}u^RSG^IcpJU zin7lTS6!qR)1&Q8rdqM3@Svr1KQ?&>gWCuj>wTQ78^9BN^iYgVI6DNAPvyxuy&+tW zixMIkais6znoP3KWgVtP$9A(pw01KHAN=e(@k+9_1oK0UI!?i;+!sgXX5M)?SEl|) zp4vU}OsqwI3by{LBWEsM9NDavuys(uKzilDId49r|H`6w`dh3n=NxSWJWME&sd z&lrZT^N?JVQ(s+9xJ;AY%~YVYmTr|ND1 z92gGRoT+UTE_ z>1dPVXfO`Ds135_x9mlVIY&kZtIx!>`NG*Ohr~vVK>wA{Sl)xIWFO(pDYC55E0?Z9 zQcCJl3=hPdU(7p9QQw8b&AIM7aiNaKf>o>C@i>JBf*ajJr0h+{Wj{Zdi}xEfc$AfG z&!1rc!?`#9yuu!Hd@z-yBw*e`HZ_uF-{n&1OZjqw>^!&hL%vYpH@FMgX_>ErfaUhd z?%jc?`0}^Rej?%F_fgu=K9wJZm973#dTHkvhad8twGq7uQiH9hxNeJkc=WMW>{jKWCyN z5Fw3MC%z2TdXEs*8ZGQFEiynat@O=tYSG%E-#OPL!-hB!nrB2mw{^s6r;S=PMbL)Y zR@1Z1G%0&2;O;&RCN!TO+f6Dtb_ToH=i1fDcK>u3H=T~J`IUV9UQKaeILnaxH>M6H zb_xwz2HX3%Psfr%1}Q7^D(*q58g&fAgVxt*@#++}55>he-h`GuJ9&#)JRzs?{EhaU z-s4${2Cd!mEioHdqz!YRL+8uE+7J8u#01|`-(Zyvf(|km+}SQ@^KruT$erYa+ycw;&4XUa=Cv0j27@M}UsRzy^`FKNUYf zAR5qX8L77(Uk@_kDYJ?xna4{!{_c2E`7f-VC~f z!0KSS9&{$vZwE8fd~d@2UibH5r4mTf$!k4fb}_dUk?P>>yx)=AImpbL`qOoPc4THk zOoMRIYe}a9TAiouKh4Z9D-WVKkyZ%n#lDTvk_}k*4{k>5Oh0F7L2@WP1<8qdm$F!$ z?2__v0eksu&fyXFd!xwB!~M!6(W2x1ZV@c6U%yV}mPM}9F#xmb4rZjIU!gY+SK6*nVe&id*vj?{bxTf`N zSy(@n_aj*Q1(mYk7d6s&EedeOpUp0g$rqrSQ;ze#kEL}{ayiyhXt_M5)y6%1E0R_Z zFXls?Um9$%75Fz>Eyi!qU*GWHkUKuXLc@?Gik5ncvXp`$*25=qI=xpMMT$igWv#43 zGxhAinii|bArKoa68s@KB+E}h$YX={W_Mc)WZ7K}Uc{Q_bL>QXmMmz{f;xa=gRQVg zg44-7t@(PmjQPCe4C3i|3%jvWFCR6n6tom=zQItdQEIZ9Di|Ei6rs#gVaoo9u2;rQ zm$n#iKKEVKN!J`~ZP+eaIx_w)4_954~Ju)if6Bdy4>qiUvbOK(1Qtq)D$&;BH17#=6p*1eBDp zt^OlV%A`0E;TJ%QW`xd=7Dta}{7cVb?AxKR*LhLWPp+r}<%}06@ckhbIfVk1%#!H} zLkhrhMTV^nYbo=7d(*}0St)T(SAT0m&TJ~`HJ7jv7T50nBk?=6R| zl~yI&@!{voe#M$ARP~k6JmC48x@IUt1lUlh(n(!S<&JiWzWQ9f_>N2VnZlus>mXCu z|ITMK!vWHDuuz*PPIGT*`{vE$Y{p+D#Eu>b9qKql;yx@Qi_cR(hq}xpqMtoziz~~{ z&Za4YYL)BFz%JZ)u99Him#N0F5fcSnmJ+tinnxr77IpNo0mtb%dBr<2@$7cO(|LPr zbFg{!IKEHNFd6es%t;NfmIRvro33bmAe3QRIA_K9`Qri(kJCo-;7KKL`+U z+-z(=nLZAKFsj0@yWH{D*82Be0A^%5lp%^c^4Bi^WRP>~JG+BY9 zwH1ar@6^g(XRW6nP!;dw(=Qgwe>tBkb5i~$svEYoGO^s^>a6R!&C%*KTF(5@3(D&z7^I-2)a%c0cdGAZ0u`sZ!n0j&AqG64@0BlN^>_6L(5iR8(&}nd$no*iCndqu zE7TPTQ~~q-;Zmb23it~yMawxPV`TpV_NrfQ|@&qw%_!NFuul1aP zwJcH^jv=*B?C_*@lEBtj@Vx|qGYeb)Bp1flyK(Xq3h%_Gg(S67Ew*QagD)DC4Gf;e zhhqq5inWZ;Zh8M6AiTd%iQ99{YS(L0B$_{K$s<<8 zjdO=)%x|}70vHqU+DDdcpFi|R=cxC5Q4np#0gX4mUbS3c{`vD~ky;Ka zH#fJ>&?l#P2MXPb;8}{zXVX3rxlqeo6Q}id@`x-K)Oii-fZ2Q@VWI^o=B~ZRAvc{x z9^%iVWo==2)6b3i>S%SEVHrb}6#i8PD-BTb10r)vYxE`D9U(3911`?^7l^^Xa%^n+vu{ z$bFd?pU~czDheQYr=4{(oq(|zy_oMR7}_EUlN;8)Aq9mNY%AnJXC6ejmCSBYGOjFmaqm&Cgpkqbn*VM(pIYBIP+jQy@IBgPB}x_oSX{@g3o~9MWr_ zjv-whgwbsk*fYH|g4yt{1AP>;A@?Stq}*Ql?#Wy_pQeG$=^;f|A-}vSSF1>I5cb+Nz8(q~O`eQRPY%X0_J5fAD zsYI#!usmvGbq8cimH{S~(o|Wyj6SKAk(Lm}X5fLzy3J!YK+somS}DUTWiydpg`fnF z*(OvL5xje1P;Dw}jNazDueB`o&VpA2=asG3D%jray1#_<1gdF%yYecB-?-MkiB?Xu zR26c0>G4(EchOxVJxYnl_0toBc%^~xH=zwy!t;`>x=GoR_+_z_@So!DZ*tc<0M|`U z^k;CZ8@#TyXr3-8l{>!x9M>^#6@ZXdzpG7B=m`J$umB6o&uJ8GuL(|GOZ%?Z(o zqB!i1INz<1r}9Jx%!CD69Zut6)^A{a`0$}xgRSoK=g%d}8g1UzO|gVcRCb1`R~e>T zkSCJe&S_hhfb{4j}3xaKnp5=g)3UW3Na$_+Bk3sN2C^ zs1IqX9H}1?va;>@+NNNWPH}{PKIDGCoA}Xq{}2NXz3L7D^Y3a zG~r;D(n%)XgCbB6k*AG%hJzq+fXR=_yD`Vy4|aN=^XYYrtGvKkf)mvUcV1&(gWcWT znkh*v+AlhK=TE3tYpQqIcqrN#k4)UrBI@X>Ty`f-FG~4yDVf{X8ZdVD_9J8Q%zO8W z1fJdM1Y#&*(b5tyQXh!VXuU&^w8R-MLPww0mhBICl&bFFF%HJ2?WJ*(S(>oaPZM82 z=7VY!)$@&Wbj@*+CQ)9EXX@d2N$LGEad7+i`fPBKs`Z-cmSopM(e?414jWIv|&+-AYJrD z?p?ZC)3Uw!F3|x=egCn&^rN5N|7G9EUvuj09j&KP8E8oEQp2CdJ@Nkfb_)(NzKwtUjb z_$J9gk0jJ0Iv<#*by{MpM*-Q)ecb5mj0S-bL$$s`5W{w%GNqs%%%Q?;3sXu^XGJ@* zC%U5p2gH14DFUs5ca+sB`5Tm)@!J1-dI{G)SZSw7(5}D)o!h3OgDzocjizfy%bip) zyNj)iF&bVHVyICzV{%c{(X_?Zcow4ZJBGS^n9UN2T_402H)8PNJ>5U^5*hOtGu&kF z&AVPY6$b$H& zozd;6po#tK7Y%kQq&6cJ#}Dl;%tm)jj4~Z-uh%rW%Or=w8$X$tnAsLxe^6dDzPci3 zY1+86&BpKT->wR(b#?+LKyr5vcI~d1Or{bC8+GmHWU>wr%MhD}*gCdWaJ-fj<G^~v@y&SDJor!A?_fMJ%ykq+1)VI(GjZh%X2R8O`(2zM#*xK*MqmsCwQ!a)1at7 zR3Om3tCUQ4pj`<;v)M2{^sJ!G>m#`$+nprHGs{g1e7M%v*YC^JUw+qzf}W?(wJHq4 z0R4rIgJVp?u#@7%{+B0)<$Ba|1GN|qFH0ccB8tj7c9z{9GthQI4xbL4A3l3Pfo#LdT@;Uq`u zg%Bo)Z0uc7qk}rk-5Df8;m%oAGRTG{`<|6{@3B*vVf zJEeW=A^*Wj?a<@f+B0ZZdzSg?8P#FH%?Hcl`6&?i76$q9;e^i-_EEy5b-#>Z(VEKR z(hp>`@c^96=5WGR8~(EqTKu)ig%DJ=H8Xd-nfpKxewuN4TB&L(UwK_!QUwxWH|+eq z1bZu2ez`auZvsGQ1yk17Y!`1w8t~|RjXlGcnC4&oe0J-KmJ<~`_eh(6_Hk`Qpg+9? zTBxl(cf7ViTpc6e(?OVr6z^{In^e@C*xH&^P*(0^awaiZtlL(e$r5p|D7`m-rtr$3 z15o+^!>sCe_#^$E1AYPE^uXX?cRYilk^nRStpydNXQYkepyE$0zz2G4V~h*(a7JA3 zT#Wn9-|Q1UdNxj6E3RWvf*o@(IllP`UoG8@D%{gmAa~~5tVafZw!BD+ps2jK=F*(X<}<$mUO!AdZcGM&tC7DB^b1ygl=+Q&AGPaSEj1Ea zGtPDa37{;imDKK1@p8pzmcI#F|AMHbKRw;*DR$Y3yETpQ`r9{rS7%$jVPDJ!Q=E zhi)&eRHJ`H3NYoED>^8{0zzQ&dDC7XaC;i&$GZg-z#^K63OD6nhd#dt-Vn&hMVxE(zj=6(Mja(w~oPj-E|#%JoEJep;m zhK+MJGCbV-1tzek;;qGt<+IUm7pcf2p(|uT1)1%JDz`9L@b`Uv z+KZG&K20WsAd~IEMyJEoG#%p$N;8*K(-!O_XosCyQN=r$h z?9G&hr15;rwOeYi9M29YUbJu2w?bCB_94J?<;F3THpwQdJN^j7XIbiFeAPOhdb-n* zmfv9ImZXh`w~>t>Nl0UjYQN7ex^l3#@jky#m?S<6u*H*jv@)s!W z6}CpD)wM%-qPNVil-%zT03bQ{pQq#I-;ek$CPh9-u=}3!d3`*<1pRUz6En(NZl?e| zG6pz!G90rM=k{XZBV^gAiG1p`#8l&2F?IUxalz(0*+$X|IYdeRQ}2^E-!tF*;E}Kw z;KMz_TfwnD+nTYQY$Lo&sK(y4nWObR6ux2lK$Onw5Cr4{dNHx(&7<+rw{~4I!4Ev9 zHz+;$Y1mQnY^J-xf-r1k(KfRmD{GZZqipM_z+J?#Tst{_Lxa4E>Cf ztkl%dPn(0Z931$bRQN#VUu%SHL{ko&dBg&m+5HhNu8Ft4p!qs0B7~R=HAMe}IGIiV zOI;nW&+Uvi;1NAF=0nHJ;g#dCoa=k+o~qX`w~LaSd6{jsos)X?>$V~ikAh3$1O7^C zJ?M<*4^3W=+%UlHw5LX2O#lg^PS57(jucP?I%f)1sfWJ`5s`8j^%iFNh4)2}ZUBiW zRmhnUDBC`?Tv-?EEeGo++yMwY*T9Amea8g4#Od>&secABW6OjYN@Orm-g8T|1gwE!OkSo_`#N$2M-DL|&zYiN65d1TmV zvt*QY6%J9TUGT0ZfbY%p;3Pdh{mTWZL{C>=i`M-S*Q~EJY<#*55Ik{RG6m48)XPW1O}4zXpB~4? zCZU+2EPvTtv#i0~nVFg9{k^^2vvJb-fCk{{%uNOhy5G_tYFjX_o~$;O>#JAV8*0|0 ztp1>IklCLtpQy9aJXmVPA4+EHi7otLf}kL(c7TfW+ATg&6+J=cxBnFi^+ztd-10~5 zeSn>uJw0DXHQye5#Cz!DS*F-6LT0(>8KALNl59CuB<^O*-FSco=J`1K8<&jxd5(6a zk;iHPra^{)gVs?iO#GRkBj{drMZ*_eMXX0~BmxR0OJ(~XJwM>>u#pA3>@|HZWK!+5 z$!m){CT3YlBS2obq!WJwg+7tamgJ)TPB`qcFDV}H|t`SpcT=9ja+ZQ~Yp)swW(N3Ry&?-jXE zG&sa)wWjxMG5O{mNhl_Icq ztZ;n)K(t^_fQ)aUzN&~!FBZUlNXPO%SfEnpA%Of4R~+LEYrV5tNtt>8-*#_TC0V~p z49#Ia0<}{=+p#HebGHm3b4V}7V=c*g^n3e*i4i*n>ZSJ$F~pUFnCw&n@ReM|&!!T~ z>`2{Eai}$)hR;|o_XEW3l&Ab*8ivz8zUY&)6|b_4 z3=IYD>0q%g4g~}n$}iCPW2F9ZoH)la{3O?Wa1!tEctuf@YlIg*9j7R z=;B`CL($Zc0&@m}y?rR009x5@y|sCm#p9qPgS@*<+RpN)YWIS714Y0gDwtBlE!$!w z{hs;ZQ3|7jOfx^N_lCVtmAI|T_wCxV_}GcSx{P)c(kN`v&36z)C1HGyVX91y14vD_ zSD#!gy*)w6#Lgzckf)(DzF0nljw8KSmXka95ELD)y^B|L4eO#LMl+qHDE`-njXRmu z)N|RNceh@8Z1o>{U`TFtr|n2=;DC;CySu}sBqv&?S60T1Q_Hd-Zkf=FIwtv7V)&Qy z6Z9yJe1XLBW2T|oK>`m)MYj2V(^b4t>Xvx?avkxDDAh=f(rW?S*!#*rHwk{7+ zwr8EDoz{hMqicc+6LLgNPtk9yP3C*Sf~tqe5!IBZEd z2S+qHuAvSly~J!>D*p~p^2?JAg0t*W?aCv4$ktwIT;qq3g#{ozO>Y^2I-~p{xE#<8 zyREG22~i(J-tT8og7h$nRG1zsee~+u8r{ga=4(|{i zs&n7U6bE<0=)n>hg&Y_rV&Y9%Ho!&0El*)nOa8(?HUh7k#f|EexV&Xro`U(@j|}c1 zJ(^kqFQz}RT)z=vcd-^i-9qJmQsDH$dVm=fQ zfOJF0@gP0o>96lo^`mLK)r&OM<2vHS2nh*o%3Dk zv-?6n@~!`%AR{C5Tib>r?e7eW3|_8uRuDTpU7B@)Pe$aZk6X)VI&PGvUluGCN$C4x z7U|4(Y_GH?jd|Dgw`bj|DKX6p*AkosAOR}U+HeSus-pyyfXVNk^f$#bQBTi?2^1gF zay|AkFqQSiFM9p&T7b938V|cxUwr7h;_;|g!3A>32ZI%%DS63K&#Usj`}e6{ zxxgpbKOgIi zeZAZFQ@K+!+j(!0z}+c{aHLmXz1wN+V8K4Me1;tSaE{x-j^2)_CHRJd+_tBs>T!Rj^96;C7jKyTJeC3L(7@^ zcr)&EO1<|O`^_a>*>6dw>w9pIPvf`gy_nRSR4Bg|=kQ_s(qw7^al~$nknV&7MQJJ^ z{~W0--`IP5-YY`DPfoVVlB7uxSgshZmS@4%aR&tmV4mEF9>nUk7N>RJT!m8@@dQ#v z{M%3AFWURl$7wJg-TrZ4#}5Xrx?!IOK*=vxPtM{uR5HWq|J#}7p6dZ+{i(hdFx-^9 zIHvS3+gBq%)y_(GRo0(@e}i4?_Clf95D*`XSKk0Fu<3CYAfa24Iq^Pxe|&edlL@T{Gc_SUggK#V(DtTD#{!QL|PjHKv9tcja&wFnX9F+Br0f=m$;nqx8< zy#BpATav745InH;v8sbJ{K8P35dV6s{fR_JdtTO9m&h%1o4h;OTJd|1yt6{2^w{;c z&UIB}@Q;z3>t9)yEK`j~z@dx^m|JU73@JOdRSh+Vfhod{Ssx-O+w5}58Si!e&M2(% z%hF3U#c+GqCbOT9wV@E-B;t>t^PN(I5^Yj8^Q9 z4+vGoN*Vlpd_I>7<_Gf~YpVVTBCqo%Rl*;(#5`H8P`;hM2jNY$@&KD~+S@_7FC+Ao z8~`FQIFToRvYBH1!c^uw#n`X-tDqAqQ2T0^eZy25?o*>aE|%rMjC@hyeOwIg7!o!9 znV1lOm@X8D7jwvG>BuXf-5oAh_u=^!iuXD6VS+@oS(zKktSdX@Tpz1t{XKDWhsXxo z`w1^F10bEtRHi--v{+o2|4a#>{9l@Y&~IO4Oo!`GHX3ktV0#F4RoM^sD@-$qH{ zocz%nEQ)QR#9DRmduX(R;?q*%6Bt_eNE=p>s_&j=N8N5Mw(uk1EEc&(<8N*+v-Ihw zhe~)cM6TjBHGE)lDjIv5z%9nO`tnOrNIqR`6B;=l?^!Zu>aPw>_~%N+)Z}uVQUruB z;25Wa3eS0aDcjbFm4$AQ)svVSaw>Dz0du$bgv`SW72t}%VEB0SCX~~JmFdmK=t$QY>QK7pkM0zgqOAL{uC)1?aD;JX$m9vR6=M1%-3GGO8ZON~({tMe3TH3RG%*Kx}UOQ`tQuIblys~Jqvj@*?>J8ay9*WwL_bT#p{|OEiHlxO*!(UJyo9M<8 ze1uq;Aptw5=Mot-DjZ%A5Af2HjTozN8iOY3X>=z-v{dC*oNH>;n~lUklIwjD8t0j6 zCv+2CSb`wBhj?;j@?Bsbp2vi-%fWH{h&p{J3o%Id+L-?*3yYxhG0o^RQD!!zEeiA1 zIJn2;NPC}>==Px*es?_O)u5!|and|!&qBWwhq0o@kq-l!goaH*`q0+<@|ZH zlUXJL6T@>&WJSpJ#xE)wQZHr@sn25bwT~C9q!)|mXCJA#4FwVrY)i5pVHSQx?z!~t zIT08V#u3D!;B36RkP25&@`3TO<8@wz5|O9~qrP{2(8)4U6$vq6GO$%qK%;R0#UF_4 zFg*pc-oHsh3GOM{rOWz$iAvjr&^x9w#vQ3l4wgV+V~skCmybI0%H%4YoOXZ#4HvT- zhi~e339Quo1%`ZPe7j5ul2>y=8aIHC{wJ7uAzkaw7(@!({2WF2HFd1O#T3g`BL&m$ z&{ywrvAd6WRFTY&`JbVb<|((ga(dDm>Dae{JJw1&&}QY@>DGzAunu{^5x$29ILXUM z>AyauG9}@BY%-5Dp9i-_hT}9@%XlE+6SR>%CP1?EksAn*m3{=$Omt8YH*P6mHtSoOB^*t4^jGyf!D z{-2;$%(|a73sL|JtkeAWrs)3P6MZI^o}H4rKF^-~y=5S5xX*DVqSZn_ew@Q?F883R zP80bL#;D#-ey7$Va^XAyLIm0xCnNWH0-2Q0@dxFft`ZIBJzAllpFw; zfVa>e?e{&^qEl#L!4Fpb<>2N%G6BdsoQat|?jaA#C)WC?buC7s2D|xsU|Wo7`~@P6 z>$bn2d0E|roaxoOGv6y65`pv4B@|qPb19#iNuZ?CuyN4xazW<3}R;%w9XQOw1|}81M;S_omZty^f2HFiVP~LKr|=o zvMdOdA`e1O!JJ=F{A}uERZUo5)t(MXyWN@d`KP&}%7qh+3N0`)6S?}0Ng6RoW>P)Y zA2`l3+17pDr3Ty!w{>m+H*+ceTMTZTXRcEp%LD>`$}Hbd*KX+m0&uLPtDhj4eV+@sv6h2fV*kzWG$9RK+&YwHd)QMXXb?PcjH}E4f zZOOmD4h=&9agVFKJxh64DK+lRs5~KT&;Y9-vMIO?o9`ZkjH+M4X zDG7d@fdeM5B+dTfHQ*KIJ0a$s|KudiEX;f7C-`tbgB?VG{a$`9jBLl4yH=$); zIsEc(DmLb?IioIy6bDw-)YgvNi2SEZAUxCbk`7iAE%hDo9=Cfkcjbz~6;n;(lj-ec zzt`OdL*uOz)z`02tcoRu20HYhDs|V;Bi_^;>S`1l_m;@OYYEXSanZ?tEe#xlFI?EV; z*0rEBZ;jY4@s;XBl^#z!(s2%;Hg z%Y`&dc6Yxe!>9S*zh4@yw`LBkz<@FC+)>wm#q>FMvGnV^37aMQ28;@%Z4ey%DD$P7 zp<%U?Hf4A?vnQNG_c)^W6FNcZl^c2W;$zxcsPRq-bjGR%t+plm%>hlB4lFRi5Y&&j zO93JR;k6t44m3y(VxIDt@l2+CFnDwqA53NyIsi5&y^}WH3S&A$9jEYR%Y%1eUmI@? z7%yC9iV%iOn85sz_qKx%c%s0!rFK~{Pr^$crcV0EcXn1(HCE` z9T~^Z$iBnH`4AUaef}(n`9`)2|B3&@^u?f=iAr*EC$pVH)y!LmaFV~rrD=GG@j;=# zxjd}t3$QW!!*8h{-LptRuw-xt`C)>G^sStXtz1Us2QvEW4&5bO$j)3Oule^~=W7JNA7lB&wdEt7)M!?sIUX^#i7k%tJBL{}G-)!IrfY#RtR`M@yzsvf zmRaPlIHtsF)7k~|ra@Csc`c>l#&5sd-1U)sVPTS~d>m89hd$(D_$bejj zIOLYBa_^$HAi`^_)NhVH6@rj}bJ`IkyQMZP|7GuxWrW541MXTNO_qI`Q)n!A$ZIvC z$gy%5elMec+ba3n>?0ZmlIIuUeAg+*I8V=(6yjqPKMp2E5V189a}qzvf9mJ~n~F3U zDfM5UT`I5S_vIPq0Rsa{oZWlN$ddgr8)>DPTbe9xVrI+YE&> z>S3R#JxrdvXPM3~G<@yIbECm<;hRHA*!RZk^|@%y#CMlPQvjlzacCM-UKLfMr1hQx zIr&b80(+kf+~6QEE=-RBk`brYp>VRsRgaC2{|wB+yg%EDtg4K%JjKuS(-uRO?G6~$ zR`rLkzvYEBqb!Bbk}Y4XH-eFOF@xY4=V3FN+RiB>NA7e;-GHrE!tyy&?XIQ`y4yaE zsS|QYTK_05(_Q^?+w3DLkK}t)$YKI#AozXHd^f|~>r<-h1yg+)zbqpYr*-BkrqRPFXkpup=z?O49Bl8RWFbIboIPoGr zD$S4sSMk$v8{I};ECiT-PDV;vp4rKaJ-Q8jq+@v8 z=S7sNWTpi+Bl;i0lF3-cwgF5s?O#w?isS`_qxXsaGNJ$WfKAWklrQjMZZp@HMf91o z0BsHxS*iR+pE%go2w9(>jm(_Fld{Z^XRHrrhB_wd=8GK`d7rn&`L2nexNb7dzL2cR z=!8!a+Vq2}BpxOy(@f#k{bHRC{QQ}gu98h(>xvD(-vc!*hm)qg7@%ki>hh4BT!(Cr zyL!f_%t*P($6=6UN4Rn`VMrN@LX8|)Sn4kw8uqQ2P4>MTnoS8PyQL;2)mGwQXCJL| zK_?Hh{r;La)~^oV1S{!_LygBQJ`j$hZhlC3&gA|D7t$oaVUS z9P*kiTpOEcU#LF6jjNe5N!|^aax6@@#SGF~YbxMWqaCH-@sZwi_fW=~`t`XbU|7a&tCEFrO(h62BTGEw!L z^Z!#<=tBqGCg>hv$u_6TJ_P`#OEm+`=*(X)SIM_?Q(L zaP-Su<4HxCR@4pNcYK+<9r>OyGz?SNzmNsf$h**`w|nnIrOC0PG1FFbf|r(~dmAH%6n!D+FxX8ST5g$T%FkD06gDRJI#^WNt*8Pxwy z^Ii-;HCBgFjBVt2W9Ju-Me5x-$vqp(SIkm1(YOs|OP)u%`u$g}cRw?5!fY!RG2QZ|r)<<*`{%UpR{#} zs;Vz;5DsqY4jrA5*c6*}xK`QIgC}^4j2}fZvSG)-&<u|HkH;0j7s;t4OfdP%O#^aN2uPh&?^lsPck%EUu7n52yg zddy*zmey0=z(9uCQpsY^+4U>VA=OC=?K(!u4JFf{?Mfv21q;Qzl1$9*u~>Z(^^O4mSN^Ba42Ji1kb1LAL2gdh)K#6d_irvbvT`S(J-8 zuY^d>xU)1l$P+Er?4nD!3uLwybTf2>;G(Def-4C02k*ZCQsJ=2667+sIM~05uxSCY z$BSMH!rG{pmQWM!{kVDx;Q~Ys^(r^Lc;X8KzVL6mixW3x-@NFZ7tsI((B`N-;na8% z9wpzoJ%(ve7!5AxrphC1dWXn)0pgC-u0%D-Cwq97WYs2l0x_;0W;ercx-ZdpzFmzv6a3>reW8#k_3ize^$yJzxGQkJ4 zn3DE~+9W`1{zpv|OG{I$XnPEb^*G6W;>+~5O~GXxoF{33uEHE?PAh_}N$;o&&RRyO z2yUBYWGhWy!T-@QG)_aCuoqb{4S>>ZS_aKVRZQu|-m6}SmtJ9 z&+gOI{ZXO24|>$VlD-ovo6x{4W)|c>L*B-3N)(V)-KVK#z(p@T`M3W`SH&Ev5_&!O zHU!D(fZt^;gpavpRN7997(esTWuk>2&c(ntsQ0e`H9xIif{SmaF#nE~9%+5+7&Z^i z1h*_K*`LiFom=8b^I8!Mv>eNln{64IT=X%W-3uYX1(IJH7C~m;rONFZAw+g8!RD!1M6td#LTji5=`{#LGio$G?#W!SyXqjKQUCIaNZ!!>vDb5-GY2XzWiyhC z9_bWZSzr5^7s&p9iy9M;lTf^Y6e|ER39RT97MY^IejYn?P6jh7I zf>?^teykT=KiL5}4GE|dw!ZBy1J<8Y_&{m}CnaaB-WZ{WQ?XyUPj%&}d1*S1NfF$t zqG_byl^q+ha(tC}B)9zC;C;7%vNK~qkgN~-$?h*pUI(RrtvT=8*|uqB3;i_m8o`YK zWhVLqH03qIEzN<(S42HUY$8$WJw;WSz6yr4oUqv(feQf!PkANhrcweeR)rs4iqHRC?-;l5{bL8*aOG4#&?NiWpN@?O~sMgQ+K z|NNVtz!d#NhVJDzwzNHSSw-0T$X5j!qjF>sn2R%0eN48bbYpODkuezyJ+^@G9D2_R$`1gf^$|6vq3o zz^tO$zyt6<^@v^qL|lS915Q;?v#aXCxr!fT5FCU4|W1z3<4Su+O2YMG51z@v;w z7C((ewzYm7c2qu`WUwTvGNP_BB0rBFYXZrU4f_E1*vBi+Y8-tci&k@vVZl&PkSiOZ zGGAk!WG^de*G(uObuV%5i>!TCypKXN`VYpTdL0KFlD}zNceVMsUy3dII>-ur|F)7R zE5cmTBPJGMN2E+f>jGDLD%q(%;hC1Eb1}oZysC7)oG5ORX7T)yf(4K$_YxHUR}G%x zbho>kF#oFH3WJ-Zc1)HYts-b^k%NSui|^fBXrTHN&k%Tqi7({vh+M~3H#=N%8iREy z(u^#&;kZ^m>;EjgqZpODhB?)Ef7O`3>=?7@&@nhj$8uMxa+`Jr{wL;YJR)ssT~a}4 z6E+Aomxt7-k@{4xpfeJs5!3uXt^Eg7Q&0Fc3I`BTq}V8mfPe@H2uc+M6r_mKM7nh8 zCG<`}K~TC%??{v0J0u7KO78&zgd)8J2%#iE?(qA+_xsje>sxod-@4bOIp<7FGBf9# znZ4)P&pu$~A66sINvs?(&A)8dQ~%5&gU%xBKURI-OTJfB3G6_KAry8x{`vU!myb2r z7~s}Y1iB1vxoTnqM&B{=j0j7?NtM9L{~_2USM9pc|Do9m4=M;DTYWP4vEdC0b2@{E zRO*rSy0XNJlT@LHOj% z!t?ac>rfx!Ij!zJWmOtjcMHB9VbNK_O&0lEboc@@ppwJaH7@Wqbt?WBaQMGr(N>3Q z;+_c7A5FAw;!__KWSLZ6{l}jp|GOX3enJ&3o_UnwN7}nk>wy7HSUK? z{?VQka#K~mP1IyEDC&O=VtbhOOfkl>2m1=_YFon{Rv+6g^@aI;x?Ds^tC`9Y{1y+! zxX&R|lk@!rKmI3jl|bcRRVx%WbrQT**rx(bx>XOZ(=P<+@JqTSH|z)FhpHK2EP_{2 zw844*^8r***;qBZF<36*NW<;p4#J1rLjDV9DDj=&`nnb;|BKe<0bcqaEXevF`uqPA z7JNQ3rBZz%#oDudYz78SC2_{&kehuk%&RV0l$x~(2WEcHI|mtDR|QG6nbHMCcY6oG zXrwFgp1-bCaY;NT=?hb!!6_pj@BY}e zM=FU|-&}WYnxTXULucHUvOgXgSTv)Erk7?H(E0zZVCpc9|r z2QTkt!8npjB1MgF$bP`%0qY8M)E5_wg%c~3uFDKKUeog_4wfE zwUv6yz8^4%Gxx`}@Vph12o!u~AZN>7f-5-2dPiu0T~13gzZ>@6!XnEXy9~c14pg3~ zS_io_3HO*dbmjy!rta6_SIbSlkE(Kj>|W^m5ni8fQ+PS+nX5_Z-c5_90|) z_0(q@c<|MHO?CA-A&o5;2uvX*CFKf4Nm+TX>)+V9G(RtoSR!j7|)(B_Kg-s=UT zwFyPC2%WNo-BC@4cRkB8)W>ZVaKbe*Rq4>ZHhcUA5_RInS71nq1b{;kRlR z@`A(r3y+;9AyS1ORDa^{CcI13CPx;SVm2`*x_YZYZ z*=lkzP#YP>8~0zUKQwCo3W+0i-dh4ntED<=kab;_G`YAt zXL}g_N4lI067z;=yQvh=U#H5%b_Lk21huub{Y=jKbXgR18D#J-&eE^W{&uk_+G+pQ z8+17@P#I_L+7PtK*SUq&|1nXuESt0lGY&=HqgF`HmM7u+gG~*_`*M$x*UhtPWZ>Dn zwi{Mri^|})K@Le9aG@CjR}XjC$HlH_bD&`N+U;QA7jWy$!D-y@KbjD^UlL6US-}3j zb+AtXJ8YL&8b8>2XW)s^fXpR#>NNa*EV-I}E8kZ=HoC_}GDw4R<3{N-vo^X*T()4` zmD4DF_vAdOGLlJ50VG!LqKRh=Am3k4PftlzwG)VU?QLL8-^UdT=<_r6Q%OyKduT{L zxpm(7Qis_)NKt51Nz);B&G+wHuRn6GCJD@?N!&}0UtCy-iHQl6E85;GVOVBjUGBj#!!>ssBgM1CfMr-a6D&{c9GzAg} z>;!+G>I9{BgiVu~AG1n1qO{c1*r2@?CjS`6@E4iTNVNE8EN^Pc)*Z_e1g=VUPEK+z z)zoJ-wqxh^GwsYT^TS3(lv2^ys(Rl%eetT4~`^rzyZAus|^>~fW0^_^-Da zsBE(>l$FF>f%KF}nko};d1b(u6!MQ*DF501NXD6{&)-oDr?K(+Swc*}bKps`yHSSt zp_#AxXJ8=o2lr2{B6`(S@ed$l^Y(+_?B~K_bx?isILfHZH@~h`L-jkLX>s;5Es8cX zg>*2@na>M#4yeIKE#A-4rcHk&%HI~~+zgfM21VwTzvdfut^gQ>u~zC^6etMj(7^8)*s5xTE7m;qW@&_N}Ve8 z>fFo$6LFUYBpi|c`ME$#a8ke?eQ{X?Y_@Kz>U-y6UP?;_?KZamZ_3%Sl}6g7(P#&M zeqfd0-g2_nqYT8Z{wn=oIzK-}s%a9RPEP!UmQEPKJ+wAdcu~4X{32u(>_F}!UHcDb zx_{|{tUz;xi~4o8pR#wEo$&iM(^G6L=n}(lyA-i5D5{nRDGcx4YZKdOeUochvJ70P zq+Oy@6~;g0DyQLR_(sl^?q8n2Z42y}o~y4H2lhBal5J0($yDCDl+6UjcXEjBcu{yZ z1+8f-S$iC+y}iA1*A-P@ zig8y=i~%TAf4*yYteXDxOM;Ql-|H%-@IW#AOd~qTF3eG~*&RW#m2w|a-XHwwcwAYz zttN0FcyUo6rA*f<^s*S@;3DwdVhyEbZLQ%?p5K}GN|mt4{ZVywS*Oa#5R!li!}b2r zxhc6F!)ag~O|osO%>VAo-?ersJBAH18qvGFgP-45w5*!bk(G}!inKc6#x4v;|MtU1 z#dZAhXK8k7e*8eE{yJpm2v}1kB+oQ?W`jJ2pYP_C(ROcK9=i|@BI|9!@D(Mj5$APx zUmauvrbHKY-p!}ocHf+M6u~MpyC=(qbS?ekcca`L(S@n{99;54`_1*Jf6EId9-;^S zPp&ZuJ>Hp_s+l-kdU2<>zw_(#yU_=YY@fzbCA3g;9@qr`7wpx7BqYB64IT z^k0n3M>JuylW)!}Y?auUpN!!CaqvW7tnj#ClQO5;HvHr2+G4-*4~Du&4kv{7efT;tca8GD?zo%;VS`Jg1l z!kG}*)s9+WQJADeP7YITC9p6hXN;xp|2xVf>Plgd4^Kgr<2a6(S#uEE4$B_2n!l~G zg)@XMcv;;Sr7?<7*p3f@l@SClW*$X8@>64aW4gbs`85&Bed@Fgx9F701owAd^KK^- zTgHj08xZp#?y)6jj$L!Y-k-HxacFv|*!J==-L78eBi*43{&t}>@Jn9UO$2_eZu9W* zdTvf8I0JBlCVFkr=Q<@mx=+$KM2tTiIlA8~7Bz8a6};-jQjs+6yR!7b;~dt#BFrdn zIpHKdHh(hSipUi)#_c`p`#Z($>4FzTavyGVEAU;MO}b3Q5DgHl}N}YtC04^Uwm- z*-hRyl`l@XMvkI8y?FbBJ;VGeah^7yb$@L{?kqq3nAB)-G(6Z}LDKp@0P0EMjB_wU zo57sxI}u1fLq;kKbsfmFjk^jgf}|Huvej`TA%Q)In&Z+^FHJ&@3y6|2aM3i&^&7Iy z5id8gKd&hm9QvvYReVI_v%OcGRmh+(@a_G6JsfjO(4&Fl&Am}!19p?46TV&@J_dA& zV+cJk9za~`rNQ#QOgwHjbHB&e>xpU~8ESUXGg-bX!$IFS_y;mb**f=pbtXsP03%Vv zbeTzX&WR<*B=7k04f+csVwKEn_xyrMh~+}8Dz@G$sVse1h0L}HPiCIriOxceL4*S; zB(kb&ZM|+=O!c*VWpCi8HI@OXclK%4-=b+3!Y<3N!I$OuYN#>(VA$l6`e1)T_00|lqlX9n?VFY=Y@2o) z*=x%;^aMVc#WA6I>?Zs^2x5ZeFR@j6uj4pBM@M(f7t28cd9J`(0p0oIa+*I*je=G_=ziSJ@1`I>OVl5!*9}>JMMCl)4S@x1(+b-G&Y$5?#x6Z14GC9| z)6nhN{a?BQZ?w)oE`vY{S^O?(k!cz&r{&LaWFeBDz;)2Sh%YUGl zD1J-nH2gb9`-kEl$MdT|4L|5u_;w42{P~)D9QSf9%vx>ZAPBaRUF$k^{k zug?;Uhhf$L+VZIkj;DmS;NrKYKt8(qNB_E@hnj^vtPLz$jjs#xAgzj}iViA4zWcKB zdNPuhDicdCJaQC`bO}9luE)@ca<+pl)XE{t6=8gJ)9~uZc4L?1MB{L07J8h!&vAX> zkmWD&g$QkZck=`3p_9-(hYY8)?d$|r<Ae&fW5J|ZLeuJmp?h5f4_ zqtPa(d0B(QUsVIr8?V}V%bLxK4l>6aErDcG#J9bezo<0l}S)Jp|Ad!3y1BFGL33wq;FG1sD6#|NbXvAt{vt`D2!LR(> z=|Mc|Uur{|OPHnhe4<30pj5rxHWPEF1&^M;lbE0sqk;_%M3k6e{9nD}ib^|3!mv78 ze_AflpQjb8Zd)TMVjGXM1SXsJ4J*~@XpA8CAms7nMc`Uw9Cv!aKQ0n{d zE_>(;vYjKLp_^J%wj-Ehjc5{}CVTQ)Yw~D{k$SFIPRd5`Eu;^yiE2WVbRLHzMJ~zD@I1&w&x_0Ug|GfQ6ldV{3rlptg4q&t%M$O-*@d>Zwgv zATPDKb$HP~boQ(@78mj`2!TKx49d}dO-N9bmnR3K7?-ecY~8F+cxC0|b|ewF$<+X_ z&MIJn;F}^{X2y4vt7b3O;=ea%Ie0 z*eqJa5xG6u(O&H?56?@&BE}YSv=v~r`^(rK)53t>74{>ZcZE9*Fr6B0M|5>GFpqcM zpEV@VLMX#u?QZ%7W%XQTV90+WDd`G)gk4Y$brk@;1G^?0d;9lT%SB&P0O6BYgaj6B zY!pweWu|8z<}29!SRM$-0qJrf$mm%MCdZyePnpw`cTaR@pLwlELhKP8N4_L`Av9wP zb{k5&PFB5QNyP|hQh#Z;9(v9e6DhYK{O>nzUc3NFy!oHnG0Z`(DqPT zY;SNAL@AljSYh5eQk7lf>|e-;%n#dLn?KkYL+v|>D!+LH9AGCOU!-N}1^oSUL`2T9 zAJ$1!R_~K!Q&m5!Ul7H9oy=^Smb~7lrmsu8hlj|vb_a^-!9jJ9#HnU&%?+8KpFbiH znDF?NP|VJJ`%6{TyyNB}^Ix8b;pZDZbpkjo6$qa({7xXg@P6a$Rya(tT7wV4(uEr_ zn#&0F7cVj;9LfDT3Ol;6qb$-|@ ze#owYt;0OZUK$)*v;2>w}s0dhZMklb)DgEG;eVwk17C z$ADZ#U?}RAD5k$3DW^+7dQQUqX&^$#iQ4vqE!XpcFL3A2^F0ugHKxAq4Th1NU*Oez zjj1H(VJmP3g8cbwmub$x<+6AC&QxTr%W0?^4b|M*q`<<$bX2|-LTRNH(%!D4^Y(3U zLPCOEN#oOdvn?(w~NE&p3P(_Zy3FDpqv{E6}VH&V22q0_U)Vg7_7uU&Hti+CyJTYhjyZ8 zCaJ7yfV&_g&K=g9|Fiz+(E-c$-0mPquouxT0YpN!0oKk1J*$Pa8|R9s&=Xp8Cb7B71MR{XS&F{#gQt( z?lm~2Q0gycCy4~Al8l&`XW+V|qobqQ0x!WKA>U$ROsxF_fk7@)AXmEA$LDCjz8h*! z=La3D-FbLQY!TycrUwj{UXAn~4yhBRO3&YW$>&Fst33Q7kroWVL?#$;4va&CQuED0Q(hE+a1Z0-khm zaPS#&P~8Q)2ifT(CTxYIIyzr`NYb15sC^deFuO5^irgPu6Z|;UwELGl-Sk$JFkDzDI+sAnqG+q2MvT!McfpmR~8aJute3t=%`NcBh zC0)mB5Bs;o;|*SzI`c$NKS|kyX2l4%ucKL)d)lwvsQ2wW!ARAaOlYYQHD9&RbA`-*v_*UYALS2G!Cfp2XsdPoW>z%IKHs4MNC*ghqr;SGCb5EWLz!zV-ue$o_iF{liT=Cjv zR^vn=1||Exo$|l-x1}$8sNebx(YrDxeW`kZY_B=xLUl8pPw&kno!WL*!@M{ zMz$xmD{Ft5-1qQ&1CDO7z#Bsxo#UtU4KVq|#Z-Y)Q$RffmymjI5OrFJ7cFMVX3(E* zMAJ~`Z^}5%K*dhx@|$%3+-8PL_)Bh>!|`v&4v=yl+aEvOIa?NYW#DtO7Mtpj9berU zTO&-Opa=(|&8%bfjsCOv&z~=a)`Ay{F2p`z;g-72%AjawX%yJkiWM^i9nG((8Y^DS z{6u3oZ!18Hb*3M9qM=X*lN08z0Fao6#Qc)RCp?M0J~KelTqeK zs|&^-SyKPM0;T`{X30i$S5 zO^uhAmlJRyx4HUbj;}o+}=fOTKk|IUj;>}hY9I&<31tw0|URl6$Z<2nQQOhc_ zjMZ+un2n9?1Gr0Ez-Ix5IK>f71I4_p?v7qLgCj++=C}|E4dVf4$163QuKA=pDCd!5 z6C5w(bqe8uK=V$U8jMKHx+TbtUvXh1PXD}eMC!b;Bm z-tz%s$DqX}O3LA>I$E~5Y$hH)iI*#x4`XRiYVz{ZVD^zIJTy-6Z6zlsKj_jfiu?GH z^kYyE3csOWVuvg}=mJf2+nS04_V=7Mc6N3zkJ+ijW$@4x9pnuWERGDA%m0QAYVPi4 z$Fpo<90J~rSf>P-XEZiFg7xEGDJy@@kU&bKPbwZ*Vu+Tk|7V3EOlBNer<8f+AMH)T zMyy4vDa<&wi2Z-AN;6dIca#`#KX_1?dYN)q{U*H84tLg6hzR*l0#tjf5x`IlBHz2_ zoFsf8sGazXR2PVZ1V3CT2c@Q@mrVdAZ@X~4^;|l1`Ci~BPQp zs-!E&{gtfFcXT728xJrzUJ!c-;hPH3wowzeL_xPCpH0ot#$q7xsaOhIj*B~NFhpPT-H>^yTduFSW$_3FXMjUq+62YH&p^E<651oKM$vd7 zjRJhvxR-FoUtU%tGt%RWtIuW=8T(GB7aLtQ$DU7@RP>(V)x-(B#>DUWuPc$pXHy&9 z>tYyOZB8Y_rjJ>b{}V8Z*AzIWbOnC@_N}_p*T}qI6J_1JA_Cyb!^StIH4_~f29|fI zE%(+}>hrDC?w7%$ZYc)Eg{0@5+ z9A%p0<GileZf_YFU^fg8z08Z@g(23JrHkzj1&BPV;k_Bi;Ms+ik!$))_nmK-gy z=<|b5;0(Pc=}eXG(_C3jISh*&FR6IF@yLf20FDv!ed$m^ZPUHjms82f8xtpIip2#D z{cI7DwYUHUUAVr~2lMcRN>|%UUGxG=MPoN&Lol_8jQqfene7Ao1vAdlfT`|OYbF>d z=`nZm3O~{4Z3t>P7%A7bzs=2Vy7*PXh6z&ez1GuZ{usQgnbd0u&DXNHM_jgvUR_}14KhYVLwGI z67Gw0bAdU852PB`EpCsEp!R*IZnpZUaR~~>c!yuS!N|BeSgPzDIc8co{q=rVftfrV zjz)6~%fA0{-E5mPt$2ySau0dMqCxZjqKg@o1yv&aAks863Lu7+<1 zp#8>T8zIhzw62MT+Pj#ygy>t~TfEIzQ;U3vH9k~cZNZnPs?ED}uhT2!tEO#kadL95 zZYdlFPccUik!pL9mbXbIesL#<#Hto&tw}5n$eMc~Z6SovPcDma)C4+!OAHnZChWVk z?Hd7mtz@@bU!@T=V~Sf_Y=*$*Yh<Gz`670^qON%mydcBly+X}r8;7Weo&qx7siw4k-HJ@1f(xwqYCSQfB?c5n2d}LO}yAd1}`r!`0t62%&RBK$$M#OERiYS8!Xyf_K(4{C76r? zR9@#Dg#VVog2kzS(+x@6868;zTsiWLM#hNgO$_o=<=*!Lo}ag_jCTbh^rc7`7#NDR zdBq}qZ>S4hymS5f4-&WS>k$KsbsD(3w43SG7V0n?tULQ`LPFn9 zPd&c@FW_1FD)i(8K6;?;Q<<7rJx_d}w6v3Eu>*V(tMF1uX)rY{&Dq1lQiu4kS$bQ` z1BdxIn-^N80mcn5rRI?cp7g7y-*UZy_)=#WmL}?uJb%dEoVNdEoNG=2AjKUlwki~= zrA6mY>i7?wkBFHw(CbenJ}N5uu7=D=v$UwtT4guGh?n?>XVQ}INB%V|71J6l`U*v`{X46WQJ&1o?dGG6-05~@yP?x zw}d(e@pfj9Yj*ym6qGuc;g>B=25xx2MmI;SPu*|hfLemHl7-_^OUjXN8M@ZW(ufyc zkBkb5Chs~!`X+1s**fx;P)NwIl1!C#MEs-HN6IQGeWt&8^M$&448I%4ncVze(tS~> z)UvllWc8(`QH>HP|A1e=e&xJSxPIr(Ny|z^s9J0h5g*9USRdRU9;o11e$CMPYZbd6qncqGX+ zDeKosUgq{O^fnxM;%nq%^g+qf)67nWb9m--k2rA`Pf*JR7IhQ(06frOA1p2DZ^=Bc zkXcf-u%Od`y8T9%T>+b%%F3|K{9Y98+oFO3lDRsJhkGKlL=+d8!Nc7;Gc%J#vAMn7 zFGNo6p#Qm6+!bAwkSaFZ7#piyW9(||K;BPLD&;j$!?gAl@5A!sup)c5<#bZ=NetK^ z4pYCz^XUy29@uR;t-<{K{8lGNJg_i3z1FpD{E~}?IrzfYzj^r=(c~wA{;qQKRDx9 z&nzkTZ7INW#(*E)9T`|EV8>7GkIC-Xu=DSewXY*~Q)~hCbH>Q1wh;ncy&mG83$#Q3 z+&(~F04UkpYRadws^`c}@zG33{ru8WM~=lJfX+Gddx*Tg9}?-m21Y(fq)zPXvC!{L zxGhXqeiCJb$qnu(rtIu){h8{0jT$72`Tm{kSzGl66@rb||JO6{wQJIAu8`U75sH3@ zmiNDASm^u)T56g?MvVbHfXiqlAucYMEPad5Eo#&H2!HrM;+$UI;VWAX7l5DJ>iGfv zQ8g5u4uh3~Bx8-`O{ngvCqoqHy}<;rkbcvbp)~fZs00dHW>OO{h*298tE8{w`eK|| zQfq_S`TOg{{?Tx9NrvCJIF4|Y<3=rpTNlf`>PWf{A&ho(d|Hjo#Ii<+wklp`IXd$A zSF3~l;&;I9dp7$0kCj7vjAVWYLOZC<8uH3xL+8T!ypTtiP0Ol>;? z@0FNNKFA|Bp8Q7!&k3M|8jH>2lPgcosVPt4&(J}b6LE1cE8OAsRP>K9pYvktQ$XbC zPfHQt^8K-*Xi}aECGj09}(QMDk~`i5D$;=c#|6a zTRK*oyNUrs!_UKqtb+av%%d44=J?-|fwj!UDYwf$K#CP_(-k!-&~Sl*LTGE^5m*LG zC^xCeb^EcH8#Vkzq#I7nX`*TutIlGf!^GF3|8!@WsX)K z)~0DW1k|O3>ieZGtNWdp`c0j7h`J}6AEg+3R^W<#PGz37c`W3rX_XMeKSdNmgC6^y zrkvt+%2X>L!uk$6lKTaK@h)SkCjJ&ZoN&xJr`O&>p^xY1jUcbR>KU+>G!7#NP%MKp z-{mXWIln#DvT|}>{AC{G-#Te^E=-nQ&avHG^WA@BOm2?gPm}gfUSGEzHhlN9w6r!l zs30f$xbQZ?VQpKttH39hKhL%$$-CRMFnJP#_|By!@mlNEq|=mXp?=S+!NRmY^shz@ z$L>y;fzM&~BF#vx^@!(lwN!Bp>|tFR4vZYbHAP#hjkML2x*r+K12QKH6qHy9vTB8`?I8^qrE+dLotfG3_6Yv*egg%4iDd2F6-{5^z%oN zfvZBVdDWtQ0~ydDk4nqAa@Hc3 zh4g2H#dU?qbzjo81LulLJbB;tQLTOnP_uG3UAaCtbhaW_mNz6y?1bBL)|6;(aIR0|dRLVsX+Z7suCLGj*neL&gAZd1**g2iL{;KYRZ#G0OifDmqsb zv$G?vLewzyoo}|Pe$@x~=8>r@Jeio9m}o7t%EiTHPzrO_w;Fpu)Wk0;vhZyDtn_GW zU#td^WaedLv0;fDb8%Fp6l-H0y0}uf=8Ac>>h{XYtM%5!HR0Sc#POHtb$4idV&WP| z*-?Jw+fnZR_1ia>Nj#V}Wx^fUMhOL5Lg}b2l>

CW2aW;n;CXJ6HQFfUsGx-h(5@2ysD~da(+Hna-N2vp~|yokmNkm8vTO8!r`|e zfN8jETVP*q9+b#U}?)@J0 z{MVRhPrwZH_P!tcKnC=_mPR|ka~1owtNJB;)?NnHn)#f}%c71KJipI`FnRI*u@9vQSTP43t|5DGXr?f&iXWQlaX4dwWj07%9L59IRN_{ ziZ=e!(~RosN}aPaqavwn<`~C|H*XGi^+mdKDBjXWn^nwhZ%2U`OnQ3y+qZ8ACnl5( z4VfJs9qa4sm2O`K8P`=-DL&W1nbb-Pu01wa5)lyr*tC1gu0^+$v+~`m3noDQ2|1`m zA$@rCXab?|zgfk_5n!XCJrdBx^38YFBm=X#Vik}&jlFo{x%sI2Ouwu~n9~;gjqNDQ z&7tXD7^o}3>DyWRqZPTF-2PoUxafHwgi`^(l9iL2WSUOO=1`m?tOoZGzZDIRjs|y_ z{Q}iqUJeK>2IZL|LYzP3Clpn|b11m>k92GTGA9JL@P+WcC$z-F7zhZjfuDv@8uc94m6B z*g5P1q!rZVj`@jAuqx&v{kC!>>?NQ;&|1FDx%B$jJrm3Hmr5*lW^C z;C1Wu%*-D8*KqQyY;`RJ-)3mMFjG0B#BiHz97WAaHrudj3Lxx|-2x><)Fa}(xVn~B z$5*-=05auwt$r#wtJsq7Eq?XVbZDZ2_515nb`M5vVwCCG zg&NNw9M>e=x2#2K>Tld5^G5Zz8ctZkWo?=v@~!m ziDT%{2uBrRNCfQE=M`YJr>;?HwCHTbwG7vY z!ommRWyT=Tat>oa++>chA%m#@2983;)pX0J-WZv86d6k1kJGtIN7s?FN7+18lil2@ z+(x=6eZ{^;pPxRQ94r6;zFncqC;sHgP^qCLzCnV(a>y`(SU!jK#o;-R6%-BtF z0o?mr&K0ax32Nm2RP`m8AW_4Q+mC#*I3GS##o}-^b>L#I@H=+lwDJqbZ!*qfSm$@b zIM~^B-&)!qt)Bzupt;Ym1qlC`(GXT#zq=hY>~#%Fp=a+I6hJ_*GikIXRgW5^^y)IoZj@ zrOmcxcy#oh6ibk>Oy)+*^fJ~bT8DOaVZp3aq@}BfVyjrMYH$VD<+F2!Knedh6@!!nCxs z@7}%pSyt9%Tl3)bj?*id(2BVp=0Sstn3`=8Ft?DkBa|Xv5%_XFcCPf`=@C zu>CJP{X^MbMgP53_Ut6KnkSHg=FU%x_wNUbbOZn{0-6XwDL5ed3JM|f6hA(YQP@Iq zb8}(PvlWL-gE-x|D_{{DPz$`{jO<#l>1S~`#OEkj___ZI%F z#=!H#Qylf8Oz4T6E|DJvkm|26I^Njg0I6VH%EMkNbVfL+a|#9Y&6{BnG)qEL&h%ri z$W@Y*Niygb-6f9NUuqg43}M*hQ6p1YQj!aT5C4{zjlO?sy#9X;O~j2ldRIl>5S*S5Y_`a2*A_rFD-+=+0H^g>Y8DV!W&7q!_ z*bD-mVcoEhqIe-Qpy5@w0(r)^vhSS27-E|4(&gFOik#fsq!udK&%FDZ1Xp_*dQ=@0 z@oz))!4ZrbT>3Cu0^)z-6CXtb=yCzFWSdg`-;Z0=7s_-x@&Eq)JF(@`d04|`nC$=G zK*s+Sb`CB>+rqwl8A=|=&&|~XND@HY&l#cG6iz*J4wDa`p9fan85KQzZp`OrK!E=D zZd1{1GF3G-E-9%~eg1IJgxxCV4wC6gtCaL~)wgeNYG`Pnub8fppGR5}#+OsdlPREY z-;RnH+yw;-E15u$Au#q|y?^Jvr2Q{u^Na2+;(co^ zi1Et-Z65?^@9!nB&Z|qSd;CBdy!B&i%I`+}h0=3)?(z8I|Fam-9Fc^%!tD9aRE2s7 P`14X;^+lwMRF&-vp$e}rN7p1m`(*Sgob*S#kZ8n2Xy?@-?Xfk4DBl;t%+AdJP^ z4?Zr?0vUyW0fDgXeBbDK$XmHvytQ-nuyb(+fqcH@Oslxeh?3zQRH2`QpC%g%#{B7S z3#)zNRTcS={S=Fm=`C|buJV`c@1p4eqyZgoCwhk{8<<l#&e&H|LuFLPCur2~T^A zCx1pFWU<669-euJrEhkKPMA3UXyP(4-jr&+Ai4HJ?x@;R$Zdbui@e-%e&=0_L8^V! z+U!ic_kAX(?9-`onGSwMZlZ3}9TVl5-RF8^zUbt=#OW!nl1dEHR9W>Rl8wxg0>eEb z&!$(qvaQ^Mg)`J9sX1f5Q3l_?D0AGL%h$u-HdUA!pO6hY|N8xPC?8iVMltjt>8)M4 zoke3EuAlW7q>;S3gy`jgeU_2SfR3tGLlS}R2PtxYBBoU=Lu<#Rs?~2?6pjs+y$=lM zp{64UY3HePzcAY=l#3IG@HKn9lg*DW%dh2Dip_~ZBi165SGeMcHg4zgUYeaP+$IJ* zR!I`N{mp$Th%nKpe)$Jv#{Eyl_OsK`6I%bBcQF#x zSGK<7Vn-FG!VjNE;ZSiohoov7$aawHAM_7qEv7KCwTZ|Q2CX-B{tRT362^@QA~pKz zX7)S8o!iKD=_8@8k!UzH>yHA8#)_wXf!#kItvF?NLbGs~$J4#ym!>2j*?-~jJC9J( z_-ONkI?r7O2V5W2M00mCRvKK@Z^dTmK;qpMv#V)W$TN!H4X$k=D%?hHOOO6kh^1Tb zFwqxnKl7qI=<>e0b~ri@wW*KVe4CphFc-9$pjv0%cx=>d?}6K*>{%>qGbocw!-#jt zNH-XY-1HYNR`0GdlVCLSGHgb1dI?KFXVHYizp~W_Gj+tgS=iFJJ}#`fln?2MP!3)E zp}y-slgvGue6Uy}QjM4OWx}c;g4DSEA+h2X)3nC+Nec1Mt}u@+U4!cg&YSG5E>Fgm z#L5?C#EctcZMk5!z{&c!;-{@j)ptfFnq4K)U2;p0^&q=WF*0~HDev7sQ*?A>>x01Dj0ROE!3$^YVsvk-?GR%+7q4Rab`} zD)K^^0#M?djnB88)OY^(6|S$-S(&kAgJ=VTIWl17AC8RWO=YNX zh`EtiCSpOjQ}9v~rb)%68eKU<8cJ{+0@Xvbv$QbSK-G ze;Y9SqGZuYvvG`apD|*777m`)MsK39aO+RM+-JYm{VEP} z?EAKYya^$|YW=*hV5@8}iyAZT1C_h2DDI=iScyPdxvG5fQU)0qN~GQe)zO8$t55~L=2#|+!i zn7Wy&bSOU0MBSkoc4Pa-qI9^;;ES0-poC?> zG+5h;am<04H0=wCC6H##Z3Ex8xBOEuLDcDA<0G&2#qs2QwR6mUfYj45H)Ief@Xzc|B1#$Ods0t>j(uW!h^{ z)!>3mHfmymA**(F|fstyJ(D>GWxRqH9~nGrkL89nMG%rSh_}RSQRw6hcqBD|0safvU((|tE!~tscHtLI$Ug}v7 zS^bNjN)0np28DanjN%^S7{wQ7R96dTF9_QWcdVT02wbkZWY5tLlAz*q87JK)rE{M% z6ZI?GJi^NKlv5fWBw#Z}dDz;FrIbpU!k#*;!RaD;V5BzLm=aJ>KFy*P;unqOvprrS6rgKl6qTLL9BXy^w0>YeuIsCvsym=7t1cpKf08e2 z{V5j99T9u`At52kuU>VXwAU>TmnkkrL{!Zhr%j(R-H3j;WN^;9HDfiFntbDpKEh;3 zsl|qrp%!vh^@y9BBr?DozoKIP)1|_uqaepM&HT&}$8$ej)?75Amw2eA(!Bapts?|H zjYa!uOnQxS@4QGyfHGBM1cdDzM`?ByIQjLNQqu0%VqX=d>_mE;9E4jIzu&2&&__Qd zQXn?)ZT|-ASfm@i=Jsf@LLXp(9_0o=J|`wJ2@5}5U0nsiR=Q)EBqiZp>XDI=L$ywZ zAZbJZy4>>TUD{{9_n}FAayT&8ehSdXj~@^AcV{FL=p=o}lpAowz4tnPr;58R^u&uA zzrhCWd2?dNoQQq6O#f){pTQ66g>CcZWqUS5Ppn=dY2>=i{vXo+V%HSybH*el#R94<4ARu7p;_AFOUO$u) z*l#U_UeP!)IKTI${^T^@{0y|1_#W@Io}O)wj|V$8Ke$3Idv4%|PYJD!lVm1i=#rFB zg7~&j$Gr)oXhMqL%ciR>=MNH;imkf2^#Z59)Tp9OZKP5P>~a$%sTue!!znXtj7c9vlE-@-Ay}Vvu z<%~~WTg!_#WMqIqadB~r*R$1jT4%mymAB9HK%t;w*8VDKA39#9+ekTy@?VJ-;e}rN zs~lYn?cKO30lD@3e93LkX_>SZ^yf^niLdce%Ynq&Q!dQ>j$$4ot=tDeV(X*~9;Ui^ zXNO84ay}NI1I+j)RN2;t@&#ZrYCE)z9~Lf55`r=X(5w9N<&j-;(D(0;J$42$UaX&C zfN(ue>A3JzUcS7uyu2Lu<;$vxPPhgAOiv?Eb)Ek2fc`o$R5bIQhj{ZdE{Ny{96F18 zP5U|}yh|7h{;{!({Kig#{`x65?Q6$OrC8P0Q!4~S`mPa2G~6r%^r&E)RWiic)1 zFAf7F<{P`7hZMuJx7eUTAO?ZbUhkqw>t1&{t|xG55($A@Ui4z%14iKL4H%d);F~8$W|-Qobv#1Gu%G;yf?!z_ zk7}irzvjJyLzIpX_Q?>U&U5MRPbLt=tnR0oL9;QbV?h8{GyP-~isw7LF`C8wb2QC5 zJB>rback`z-9T80TQJ) z^6_Q7vL&y9lt*zecJpf-B@*&Y@H6T6dReb;>4P z``atF4<9~g=;=|OY#%JOyNady2nSIeC^A+7Wr1H$9OH-jvZ}H3;qm08)M&0ZK6sp$ z0s&V(W5uX49S@o9p_KAdI@pY(7I#D>`yJ=Oj6iYB`3CpAi5J?69^!;@J8#d+Cwfky z$#0gWY|Nj}V`U0~vz+T0t)DxP!h?gcze)IwLo}$PRqxff-#1E8?TJzhhdWF!$aCsP zKLV2$$I&5wN_yF6Eg=BE$Q^~&c-8)ziG29PU}WrZmtW10YyRtl<<7`24A83~NENZm zTFSR?jvK)oEV|}d=tMLbK+~t zG4$KxdT;&tH=F~y#Q=(L$RqKp5gm%?afZw{9~GtU)z#WwzEsaXyChZ+AExSV^SVs& z%pze@TVQ~fV$k!N!tBS;84fc-t=41jJjY=akk18CbZZ(8Sr>Pzt+#f4!O)p|7DMx( zd0iYQooXArU5)fG&H#sCFJA4Msl>|-w!jdS20qkoD4{}|)kqE@cBl4Na73h-L#y*y((<{}1X|WP>b81AAbggi@hqVQ4QkBmDDY)^rhGT5 z`dlRpQDM4^U83>bVt3ybKL46uK)@<5kW4nn+!Lwg4~y(tb4nWW*N7Abe7!7S1( zD|JI`nN~w`L`LU9WhfJCWjua!r%{>@0o5{Ctif?0{7+}z>GoCBm~FO%QMTCUqZ9Jo zaH6lTU2F$$s|w}f@LHxJVF5@ba{IBMsVqLDJZ8=5E4^T#N^uIsRmEovR)+nL95UcL z*krQ!6+A%cQ*`)z(KNrXaCsySQyREUvgJ?PWeEC1V(Q?Nlwm@OR<>OnR!%H9I%eh# zNDuil??c_b^}StGFqt{a3-22$V_)&0X|MfS)z9!tHurnjrn4DO5%Cv4%C@KAk|fix zke{H|$dQ>P6ujWP-^I8WezR=gIQ?oa+&Gg4Q@zOOGfjau3k;>qhBR@ zD(1aPo$bZVTL=OINJ?Ru62zvq@n(`h*Vmv1#&7*02XE$*q4f30@GuC}(9l5n%)fk> z)Qd^~{Q6-H=pcqVXVKl#hY$gY(9Sx{ah#}+YE6N_Ddha8uDn7Np4K_Yk` zQU4I^B)WDDUug;hfq;KQfu?cv9MQbdmA5MJf~E4z^xC zZ*IJM{2|43Ngbi;suT-bSH7CnLeW63rD9@}q?&dYI^I>y=?pzgU@m_+Rg+fF>A zCD8(w(qX*#b=lRA;~U^l<|~@d&dIDG+MXg!2B?4To%%lSsVh>~j6cSlDK{7o;RppB zST{p@0e#Q$!c)@3AlW=Iw`HOSu1Wj73;`h>R%MH;q=+B4X2LLC?x3=l$sD zp%e4S2WC6#8Oow8w;_$8mH2RLArP;}h6Zv-i9yIo3LtFxc6N4!r|t?0A$LI21B%C! zetu(C#9+BH2C!0k%$p5$BT_7zFzEtiW7zozQl;?@D;GUPgNh_!Q1N zhLDSo5mR0pJr9+lh&>No8*4|MocrP&GcbC}sHZhjip&k(0hQaSNRq_Tfk3u(!V4`s zMa1H=zvS7k+;?fKmFIVe}Ht zFfW?0_DpMQYieJeQvE7LIzd~q>r)|Khe0y!0#U-60L%bg9*hAt!7eEm`tOqE&NWLy zf#F_FXEedLcJ|sA!LOU0BdzGya_gPDkan+6+!y~Ei%cOYP*m)EJiY5~?4tTjRPOc| zMdvD%TxT0m!4{MCY|$j`lOJ|c%3E!wEOYW*Ru&esjloQNP0hPv**TftzhlyEP2fF! zI@`ZxDlyTF0{`3c3L88vxOvc zs{NVM;Fp^h|n3JP0yQlLez^v^;vh1%-lAzyCIPSW7b36trWzY=17 z)g;;_R_CO6B3?nCR1 z^U5kJ?MEyeye{)qp<6u0jc=#`_)j<16df7@n!xGqOw$B|m-mn3jt&5l zNaYN-V4x%dZMbQxGz;H28O_iu+j{~fTFr%v#R|Xh-Wq&B;qBh@?G(Aq>+L);0SxeTMdlx6k zGQZx~6>U#lw(S?6X*WnyCW(oc;ed}lt{aq8;B`q?SAccdy_8F1uvA3cU4GrfPqf1j zmIU3w0DZllpxd*Wc8a3LYXK7KC_GE-yMm^}H}>D{2|3R;#0!~FCKC9dav)C3^;XYN z7VvaI&VU$!#yidQw5Kuh9McBD(gRQgfR|)0bg`o$0Q~E6nKR1&(B|rzeCR_K9sW#3 z4_y^I;1M2s643@F@gW{HxH0*gxIR==Xd?-e>-X`0`mp)*vG0j%&B<+`@KALi1oixs z2wGLq0l6ksPLAh)us!WZXzx1?;z#}#Kh!ZNy#GeqRBfs=v}>_GRJlNxf%KWWsbjmm zzyA_#l%SazJdA`+_H?amiQimZ2T|7}c<ItmMvQT>PcA*UWp;l}8F1u2oDq9X1xjR+Q~`Sh2{`D!AV zXl$>+u5$WpgX#RD-))1xN9d2>+TM~fypin=wC{&Fha@&=2aO^&y6BO0v^!?4EKRql zC!iPeP@b!_A_UTTSbG>L6C)#rwzf8)04U7VI#swX$)4=aPyj(d()n-v>Mab($Eg()BI)tm*I$SK^v;aR6mqI1^yThbM}!K$8vO48As;@H;rYI1`X ztpYcbShx9Ic@76+G*R+nn$`PI78n zSdstnHd$c;G>}{$UZDe6zSdcho+n8-MhK^>i!BFW++(DdQ#7S{2xBuLG z+{Cki+<5if8&?`~&i0sKeRpC=Fdo zXJ&5(f!=xF+{#)T0gy}colyi3spUBZ zM7>Y52Xr^zu`ScEK5l^~nTK9rmg3J&s6;&@JSJr!mhqMmdD(cUHD>D!x@2^yPWdg3 z1SG0^^=ZN>>d(>Vq6z@kZts4LfsE#U*PXUZ;_N!nFg0Mh^~gRcm8OLe_Wb7E_7YFv!bl~rv8SfCF>u(a4zU9|g!`wtVU@U3Ao}Jr!Mz!e#LQ`3=WBd9 z$*Vg|$CYvTtr2OIDV{^N4<9f;=Hnsk!3uq@A9e4^E7NmRxe*ObP0YLz0vu@r18NQ5 zii#>>F5;KY+>0K|>#5>HwQ4kSH5eJXWhNVQO(KA59`qiM)Vx1gi1MaGun+3_kc9qu zIH2?|R&>+1*E-D{^ztAmOBeDi#Q%KbYzHWNz8~VZY@!UsdLuJDDTMpIPQF_rQW~Iz zWe#>vV` zZ+lGRd;Uf3bpOJWjs3!Z<5A2(m|tF^kDAFbD=?_JT}R<{kR09V{baLC18yHNR3 z{Vr6O)aEu>7QmD1K5L(SawEO)nhpbGn6PHLaUO8KKK*R6QV`EDLDKpo9P=BuV%Uh4 zUe&2e^(#+pK_KW4EuG+ShJNr&WY@#X%R~XpPe(_`TaJ)_qO7Y1*R(X(iYQnaJR zd6mPRcst->c>Xxx4NQAxHlXOhP{QTL}(T%YS z^IYo(%bq9C8=9l^ncB{bzGa@;4c)!v13&=i^5psy*TAXu?xtO6Yis** zsf1$9Jk4y2qT7F_+HQrO^wrCkvOsL;@B<wP5aa_zOS&Hq!Ubmianzv*8g;B5;|4N|hsBtnGiJ_W8oW1U zDl|)|=3l1hKD87HxXp9P2h-cI$XB#y4JG8o;%@XSsd+}PT@P^*8Fk(DHTkcM3 z(tcbGQ$~px(M@{uGURW`L{ z6;cTC-OUyL0>g`RJED}qimEUrDXF0Odd=K()i3hV_XYB^n9iUH6KoiDui~uu_~1+1 zUyVGU4@GWt=oWa%)kU16UPGk7XOtMD_Q8(a`m>^&h`!r z+T22o<+736e6vLDxm^d&)G{ChwZ_nimm_D&K=syFq5E^1g_yr08XUSXSGiZUcdO+Vcp&x0n9>{B*ukHSjr8F063bugbdL)Vhuh zbmim_FLs#BN{K|AH6(IDys6gEuDI%FcFu)f18SefbhWH49DbXfpbkBaq*kr0Ms^m8 zX37HYL&R#^@8M{vCZTBoZ|2so#D?{HbVpHTkg@z&C)RUeIM|*g_weggE_ThtRExnCroV2f2Ozr(F(bSJaWGh00E2 zB)toUnc21WVG4fQ&0Yg#Y7@U317b8Ue!jWQ+**)A5J(+aAp83#|C<2*vHQn3u%n~5 ztJjzNN(=DPcQ^tzzvY3VjOGJUEk)Rgx$zso^BnRoFu9qC*R4JW7_-`91t49#3vRhJ ze7`D9&G6_DO)+8qJ2Fd+Z;3)zvOp4G){q4oiOaXwkuRzkx&YD*^sv!wZXMeO0*m&D zP>9F-r|gs5RA<=w(2x7~ZiUU!xprT3nNOIis$wgAo4@#6@mX0@+k&>ZZA+ffL{moI zpTNQ@rE$BTD(XCa&ICH~35Wqmi>8&5!ZUzY#V00){Z5Bu{8?RP%&VjofBLHe=*;Op zc317aH1?hk)Ka)8?TxQAo*Mw@ReZ~Z!?&lux{bY)1#q8GO76S@ri}qAC3g{+7a-IC z|H%zStlV~JA%ShV9XRdJO%F90Z+mX3yJxJzpCZ(6$Zw2A9~`eW^f?3jmcO7BuR1&O zZfqNcL7Y#vLqcsn#GTtr@TxDTR}CJhk|%sd@@v;MHye>BQd-&ASOD6K^LrYg2>+Ox zO5EyM@G*W(rH^HU&y=reiUN=@a9t^vkFwa(Vg&8d!l(M-=Z@FbpyZ!YOi^P}J}DA`%dR*xe!>w)0_`qxQ!5wG?8hoBl;Q55QEz3nW@quwi%~jZK&nownVPPO0^{d(Fq(+LTrL zoPZ8&HG9nQ#!W7U`#tMoUqt(DVUh549++$N9^0$M5p^l;&ZrG_DfAl&&#n8wK6iF9 zgpQXlA)^a6;D7#cAb+{gFa6-6X|^&nl$K~TPZC+64ta*^c#cVZFmUtL#A2P4R{vPX zA5`u=_kp@MndnAN9uMR8qAe|Oj3i%ToQ=#qK>BBXE1Qg?21x#778w|~4R`;$1OB$1 zGP9VQC^a4=rMs{1ZhM(j_U$*L8?y(tVGdMOBgam6c;aLVhYl0CYRr^qP!%1_;L9}FTP%nYKiAaMn%i%q&Hj5G!!Bwkhy>Hjwl~3} z6A&g6QfX%%lgMsqrK3jk0!%3}E@kAKZ~H1)jQO_4;d-^%MRw%Y<)UN6u7xz1+*Kcg zuKZ)Y|G6FxrNr=)p*ghIM_oL8vUwPyH3ySl4Q-`K4zBIgjZ1gAXyY*ir{ESLTWV^v zDz0ke4X>@X^0IRqk=5%kReOtz5g6prV-uHL!?_0~$$V1;6NY)%Rj=eVva#~FjEoZ})Jw+CtgTpc6@KY`8SS$>_<&g2pw7Lz#tYd~cyMAz z#xvE!PDt+AGfyf{U)hw#6hiKbAJtgH1G@B3V0$W}On3I6N05nX4(!DX1`RVk(jN*l zQCFNNJUSlAzkTaN(<Jhr8$Rd%do$#|U#mbA`A zFDr}CgY_8Nwgx7p?A3G$Pz?jMD?TUMKho(tIB@5MUL_Nl%9aB@J&&W45{liUgy z#`-*WY>L;xM;5(mnz#Z^iLsp{HD`ZJ`-9)qta+MGnLHw5zdbz?PvfE257`%CJblif zNfzn^zK4!spZZDcK!4PvKT6;_;9ivkZ75lbS<)Z^ZYa7tf{{{y79LCUCMO2? zZ1w9fFE_-9c8d2#s40gwLG}&^^0*1jTV`-PBr!lse4z7_H!7ih%kAP52%b zqn#5H=Heyx6alQIqdXO)Y_aGAsv2-<@WoX(J~}l6_;^Y+Qv2c^E#snZpH4tP3JfpZ zhnC_WbS{Ya)AJG}H=av7{&nEQ9QE7nGFj$U8aH4w?Y{@;e+S;BwE^@KD;Ei7*g&@_(_;ph;0Jb@+Mo&6yu>1W}mjjcx**9qV6s zdTfR@(wQDmmb1fbNeYK#wdfKpbi69(wTmoJ(pyMqUhkILm*XzUCg^P9Teoy_D<2-&&n-MZ%A0ufP& z)4ErxX|PUTrM+)fgb7P9H^wbVUB^_p24#jfWmr|qL##B$Df5XebwsC22WG-e@~GPYDQCTqA|{VU;jZI-78`7Y>c?3eXAUqTDap*98{bL-SaZcab;rv zX89{+FR}$v>J&VS<5b7Zqn}9M6O2lmpzm$Qew7PXem^$(w#Yxq)Kc^7O~6T}ZJ{6FRu-%1yMD_ON53OIi}=zsDcjn)t@jf{Q&{T~a`^M@6+W4$-hR#N#diaCkga z>E9t0aAP9yALDUJd|j#R7ka+cAz(v77;5R>?xoc9F_8KA&!G19g@!7Z`ij>zD4p*- z(4rC3;DAZoVjd4F@wOQPQz42=^y;dyDe@t$9(c7L^rgr7{O8Na z9kkQu0D0pNB?Q`h%4Mq(-z?wT=8Q)c~k| zr}90tXB3Uo-cHHIt@(`k2I2%9)7^`fx~)Sd*OkXSh6{#bmfEmNR?sg&6Q?vQrNGKC zgr%80HIRa)z90q@-!1-pj?vr?PZ+v14LeGFcC71lZM98kNp}N`E@D&lLURmf+&F6| zTdprCqvN_^R+Vmh1QWkcGRCwd|dO8)U6=>oKP^HN>tbcK;**v2`o!* zi54*fP@g$dCTzQl-xZs#q@dKUy?vFuBh;4T8t7|aXnosWZZwvTVH>4~W81Nm!Q%&- zK2qwc_CZ`e(z6A=z??~bmFHc9Q>{F4fNK+>YI zZ6nltYLimdpAk}jJFxtDE|nEnO6+#@Exuv3$jFZ>ZD$JZWZcUZ_PeR$XIAb|v0Ro)53$=cq%slGUS0ExWv zF4}uMj*uNXvxZN5yPS_qT<3`pr3B}s=Q;`fjhQYr@F8D#U-2U;2AW0wVPiv-k8xS- z;EBi@zM|o!I2c$5ESYPYe1UTGDtNJWiiK1E*-|CzH zf94xMiEd5700#Pf9SDsb9xU0{IeU9}BqCWHjg6)7{<=>$<>BrP4!`5>>2)oE$jx=1 zh#mym1zueJdPf(W9vaSM>VkExv$&g4hx#)y!24PI!gj=z1wfS+nC8NE03%7>{i3%N z`Zzkcg$fqnI5E*^N(92c@im2X6o|;n*xNt#J=ut$6R(t&6nXqpsyV93w_TTcr`Nw_ z)8(9 z%L&!r*p|pT=6-q;bah3I%dXmLe7N2CUQ0`BsO3@`)Y|B>V!p<9_qMkLco{l7X80BNvGo}&!fhyE% zmv{(Cg7Nq(KtZm@{bv(;4@=2$NAStsT_5!h#3v_jjfJDh?dLIWEXEYq7SiEmf??ko zUSk)RTospMPl4hhy=K*PuBWib=JX)5I1Y`9*-zpQFSdMf7GwNdsAMvFPd#xY$~8u{&Q)-Fe$a`PtjID&q%{%_X8p{57! zUj6gOr}=W4TMttqXj#k%Dv*XV*F@^!{r=A52ENd7?3xLzTifOkgT0mD;$D_x=T5wh zZSrlX?KreT=KK+Zqe1bg$PPbqQ9NWBU~nsJ)6~+HO|30COw*?rrjYwjX~4PL4h^qu z*>Eo8^BGDtsQ}g)2&+T8z`~F{>4%?l5}&4T+somjmnpO=FV->kPXMS-;EZ%&4JTI|D$YAc>s%*Ir(Q_4?fDx zBL;_%2- zoYelg8@6xK7ey!=*xVrbQsV2U&wsh>6pk9^cPDhjcq*OkTxCx8S@TLaOHN0KD8XON zMT(LV<6e4rxcBgM&DUx#E?-jms22_s$q&s!gXaAqTvc~$oJ+gK|JnpEh@7_|ueRE`(2z7!Q>g)_xw}rF9yLq1S(qCP}=^LPKT6_+4`9GB8+Op4>I#j-FSrd{oZa zVjJj>x57G|)Sg-M?I1A>m0T)?Vf2HDT)L-_De^ct;pj`t^|_=JLgcW@f7MMNK9@f> z<$I=NxEY}$JuB!$?Y12LT>kzJY0~TRc~>iiAC>*e^3poGil~hddq|TY$np!q@$SfQ z#?=wwXK+A#!cF5K7MUhC=Tk%S!0?v?OpgnM=W+S?6mv&heEr+-XZ0+V;J%hhKLCAW zNmTyBT^wu5d)wah7yC!nyoi3Uxu9% z8FA8N_36^!Z1bq_ucQ^VE%$qrYy^y(_yRlTc!0n+UQ_4w3+gmMDv8O>aoq5V1|!Al zd7I**^(LM@sE60Yg%~8zukp1^bp^*h2K~WGhtcoHZ9G6XX1XY2?|c>NJ^3K2f$f}o zh;bmE>lhM{feTBrX8&%w>s?hHq%dx!RM|auOPD6;&>6&&cRuC786Y%Y({=#b|`98#Dc90+c_M z2dM>X+ZxjRo;6ZI-WwTyesZ#q1(Z)Ncn~LQOIoP!_kYC3UCkRifFg}{9mP(WZ05Jnu15|D;mO4I_yui@#3_>kMOv7fp7%>(ZCqYDYg1clOM8h< z?Zn}>(sv_v_>`M=2#d<)u6KD)m^kP>JE5|BLF0;&{AG}lEpd1E%&VhFmiY3y#%4>C z%cq1}ekOjL$9F}=jc)9PynZ2wcE0mC;5OHx8A@-0g>W4c=`xfqRw)WlL$DoO{J%~y z^ID4bhF}V2r7jlX1)1vkE%mo~;sN?!L8BfJH1Zi{Z^n`T=ve{AgQWimX^;5-<5v79 za{PZK49fSJ004jlr|kOwhpUg0TCFsmi?aV$O^JsVm1UH)+nt8Ze89U)qmTbLJ>P2eLO~F$wcfanql`M)(et! zDfNV_za$6E$#i3Y)*zUH?ZSZHoZ25xQ1~*7Gkz4rw@f{MOw51GU5@(mso^F|;zm~M zk({9eh<`X^tkz(Gv&X(7p1Vk^u1|tx{s)ODvaqkA}kN zwlb7~pPHsNG$hcZBVOp5r+(RthmiGbTz^cp38Yh1&V{R5DrNBdnS@K^6AnQ;sxm?d z3_}n`qIPgE&izLY8NJYnsumG-g}*pNaq>IPmZo(;DcpCegGKa8GWkF4f$1vB3asQcU+uaCW`&lVRtZ{03HnX2Yv1@#y zQx9CL6A^&0IDVEuqHlcgzcmgphWUk+vRBdtrv(vp9Qc9|l7yGmcdvD3$APMa)QcUO zBmlKq2iL--#}5ISs?zs|o`J<)p8=-*eL8rFd`WCb@t?b%Nm^cSr1P z(lpSK{rG>@H`?j{)i*N#-*=n-KS&_|UXsrvj&X}D-f*_NNr%;08YgJ-m(#NRi~ofP zcndP*6d-pHNf+I8xbny%7o0f{>p$-TAb@0rY;-a=p#C;Cz@CD(i%SEqgyM zUi@F_n?V9)fHk_snww*$I8jP}lMax=tr1}n35gv++Z*+-+p{MgWf$r|@P(!g)i^{W zuZPKoDP1#us29Fc<`sWJ`&VK}N1cw6dWwTBtu6C^fI10XsZz&xs%QL0zEyjbTq0!0 zChR|WgNN$E{cSvU?>HrQ_NK$lK9zU;RzK2|){*{KM$}nQmS{Od$x@o|Vp{~E1bs%v z?LUOVPFeaUbgBI}X{=j2#|St{GF_vB|H*wWsc@=Xh8~{~a{H_q)5m+Js*^KNJE6{- zzK!Xzmf56~?FoOZO(j7>1H*$(00RvEK<2S4H&~dFVTfKWW0^kU(fW(tJPAC@yZyk9 z*Y!|tx9!Q?Z(q65+)SWUoUCBt_+v4Wa$)a@d|juM+#Gf3o7G4-V-citD_*(^c*E%a zCbQK4BblYX|4-4*bhM{eE}fK;wpT|uIYU`qC+IUHHE_ZE61ukC*I$zP%x>49FF!4A z)yZ5((}23sn<0E>2WdisX>gCE36S^OSPd6Q*o-s*YW|n88lWrBu;RmZO2Jb-jwc(v z^HILae(z%G(b@UiE(|&rDau>;ncMxr80X&}7=KHN>`&)8qW-ptpy3AsMpQ7yPe=4G zSwGjGyk<$npsArSc6X}obP>p1NRJ>G++}`JLD?6~k=bB3rlkB*<=DRCIzOga4i$~~ zU#-0dP!vJiF1mn%NKygGAfO;BNiqniD2NCMk~1PXgXAb6C|SuFB&S^@=O{U6STac3 zCBqUH*u9P4cdG7Rb*t_in~rGKvv{NormyE6F!di3XQN>mXAs zNm4%`tDGMuUBu3U7t3(g^HO{NwFg!FyHA3?pUADx#*N}GdKH3V*ot5)p5tC7V_&t% z$Mndafo7Uja-U#0+nM^Ix>D5=Z_A@pf)V}X3k^g|WFFYhLsyEO!2iSWksY43k#4f~Ht&1K&}7}6yq z=HV5F-HVMaF$G?cPyb7+?T1wO{|h%vOG!Q*&EWKzMn8?z#55lDDafREYe>%qk4(PX zGN?_zTwPGtY7O=^t~$-zb=&^kry2Pa^_sS*L*Xp$i|&yz%F}fQt43S8bwH&dazWlR z2lMUP!D9%nge45MEV^=VI%(KDi zb&vy%@iHge3t>e0jj9=9m2M z4TId}DgP_noHytybW6h5p1S)cip#ynOp4JW~af!Jpv#Re0O>5-QZ z3JrOd%D<$zpzU74!vfS5BWm7{0dSD_eE699eqs|Uj}kW32+)TW~X zbHaqvkZ^%zf?EWwX^k81$DNLKE*|maF}mvkx0I9ic?K<{#z$)RnE^~DL%Ygm=SDRE ze%Co~zXU1fKh#GWJ8a+Ak6->U+4{cF8@ZN~yHW$yom;p}fVrC4qcW3-zduExmzR1m zM?X?`1a-IlfA#N(vIA#CC_uAS$!_1npUb<$3K`J&Mma@euPDpKok!hn>={cn~mLpUKYQU9U?j_ z7uz~KnN&XU&Abt0V5W_XC|7+)#NqAnz*}2iLY_M~lzOBzulrD|;7N*~8CQI$N_9nz z7bD0OkABzdQK8#{ngZBUH!_K-d7e|==Dk%-G5U)K zTS0Eh^}V~O`KxAl@SWpy{lG1U!2@%Y#Fq7P!!k_x)(+Q(fyq5QDw3i6gpI$pR%%%7 zW|z3n56$=PniKH7=u2yim3-!slo;(w7@U%eQ~l_p5(j})7Nrm>Q+t640L4@uKYo0h zoZO#?itD)&#qZfWD{?6d>J4_~HwTIyB^MS1;ThXMlyXxIcQ2aXP7vW=&%l75+3l&-5_Zc&e;|sk?>-)VDqR4%Co!mH(C@k^v|z1fyS1P= zU4!+#2~q!C`|fsc(U1^rF%H$;yAwRpAl=WRe|+=vum0x2;c5p0Nc#O8f^cXPCEB|F zQqjS|0chVWbE5;e6v@xNMVm0(Ys6~~^Jia95;&}v&X>Mbgvl>EdqGnI{BVSajtFSo zbsgP0zFKFLxu>kT`GyNpBO;*_tTFe$B9&eMs)|#?(5?$|sswf2-X3*}N}X)RS>Dd4 z@h~>O8vJ&4vFKy|HF>0;+h}dNx0iYX`vX0{tUq$M-j2QULJ<7&zC@eN)e3;*$N(T- z7A3J~WT0<>oUq8BKm8K;Olb?)-+&ehYs!psKM1+0OMn@END*34QZ5r(qq>*?*MSQFu$*in3T)xx^8RgX*!Fvoo%;nF4JF2jmMq_v8J9 z03A*o>38TV=+XDt*p@fY+H=USXC0lLtRf=Qg=fLoVVU*}7M4M|J0FGwipjWS-`R8T zjuo>vYVvXa!d7WDNh~6MrX;26vErgkY_vRIr=XE`sD-pc-h{UxIMM7eS*C<$r1!X8 z*pw73lxiJ8$fV#~%h*h3Yk)#epJGBRd5Mr&89Qp27YdP3~rn!clTH)j|6zj?O}krgOWA0PU*_kFZAV^#c8 z&8F_d{`iFx>%C82wqd?@M|i(W<>`nwv5kYMIv0qp2jn~$Lpgy3-k%m_Rn@P6%O%r% zH0R;t$87+JXLr1%NkKtzj}5#jEG%4SJSt6fv0ycBQOB9GCnEn1?JfTtUe!0>i=TTo zJSs2J|L&-IbD4s2l0WacTzSVM85yU+u*rPgWiAy4v8=^TA`&~5ezGUDELv?9a8DeA zm9^d5Gg$;5la87@`WLjJw)Ybf5^lQVyF`UfO=(0t)S$aWC%aPS#HP{_C?1(Z(>(VZ z9aa{nX3zl?ihuU@}ax!G-%2h`stY-5%-a*ZLrebVfU!jrfVyT5dl z)z9!{3K5w)s_(V37vC8Zf25!cGb$Johu%r~sI~GFZTddv5z4#vmj4QV1WCxw8b+5k z({R(C|A}}wSoJ94i%K~s%WLpB{xg_Jr*u(oN#%aBMaau$Md=o#UMQbP|KX4n7Ovs4 z(y>UQWZ9Y#Z!4_jr`YJKe|xUZot$E!f6JRxRkElz5;ub>4n_6Vc~{~V(4SR|Y9#TF z#wnqbWF{jqLYH=Z>MB`4iRmPSFnRG3t?0Sp5czBuXy~V+i#%o)nuPHt_14jzf730e zEHRc$GAd{9C2LWrcWDy3ZkyS0V{Gz?S42<%l>Fw+o95{TMjg`L{-Zzbpn^~T)*l2wpwd{^^sk{Q+!znZRYKd(T|den*96! zNn4j=tMG`jUk_%D`i4^U%=jU*=p#(C>NaJ*tYxxWE@^0{%^zmekoH;Jb zMrYu579tEi%%6Ez4?$jAh<}@*X5fryzpmQSQmSFa9oE^{Qzo2scj?-Jy@yG-1Ni-P z%Mf0BHLiJ~=uhCO6<0&%Z~&B8%q=V7d`xup z9r>pXwEnp8r00I}suw}09N(Y7S4`ovfD}D zBm9m{JzL%-2OkMWg7BtH@P??4-Hf%xIzqdsLBclCv^JKTfN{fLAw|>>i@DsWw@vFr zli_><5jD0wfP_{}knpOdrK1Z0Lx~g&+dy5sW)PE^DZ~14;mfrn+elwI==YW!ACA2D z;Vf#_;llS9iF-+owsy(T5vU=9btJX5S^P+4OVm&-Y$1|GAr z{3qwK*0HlU>%1lKC(p^uVrSoqYq}Ei+N*1hkZk{8B&toTNOrzkZOWYFH3yqU>oIje z#_D+k&&{Q1{Tj|ygxBcaNJiJ$(%6%2=z<=0MeWthZhNhc0RX}1&PIlHt%Gx_5kH^i zG06Rh^1>PDaj#B)BusYQ_#p?uEz2W$kyljZg19>q)8pIqmJ97~ghhViNDMskqtP7_ z((`EmL_)t$$r#b%K+~_x&o@g*4z(4u_Dj$mx{`5bd5L%LGh~X2THil2V zDUZYRI%o%@Rb2u+13?DVZxVi*#|GE7EVm|uyC%~b1xXr1r@9Du>d}b8KpOxyo0RUD zAEn;qBnTcHFMKmY?vXLN7f7f!cdoh6?)fYI$)ce2uLxfhTJ2SHjIm_CZ?EfMvUxVY zxx+iBgdJYhqPW}FwJ9&riC?TJGd8dY^`_Q~v%^bF+Tac9z0j8xiU4Lkuc(PVy8q?& zTJEK-J{tX*Hec~Z{`cw^K`~^y@v*$hlyP+1&;Gs&$r6r0u?P3sz4lOlg`S(gGs?PH z0dvdoCVwLp9mR#8L8g=na+l{l=BmTQl(jMCf(hx)SSsM?I8BgtvlD@TWw8 zBm!@~s6%x40fRMpsRf@m33auZRg1)1o+)cUg+uXY^>qm5q6zVR`RTiaDjgi(Y4Tkq z?fdP9Tl(_?s0?DU6Q=jDjn4`CUcbX=(74;wC76^o?YbMn`1HXEBd&zZCbvU>C!W2^ zG6)?HPO>xW^wgc}hYs>Dz-8XJw6X+5nyr7wo)ZH`IN?|q3J8yByUUdfe>;#IoBULH zhUZw%9ssPKBFR*iI$J}2w?%wK{l@r;D5f4rBR`O3cKEKn)i-?`T=xcTMroj9$JzMbI=9ndtNX7B?H zGwVj3q}t4i#P=8PKLJ3>?gTRZ19L0&x$}U*h1FOA{!j1t;i&I!cEs_wK5BboI*(}A z`0W0+cZSB^)%CoEo_BhDlvE%eh-GFW4|ewY$aMuG1L3->uSCyOgGW_jY-|oGHBa-3*U8S@v%3~F{EJ$Bzv6b)a*MT~T<&K!9PIOeBPe`O z5=#$j!ql$9i9mGm(yPkvNJM_zB_?PLl&TO{b+@h&e&HOb$~b38=0pJHYbEwjr@Y`_ zuXHhDpErC#&aZpD3?73db%FDRLEhx$wrz@T{`e%0klw_U?$m>m7!B{1GfBqU)Axv= zh0^0MW20)E>K+%yg3cFiH~*X$&FubuLNfnr9{5YNwD3W8$L^fDE3mLQ#~G_yG8oZ@ zz?n8mx9qh}m>wdBR&`(wH%-uLQ$Jw%)?kTkQN zJPQztYx;VIwPjUNt>7ndnRm+-!veOi-`Vgwmt8d`x4*YfPJ|Xb$$erOd^6duL}05Pd5OgU z)^>M(r6BK6GQ279T$cj(_Sg`Lwi`-YS^l_l zh#aQw_9crL5f@83uDwHTH+W2!7~>Pm3-jB@W$?*?@^o1^m9P^K{-Y_19iEpHklk3b4Uj`b-+JL#?ZHm^O3D+0L7544rsJLn;BKD$w|dPkCnHVL*M>3WiPX9R{d#%JIP=Ge=g5-u@{S>RXH|8n>3|aCxKE^K zpA#CG_5Cgs2Y3Y1k7QIwMJ@!2AGrz?R}x%&h)jtw=i~1|Ps-#&)|qzRT3^6~v3BZ7 z&Y5O(x|u?aiMLs$dCW)dOHVO-;vl65H^P{nH{6VnJoG~;*#Cl6qKl6kFUl0I5> zO7Lp2mED!sbS|c>y;{?bmw4yaSjg<#QjrVPB)x)Miv&9BG>~qHiVYXB{Fji z$8dgY;0b$0dPv13rg?W5&XicMHfg?hc=&3qb6t=+K{Y+aro$zgnS5_Y zy!$iVjpL{*PN&v{^W59;HsiMKuoEqy16E;YXWwbUdV8PGEF6rh>jT){TU}j-B*D!E zqTazlb#aph-=O8^{crSj79M9P7v~G$q)n5oJ=H7mB&$a0l6qO?uF!Wz;ag_B+S%bAzz=NsB7gtQmevU9bdGgU6J2} z=5oYs8>r>D!J9{vn~y?HRRhGB8YntoEVDTAg4T&UNNjKgQ<1*jZK<_nE0B(BviLAp4T5pQJh=U)NkH}HmWbJt*;ld%7p*js;7D7llBGa z@c#Ee!` zN|6d>{bREY;h^Zp&=qs}3fQF1Lx6+p?ZJ$n$5#oM9UgBJJZX7$uP=!dQxPZ+ zn0tx%O#7MvNli(jZ^e2YpyOU%S+VXw-E~6F6=7!ZE3K1=n)_5^S4*sCbkwlccuH0C z#pnExhYi0phOK!~kBT-bsk7CinVoQApJ?JfcUIus78U-P^1*TxT19Cond9XvsW|9{ zW6DmDntF)4jd$ThrZ4~E1x{*es-QJk0KW#cvVIxJAFZdS1Y~s<8vW6c<9UjOd5YQ& z3NsiBYYyf@RN9TGj|?4Z>NBBq`6g`!o}Qk0(>&GFKAEccb_YLtgSKPf+FCDPzKnuv z!-X{0_dl2E?5CrA#pjYw*^u?jC_X;!ltYe(PwK7eQfpmyNexEvY^I<>mR+^wbw_4X z(5mI#_hhy!GYY^ULz` zcP67j*W3?CfHUzQ9d$)B8M%nhU^|onzTFJ6H?kZup#O}p6YOtB^3_h*Zuoc<6p>|q-cM}Jbm?bqD*3jOd(+O@ zVevE{_kbwG^$02g>OgZ6NO@^USkD^kYfD(ulLewTw3-}dKGrw6F$f6>Sq{2vj$~KY z)GS^0BUNm)i!3j@j(0+XYx`*{;m0oWZ*OM)vSBT4sB1(?Dj1Gc(PUNE?MpJXqlX3v zWW25V6d=!EUw3uW4D26A;8r(_spNAF5Zn`I^z-+Zji{TCZQNvk{jXmY!b8*v0%*zM13*Mz3WF~U5kQZL(CE53Vx90u3XR6XD52+AZ zO_d))e`;$4f*!@i#YI7JS1WD(ZmiM_hx8x zZ`bRd7^o=c!{Q9ET07ywBwV=d-u=I@0Gc9>tqyR*`T6!fj}x4=?Fy^UgUM47=gr-L zPq0+;C+RGIHIHM-GC={veOu&e+HOqFCoh5zsmcA8Fs@JCazw7%<6qyoIS6VlXzERt zH6pG3V-8Bo;=GFMx1K<&NCd4eN8KCYL*G!arDJYE!Pvz`1HdqiV^rxwf~-S*E!VGG zo}g+&_^;v?H4o{-%dZDwN;TD`s>~n}0`jV9PdUdg@4JG=D`gouwp$PGdNQ5_y+>Mj|xvs-u(=O0P>zRW?LN1v*ONIH{6qzcjn(pF2=s;9dRW}>=$IX~$PG@0C zE^UaX4nLORZuiDgDgbj0k&h z|2~h|(7m>SOTlQZp|4}O-|V`VYdFPylU%zN&4*rU(9v>&0S53o{)mnan0PEWB2M-s zJ*S>g-Ikz|;dFKgz5sn&IqO%dPJ!qg+@EuaOtPG%ExAZwzD95wsjbmL?$14-VfELdK9Pc9^9@l+_8sgWtMnoFaJpy=yvaC!Dk4fisT z<5g`hojvE{p$}OJ^BUQKt4V`7nht1Bp?B1(u>&)xT<#* zR8=W=c6I=f%vcFpF7}C1(24jTM{OIH)(0Wt72>WEXkw-347ONgECv9}~7_UZ8B0}J7n@;*uGadB~`UN(YB-Mzi64uPX5{#I*)al2rf@~M7ob>ePB23hIBcXd=L&O&gQO?{ai4|3JY1f*UdWb@GFGW&n zYs$Q(Dc*(37_wM+N<#4OTTeU)_zE!X69}2P;8H_H4Wfm%i2EbGZMT0eTl-Z{BChos zZos~HH~(>EMBMG|wk^E>@Awe!qlWYfsR3}t!wcVqsleU#^l`uVELT_7?>OW_cxZaR zy8thsRmO&;Zu^jvjo3MDiJgZAWoGkoq_#z9*vRIfd1PjCnGx&a|$}o zI&$I)r!PAU2=#&WzD%2lBJa6+9T_?L1-pvL?{aN+F82FfEvEv((U)~|BY$DMS9ZS8 zPb6A=@pn#s?80hHIwd%1;@?_ajVs=O{!xT?=nJrRDiR5~x~Z+_|0+uG2n|4WE9re- z&;mEa{=X}skA17^FN@%Iu9?#Ze^L;C_t~6!$zA3nclB>D+k6_vo@5k=Cmv#xyx5Co z`>Z7&Qq$jcYMcG(01hgkdyA|&JZAQ+L6S?C+uw8Fj}z)Uuc`tucFoBqU{H739C{U* z*VVFEr!S$R-eJ#L*109Ng#r~j0R!V0n4aYQgopn&UqVrDldV=_pN|;z(a>k))2Uia zj0vZ|$@RT)_xj-#eSRxr;OT$APA}2tr`G_~V*a9?SoR&2wEFRb51}p>oqgd8!gza# zFGPWXCFaQ8qF!d}A(=p*8!=mQbT}1dzv;e!Tgrz*p^&k$F-Ql&e!;ZS7^fH`J374T zn|8dF#`dexiC%Baoe_K*G$x3I&LoA@Bfu^ii*I>p{hE~+h7IPJ*Ya`K`k8?`NqAQ< z)4o1V6(mhypIiG8c`mv6*Yxxvjo;0$0#iD%1Iinmb5%jBNMd z(-na<6wR^j}wtz<{m~Dog#{T4OV=eN2p-BX9k@HLVJ>!dB0pb3X!7-s{_K9L?``nY% zs*EK8yW4u}rzYF{HYcK{!1(`mu#o-;Sr)(lhy5Y4?CQc=r#8L2_>8eKW`*&{3+PFtOl@pkBWeI@&YaTgWKer?e6rq}osObR#9_Dk^OLuddqCm4FTNO`qH7%}oiwua zASvUAa$LCSbkZS?#_^gbSQjeCtdL{dk5W1z@r{Sn5sDXa8K{;!jSwovXBMv3zF_K> zY2vUQoCQ=N!>pLiO_xiHpdZG?o{~N(TYf92-k4flL|m2Ro1}$VMYnT*U~)`4-Bx>H z9@anfP)m{h-aX$l7%9uWd(Am>4zT?2tgLu(QAxzbu(J~}*mO46^FDtmt3c_;mx=|b zVV!F{mqBvi=g@nb+D$ggb0BPo z;HVu!kz}5HOs_aZW9RN4qj5I~g}9pRWj}iNYofDyK7=4Jzz&I7a7Z6ipGC`(Ld@}I zonY8$DYASBcjd0s*+7`94C(6h#U*66%)4RdO3_#Gm9eylk9_u3sI$JKCuH4Uy;v*T z;}Q_>qXwW*)co1s z^~d8#AG^F(0O_oP8N4=oXcWQ3{&`UYGNRT$*?>tR(;{`@7W49BCi5C#NA8*^2PNUe z?{QxazCJ%Y({wrV_-BMqptbDnfA64V!f3Mxx_gaYyuVd9pYUgUB{m}rrdy|Wf-ZbV zgWz7q_PEHFbv0U&r!;+gK^GxMG}+MTTs=Klh1dQdw-`(Xq*LNddW!sOFDxczB$%`* zw8qfv>)8DLkS(tTrxEBZT2d|()gD7vruryoWxyWZ1x82bK}LXH02Ee+vSxYn+27$7 zgbR8z9yogjMXNj-ukF@ub4}uCD$;LV)m+e&di56lT^rcnatV>?p3> zsk@7x_psH$aiI5b>^?pW`GAW{!O6j)wY&Sfu9xWETKweHcrKn+(%k`fSs)T~<&*H6 zhw5I&gQjl!UO^w6a%GrLved`zCBR3qYCXNZ`zTaJpskymi1?-LYD2)_kuJvGQFV6a zi-(xyMj$DD$VAT9GQD|EyLj5AHEH99o-9(KD38CaY);h)J?=3#fE^-?Z2#wHAZqLF z4Jj$%A&nV3h=Uyz|8q=$Svi!+7(}l%gNS{#*X&c;@CaIgx06@xZK3hUT191?&+7w= zPg-Kzk^FbCMSjHq&&b; zhBC}5VxI$e1@?n&=hHLid!UGpiHSmGT~7F~S*SsPF~pzWklo+Y+t%OTpF^;fnD4Wb+P-pMEJ@}=w%y&!a{^_!y|?pZ$Rv;DZ>GzTH8Iua zBGHE(`)*@pyiIo}NS0;Eh)S)NbJH?KY>CqJPTPjHf5p3^W%o zI412!2h@Res^T_#Fgpb@)39#->B&}w1li_>=d^Q!ikgbUqjfO|DW?0!^3PHFi>TGd z8MzLPnWev!Pt2<$>r#Hcok7~XeT1xutZV4@>CMl_F3sz0->_QgfsV$`OPiTJw8K#p zGVPdU%sRg=LdB(HVE7youAx@lq)VSF>J4Ohv$~Z3nA)Ls{+WU4OBdn#U)g@Cq?sG0gd9BiZ6(gk3 z)`T%U)Iu;lbJE91VeZP<`I7A_YRiH5m}bkJH97}%b$5TtZ2zR@tMQoL`5?dcr@F&a zci|6VtaMFXFPMYE*tr$7-xTjqT_a)8kEl`(#x9kYfp$F(2)y9avyW`(16wWwMvr*IJ#T<_g6#J)}&TU+l` z-Y#ZyOCuMfgk9>r;QKR^4&PnZs68+vG2cv|Ol$Kg=o+O) z8ddbfknvv@T}3~bc9jB7k@#Xk!6Qqu>LsN6ckTG1Xq7|}O*MI#kLuI<1yT3Q!kyKsfcM~gSXf29Yq{PDor6Z4&l_9UJ;k9)e`D&AnaEXrVEPY3 zYqy8n$UZ27E6lb&wGeBkF1=`aw)Q41ep49x@rKvOoWoUK8L8N&{~G22K|y?;r*?pA ztrg4^Lr6xJ`(HcV1hYUvEcDg!Pd>pc1*y<=I#H}w-NUVXXiknbrAI;G{`N2Gr&z@+ z|Hb&A%d9;?OH0eFebDOX_s(iLJ3?7QYd*^FZ!w)9JM%x}o>uEi{`B)BPQb#?cQ^N$ z?uLrLA*lRqu=T>-{h~ASL^8+y$49}W{r&w8Fdi5iuYwNU+}TN2Hr*F*;Z-FGU*B~| zJUp|UVBX+jrQ(oLO#N*x=6(>mL#N+g>x7Ip?~KqUtGRalI`8(WJ#Yw+SMg|axc42u zml-yS37jM007~gwSJ!HJZLlzOX{#M^5VSa(bPiV10Z#FC@3PWhdwcs~ua(T2e>HXU zf*SkI$#P5IW%it1yPtkeF7!CHfbyq>rD7F{%eGw2r83vBF)usv>RwEHU}nxQ+1Ya+ zLYz!`he@sTDv-rX>rdQAdU`9d8vTtokauBa>I{=JV9**!{=IcAS;Vm;@^L!dIf8X2 zW4PQ=K{~|)jkBE$!&&#H1GAOU1ANWaXXl(>zgpcH``*As^fQ4Iz}dEZd&u>5SYU@c z`^uFXbBwu2k??|>n3YF6tphd1((?w~jLM;^%p}0FY~a!&5hcEexjZj~_-r9x54hdf z5AfM3gxnJs*F9;7>}2$KhdM0VLS2aoz+#E}UPq_zV71o?25Z2U@qS4zD#(qh!`l|r zByFeL2W%{_U%#fHq+HtFjc96WT0(7CT+q!Qmw>4SxVgEJmeR9PQ}esnBNwtlt&K*k zp?DLM$#ewfH_Ua&6eYATx8dH4ahmXm)lErx!)j{TS6mm(Z||Ra`xsZ18X? zC@8RVaajjsj)9X^lNUbA-3bL{Wvk1u(o$tlPdLOtFiG{G zAM3ot_UZDTDe;Y+g}-`sQQWN~p}UUend+LRG(H|auN|>EQIu3v`o}d&3iDJ3UV2Ko z%J%w@6bVlLB5yta$Bq3ad;qQ*sC%98SQlebc2=+=U2=lP?sCTY*hCYNa5>kfAAXI9 zGul0~-5pGu*o1(YTz-M+p^`m8saO)pLunt(q)qAU*(39XM>pRNl23Jz`|h4( zKRvE&kw20(MM&xmE%;4GHcv1LHA(;SGcc9OwLh zzq0D1eMG2IMbK~sRexHxp0y6JjK@WE2YsAHYPxHOi-Cts2m6;_9$=3vya7x25=tF< zBvvTyb2Pl{EIkqK@hKDzO-buNEg0_(9Pt0Uu_2cswkOCc_o1RIYyPjZ`NcbdYRMFk zqH9~dVsunrMHOX^7H}ya8POZI*2~Ju(kb({vf3i~{Ul&t%l*>U8DcAtFm~p+{`1n3 zKonb*T4VGMk{zS%s*ps$(YTOz4C8(W5rOwNXK2p=IGsbWXV~A0QTks3B;vv02GT z1uSw0-}G2Y)Xs#gT9UyCxXm01-rN{Q>rOIn0I7@-U!&ZSPn}mD9j(2uB=rn>UUxE2 z+jwpe{Ue*;jDBtILxWXESPs404VI=7Vv-#kyjgzxM$}nCwj)Wgb#N_t+$6yg7z<^y z6SVxDeUnpC0O`IG#aA@i-SQkztP{@=c-nt4)|3=89Z;P)`t>ljs-OU&IukJDUkPo? zMqRdFCrYf?5qj+F@9(eb$3EOBb?b+@{!^nro(GESIC)^YpIX}+V6+(@8&kOo)LCi+ zS|&r(WPIru=F@&I-j8QJoN3VdmBk^Scku2+m-jNcsG$aoc7y~J*Q##sK`&!Xf^4B; zx@hg*Dtkm>1k6+J1l>J6jKBMyAlH(rUP&ano1U_=acg zXD*={%>nGZ&^2KLlt5>~>4)Dfs))-u^c(+OD9QdVzd_ zk7X*V{V;8~qLHIFYZfsQ-F;mM@wj!Zo1xA15Ft+@gd0vep=rJ z>kTtLo9GTyXn~|%1$*z9Yi$1hRZI?7V+J33%>PLg(s(JDw7mQg6f-4>-ZLkWW2n1G zR}X!CRW9Z16AaEMQuYA$+VnV=*{hJ8?oI8E(`T^qV_R9K<^T z@blK4JFSiB$Mkd(#A*90&`TMpl$V!y@UQfTH^E)T_nUx^)85XmMC878bYRfR)(f$t zCjm-&Iwj3$v)Or-e$i{XVA4CFR70vxwt*cG5Qw6yqBFb-uoxL}&)5VA^**}Fso^sn zR2zb(P}R9mY0se6s=Ua6J8O`e2!h`0AC8m+9X><5E!1AhNy_G7*^Q`xbh}bvCG7 z`ehjdI&}??MC-Z}&6!MkU21^>yzAKlwd44w{P!TXwzi%KL`|`!`Z1%J2@NiL3O&e~ zFbxey)s0~zz`a>cxesE<+NsvDwwDn~?waos@8A_4OS{ z4+25tKYCjvfa^^c*#vhy=lPj8j36K&&_+hR>Ms+<3ScEOla-W|6nupU1mftC*X!f@8$_WE zi0MyH^Vy%4LgsQ<+1X|KyStTuN!8W*l?cb| zl-^(+xTMFi`9ratF^tEljZB%ELFtxa?GF!4N!2>VM^gTtG#SmZ&Lv1X@%c`DeAL4w5={=jQ|c(c5%bEzN94(<{hHdRl>i({(4cK2L~N6;sg z_TZM)@(H+>3*!Qw0w!e%Kq4k5C+8IxXE!!7%E-v{ned@dsF9Un**22eiC$}AD9W{B zk@LxutZZ{}Jx(*z!PGE8sQ9Fx5D!mDJ5t}=9r_B!c&fO15w^-_h<-SsG~wRf*yU#}~8%#+mr%*Nnyc8jkM_V|^JGbzhhz_Zzs z7N+tnCUIX`wBBU2YbzOTtz2?lSsXufkMG^S!9UM2RpZF+bK1tFRlc+8r%q=}U+>QN z#Z0#U=0COfQr&duf2frZ3wQV09Xh`&op^I|a{}$;W$+T z`h>A$F7hIqNL}*Cte(JcFx+Fif4}_npn8INwWFm_hHNTTd@qOb%a9SxM#i-GB2d1y z($rN|hkqN%0MPI_3;8%LVtsX0GcBp#1h}?8RUB|ZpW$USQ@LHRs|{N`&mY6)n{A@> z{}T%FH(3Z){ueA^|3A=qCs9Vkk_2o~-SbiRK(Ge?zWDz}K;?f%ThhB1@EVnTZfS#y zo5{-GT#SyU5a8h0OvG|YNa)4fx{B98i^k^(dp|v$KKcVDI=sIJqBZ5T{WlF>*F-xN z6o5%FR@}|$>%(Rqe7mZ_@2|Zfr>csSQlg-E{W~1F`F3e$%;zc}b!x_m$!|jJGt2}C z2?%f}!>vKXy!^IiCZI26F%QD4D3)#dy@<0aaQlB0WefjB znwHnIRIl$vY)-%3RR?ogS`Hy>Uguvgn!RfISC$h9Tn*MQkN=%Q8PeI&@d#+y2aW+( zXK=D`Ak%171vgafU5to}pV@^#AR@A_UZ}7<0oPw%fBAn9(ZVp<<27U67}rFClR#u& ME4+ffH1PX>00D^{=Kufz diff --git a/tgstation.dme b/tgstation.dme index a0365fdd75..83ae47d2a5 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -799,6 +799,7 @@ #include "code\game\objects\items\paint.dm" #include "code\game\objects\items\paiwire.dm" #include "code\game\objects\items\pinpointer.dm" +#include "code\game\objects\items\plushes.dm" #include "code\game\objects\items\pneumaticCannon.dm" #include "code\game\objects\items\powerfist.dm" #include "code\game\objects\items\RCD.dm" From 751e219f4b82404857a4b4f1f8a25a2977675ca8 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 19:44:14 -0500 Subject: [PATCH 54/80] [MIRROR] Fixes the sprite of the prototype hardsuit. (#2849) * Fixes the sprite of the prototype hardsuit. * update suit.dmi --- icons/mob/suit.dmi | Bin 320012 -> 323419 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index f7c8e1b8dcac2fccbc9dc4cd2e14ad705b26613a..ddad48cfb384f5097f36e464f96ac7549f5bd0e0 100644 GIT binary patch literal 323419 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≥`;0BZoTPHukw063*o?{g8V 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

rP;M3yWVnn}jP|w{wC;aPAFzIx93R{ZL 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⪻ZR4=HKr2DyFkrd}amn^0 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

0FpQrBmp_ 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%0AG z)ouPRMgmMsWqj~)i@&~cfO0c|fUE1;(ih(Wf@}5i5OnkAWE;{~L=!?{PCCCIAWXQXY*TPo~4ko%+RTGxHve3sWu z#0_QvX%`W!o2|Ldnl;$mYgwEH=lircmQ|r%L>OkKRp~4Lv$V{Q zinWxDjHyRz-aNw{FEi0sP_vdt^Y3EZpG0#S5b0C@P1v1K~V>zzw3rB-!ivRrx zM;$_k!57g=*Jrs1?=*kDxYAAKS{Clg@Ir$$+|7LGuu=}XepS_t#+#7xIgf^RAcSQ$ z)AJB~`1+&uHJ1u5Kc35GFZiaPo5okG z^;)T*m;DKdo%7#HKjC(1b}aN*=Zuj3@4Fgj7OWXcpdBI+oj=_}FaDuKYC6BJ5gL*6 zNMxt^!n%FIN&e*v%^%N@aU`^JzC4KicgJ%n9&^;Fr_UMcKy~Hx+VTGScsy-c)Yw3` z?tLHVA`G{+f*9t=3R@i#Tvx7ZGL5oD25^gq^>~Gu*17&?u-O#mZX!~LOvCt`!5Fri5_aDL1V_aSS60zY z^8GMR$~+cVUQBFBG^+jYTXDi0irQYDzA9POM%Qrh2iz#Im~RKvYQ6j2l(Ih1hz4mN zJ&U{|Yun+1h+1e;#<#jJ){wlbIgzM*(+azhN_pQ;c(PzWoPA!~BfsE7eRh&|T0Xf& zVHjW;ndB+@zq=?DLOhg4R;1%oXz!ABH%1xMw=2@R{op8Rvhe+ImJ+ha))0)a7HA}O zUo%IM0Xq`_nDaubF6^+O+57ChwM|B%>_MQt=O%tqlDhq_19w}EuDQ<77n7qSW0*`dgjTTL%gNavwOl20--&jj_v~N$)ry@5&s4L# zoLry^g-uqkUSR*N#fO5iu*>f@ez1Pa+v#k@ z0h(KZk3|2ySV43(6ttq^gC57>DHx6d930qy1(N@I^Yuvw>Ln<~QFL-qS>u)F(!C#r zux-SS{J#hK_2N%cZ@{!{&}Q~fapB&+rgbt~acGn$^WV!@+HgR1TYQ-h;g&8g@lA06coa(&lyo{ zJPy;9oImG^Z zdO^}}!HqZse1?l^qW@f7mV=W^JltMzQUQa1Fsen)tA#o%zw`_yK7V7lW9AjceISo9 z1phyOOGtP6-sRoGnWrO;fUhY(q%SNIeASzHEn8%M(ntB|@d%dQBE-Rfr%iIfZK)~6 z#DmlJxc;;qTG^z{92Xz|#%cHpj!qyCA4hL*H8P&ksT={XpU^(EcWwbq=AJ`JMQp}F zvnKq1XX_hoj-mJSkmg%aS1^QaO|p5TR0G#gN=tf;3w@$?p8Nkb1h9`hBD|6}Ag`sD R%7B1HR_cRfxwyXX{{d-C1-$?O literal 320012 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≤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%0A|VqoRuLIxCn(1x@>ZCBFt4?0k9 zU&9;@W!jG|_X)I9NB9|kzyV;b{_OJ7^3qQV+{U8r`{n9TSj(~iS#<|7c$%0Pa=2zg zEHeFPnL!p__{$RyXmz`R_%^>Oau^en`ZiNP8-WS_@48mP-{_xiJZ*EUh&xbximftHTW@A4TgRyW!%xI&y|b39(z+S$8HgwDPT_pZa0q3 z{_D#a;2M%4)|F~DX%DkxI+DC7&|K)c(>sN|A{dczSPyu2nqjt73X3I1izxr}>Q=c7 zcN}@^fq=cT;`}K+(im3Is~`HkjTeyh$uvHr?OU<=HgS9)Qe0P#Zm2G1P4`+q$n4W7 zAJ_*V*OwG)3?@468u@9T&cg2$x;G+Sz*3*15xxuPlYpuLgfUB@( zBzRuyiR@4unJ3ElQ$&U)s$CnLvGF0%vlCTg*j}E*qzyeL6Dlw1BWR|JSx+%5UZLX= zrzwX~QNCe{1eVlLjbGrFZU73PF9D0H09a8!I&uVLK|Hv7c<@;bW1h6Ftr>HRe$2~D zd_VVvj*d>w)i##~b98DdO1`LXXEd$eVUhc};J_q6%Xn7jb8ZO|Qm%_?j)eSYmXmiF zI5;EAjkbJ24?bzfUE7Fm@LUI~J;4Nr3)KR?lM_C=gn`oE?*dLITicvCs7>NK8~L-8 zUotMZ7>_vm-Vwd-jd<>QdU9pml^@i_9TuzOm zp8XsCC*!hvE!Fwg6qOn^tL0bmh0F1iX40xxeU{vH(&nngOSAlDxQtd9(!VOK^7YkK z0J37Vo6A`JzNN^d2jCfW_uO65a8PzdwaItCg1dNOOZV3=E8js-tR zC<#Ycc)SC{jfX!vDWvQlg>b@<>C%&pht~2>!2HGa*8dp>t8>ek5s*T2plYr*CSfRa zaD#!58#C6;!tUt+`JMlA=U_|tJ_o&(7}iT`&V=K)p7-mJJD{lz8g5uQ`nNa4yN8yMpZr20T5e~@_G9cIof+L4^(f#fRiEB z*40G>8HI0^m7thvcxx#B{FjcV#rf6{uE$gC<)vp-ZQ0w(*Lr#=;3PJ7_Gd8`7%N3& z?L%r*aytTD;VO13-0kc{kH1Sa35Ozhe z$OpcYH83FK=jX2jr&RfPawX;6;sF$-vAPQGp{bh<_LHx6ukLX+%|gi*f5Bkr6Mcs_ zH29@3uK&Q8rb-NrM$bE-ZkN&7l!iS{nr0T}Pi)$sG-~f?Nw}yEbFm~`;xkB;!l*@E zfqlQj!NFn4Lb7wTo`WF3!?!^YmQD2y69#52LB`SwtiTyBNBo37KoII9mzYYW3pzU9 zMMOop_eT@hx}RTS1oOR5UemFSOl?F*lLj1(Bp(ONT({J?0byQza`L#2j@>5>KD(F; z8q%FO&^i*P6K}^Om_5H3Bqb@y6OqAs%~}iiZPvE747@*xS`$sfPzVR_VcUnvGRqPW z*)SZJZcysx0FVZ|N0~zdCc<&rJLGerWw?#D(~5?MCu4^e6y#FId45eUuXbND~z&COS|qsDmgO zEOpe@b+WzD!49v$VZO8tf&2kN-!@No;)t0aMFF*y%spO-rG+3l()`}VvnMQ%LFK-6 z<-T{21R=cE3+0=b`XT$i9X~dWW&4=rgrFL>5ws=E?Do(4Q#uEq1OviNZ4l;kO$W(d zLoae4vSKmFjLMF>8npXidDzW8{t%^7=Enel>O?9qs9YGvb~Xb&C^#DPBIo2(N0{zY zkE8>FhO;RG&Nqzb#&-ev_2r%QWX`k#JE4|~X~^HiZ!v2l$TY;+J@z^e zDmLE3=p`Gr_!LeMDn!1>cl*N86QOgfTD5V~w8wpmt=$=;#@`-rg`C}_L@I28o|Nyj zCW{nwn+D2+Bmn>bHuhT_^#MB-7R&vMdKGc)#}9iuAAB+?hp#nQ-wcHvT+l7!h-i{p z;iJ+y@q!1p{rSQtKWgwNJ!d%6?w?b;?*M56D%x|%iqw8$!=T6CeE!CG`GxTqBIVLK z@qi^hpTwc5wbTP*D$9CAU8Vx}EdW^X#g-@54m5lm?1cThy4!&5-h|C|>1ZXyy)<$V zcy*y+k`~kphYG51k!Zk*d{}rm8OXuJk94%RyZu1}C?ddUia42y9n@K}e?~W~CI&&N zW@W{o%T5GFte}%FdRy7vfXVmMzM0t&oROHA2qqZsnhd#Y<8jaOfk&?*91k zW2k`bR1BTX02qFzeEbLpim~EbP?35c6aSci$Q}O2EqA}6ziu-NV`(Wrhb*wQ`3AC5 zuZc&FhtNLqL_Ep;Zan^dBdY&jD+PWu_EFKNnt)o)hdkEfJO z9hqEtUl$JSLP5DGGxS-^g!}mNh6`kkKhi>XL4^`?Ee@4@4md6~-argN@F>HI%?oQ=N z?0~_4kenRcSF>(!fiI3r=peY%mg_!`hy0N6heJX_3fsp~7!LMpJUI%4?XA)ie!mkD z+;7K308mpJmT?QBZ0n=S8zX?=y|7bR%|s;6Mn3B_5QF+%}41`!T?;Qdr@hE9>i>MM&tB*p>NNT3*T;xoiziH!DN|{y9aup zFCWXKt@K(k1a=mjhP&5WWIAm_3LNbu0~FS`?_nC;qH--XEB9<`l3hQwYH8l$4jA`> zF>A)vb4nnB!*kLPub-wAYh4-3#({<0n1$9XH zoD|RGLuy{$WZp*CPS_H?7Z4Ua88JMpSd-Y$*hpu+9GhGzA-&d200Jsdv2zj>cguNt z3OE&nkXU?Qfx5>0805uMVu+YL9ySF@x+ErPHnnhTn2k0Iw2qc1picm(0MZ8ELdF!A>&*Y9tVtHUxNKbnEbwx6+sCk-^}H4y49(z^hhQFBI6hV zUUrY@nb7W$1wy~3$*jI)zGFcn3xyfwEjf7Ms8556;7rb#pnn@Oe9JVT%2Vo=5%x$R zcgcmPqn(sFp_b+Z9!4uJZp@q5k55Il{*}j)UjY1!yIjLbU1E&<)pNWF`n1O<7${B} zw9&u-$Fz**xZ8S+xs^h`ijV}9cfud}+{pNx{K>$D9B{?;hzV7HUc0#EJ8$zHP{^257I^Q9xvr_{5 zWGOD@bv-Fw4t&W>%yEv$7EaDae?laV<%83OYndnxz)LTT1UfG_*O9kvofsZ4CTPSA z+qNtCHUM@P&72IrX|sxXD%#6_9iYG*17=8cix{wsYwR0wk8>$wdsh%&iIbD8J;uzL z`C>yE<3E?y5^!G%e$8ob^XAtG{H)De?UaAeR!I+s?M`O;nWOz)MrO62(j6B3rY0iX zII5E!ziv{%1UJzA3A*x*dpi`7ddGl5%WQSxH!SjJt0JRI&p5c;7Aw^{yvGY{!o4tp z=jAtOQb%>J=*CzzH4Xbr;T@(1u;F~RxM%TqeOhBv%a8@8p}-2Qv2|R%iMj61!Xj>&Y^G;6>31 z|NeJ6)Ze$b_Z(?F$FGBu3|mRQ@n^>wohb9Lw|gO=*D9~IwQWy`i7{tqXJ-UKc7({w zP9%Z@Psh)XulB*0R^UzdQtw!s3cMqxH`&-@=i`}q~!=T})EOj8^&RIg(q+mqyr zLbSgjzRv;2P}}KI$UZPP_k6G4gW>*>xCe~@bIH8?0fDhIjKH`?`eu3=TU4w8+WLsc z%YlST{#iRx)us#x>8LDFmxoTa0>Jg-ULm9d(ag+DBU;lWP^zYUzD@Tn`e$vM&Adg8 z+xpL$hf*ZAyq8Y}@wN4*OVYq1HE91>CIT%mH5^}Wi@Xuji{lgLkINwl<24TSApdgm z;wQXqY2I2W2gCfL4eaaZ2Gk7jss-Pi{1^{ZRyb-e^U(3qS*zT}y z&+gP?X5P=(+3j2^oIeF3id$+ADb!A^K48t`_q?z*f z)e2TD_rcU8Bq-((7_6;Lbcd$uyUh!}(y2iY`8y~8+4=rttbhL#-FnSn+$q?3yWqY{ z4;8#EL;IQizwk|Oi_3lkeKf$?$Qy??tE7k9@WSkXQf;;`3B7na!y9%D-DSV~n%}%o zt^Vw7Mp57To=;#r{@zWAG5~anoEvBS>q~XyD%(q+jGicQOLT@eK_?g(M2Jmv0q$h= z1D$J&T6$ac#C|vw)=LxpL%RX0{14qpa)%J%mkSm-`g|1T6((PNW4$MD35>IHJ!a+%!PrzBWAGJuS z#EWn6C%N2vV;rD|tb6E*TzVR%24prLhR`{CUFdr5LnotXN8StlX|v$c3REKvlzvD+ z`PWfb9_Jsp=PCB7VyhCm2M1>v7KMC$Gkm-9UcYS_ji+l0J4U(8Sy{OaPfSb(4sa$V zfRoKUmG)TjKmZ3U{_T8ga}Aw*_1?~LD4nIT&h`b#6ul8|_ww|8vEV7;g0;qp@9> zc~#Z-fk=$=VG0*oMn=R}W%!`laYr%?1UR4V6eXC}K0ps^K}EMQn9~z^5MhG(DxD2; zfciJxxO%G*dO<-#6dY2$F}rpCoVO-MCALuONeVdzdN88cLRxG6 zweEgMp=NaUZGXf*y1Rt#2PZ2fSyetT>sE;W^b1~@e}Xyd?`bRtlX~D#^^bD1>~~0f z%n-v6&5Ac+APQ{2Hl@gzKt?3T`Z1mx`KfhXsjfuei|7Zr#VPX)0Q$j!244C;mBW{} zRgV2i&Z-0s90}_Mpy@sqYJ~YgUKrrq%@Z%=Rrp8FmS`?f_idk=$y09D;Ypm@kkWB9 zo`hKVv8dAs(he-vYK!pTH(cy?$;1{9x97?#D)mrUK}JS2n5GtY!|fjk%6nf)%I_;N zP=bnoX}vvvAJAeHxxAMTv2|hRM|<@~kPr*hgC$al?~@xABJ_DKZv8CU0RJ_HW+rRq zaPxCgjZGzvSbGB0RFg|YkcDzc)4%Wz67a-gva=T`+-jNT6^O?IQZP{gUO_>~D>rJz z?_Zvqq?1R?Ath_k<7 zu;j~neG0`q&PY2OeuTjRzamHx+hHyjY9rA^Xs#&;nnY}M4W2aKussw?R4~C^dkoI8 z6*u0pZmX1!!k%Wv{DbUR1FJAb14U(NIg9#|PdmFpYmcyR_Cs}7lUYTQG5NE#ZUGMr zt|{ZLU~{%Q`K8PV9epY6=v2dU`sBB$^b=m&51Wu8N*%9t92Axji}go;v43GGn0frV z8jnb=UlCe03gV6njy9PCx-5)YnzG&3!~@yE=3#G%=b7d5L}J>CY98cKVSt{;H}eWM zEdR02M}ar^e~5bvwkV^nZFmp~l~4o(=|%xTxAGa%f_tFg_tM?Ia_iF}^nh+p_KX5Pp>dk?jeDaK`+7UWj8GM3I>V0wr zZ)$LV=#KiP*rp6!nX_c7aYM41Q{=jpkBFZnO%}p0E8Bl}eY^NZkdVi@ci5fJAT7Q^ivb%O{9f+o9V_^weybZMh4C= zO@_P<{K?|kqg2$?zJOrmQ&z@tIgJ5JBv=IWqZMD^*pzOW`mF{@r(d7ytdgg%w9*cb^4yvOSeRkp6o2Q7S zuI+c=e_dVsb-)+|Q0eLEY+v%W+yaK6S!Qk`70#EawhQnFD=|Sn5!^)Cf>;*^3*y6n zvGNWGeE0Xs1y@d=!i;%64PszTsJPPcAbkE^T8f9utV8|xpQwAaIfI?&fX|p@2(fPQ z1$tgn?XT$q`GxKPd7j1;IlanT)=ai8qyNkJ)roCaDbg0GqHYN zsg)y)oHXNdM)XhG?9cIuo%Sn+g?X3e-&0PiUCb_uhKWw>ZuJ!zA6I|5+@m5~w-k1K z^N`!UM4>c|_%H6Eaf~6s2XKLerVw*-!_O?HZ-RWw3SsiuZw(FU9+O9;Q>6OI-*EIO zpj0vQ`u6llZ`$*R5xu_Wm3MnnJiDOfMK)E@(H-*4a?c`5M$?UCPHX-{R$=M24plWZ zgqEhF2opRSOlPrx6cTz#`Ry^EhX*F2wtjNAT{KS;@d9O$I&){jgjFf}wdQF!Oc*h( z0#HzoB_5+&XM{+IyYCgt0V$YO^sWNqju0uhu;LSn?~AS0E*p=Z^Wl;FEW)ls^q-A3 z%kRs?F44{f|52c$gLmhj+l5x~4G4 zCb_@#1Qt|Z{u?DKTSj~JC_TTr<=74FcXl3$i1-3pT=hqLLHw5}ur0{#`*fKb4*&~o z7mnS~`2&8tmm)Y;Z*MvN2n)}h)z%jod9r={?7B7SYf?M_N15&Y_p`p9E&2rr-q|U; zzKOhOxZKA$Kf|oSA_0e(J71z(hodcfJ`wkNw9XEzyKmBwPfXt#Z!BuT>ZV%izWQ># z>yfbcmfqEOeODqAb4^&Wq1Dp<5}VfdWx>*;>`rnC5M_K1>JcCG{*W7@STM1i65zCQ z0Np;*VwHVcT!;Jo^tsmX$2Xd@_p&63s^T1wB!`OA+})i&B01i<7*}I`OFb|1Ayjg; z-3{G?d4KErG4=5rx0^lR;Bc2$Z_%JaY-_>s3|UmK6$bEhxd@Iy@5{dyi3ZbMKl>!T zcrm8SkzCi<}he3HtaF4Q2wQ6Ap;yGI4M~{x&p|kWZC?0u*XI z^&r5CdYJe{zl8?Sr@43qV>{#!5VR%^a6vxLjc;)uzJYJ-Y=L*HMqWen zLpV}{lcVppAb7*ElN1;+gkY40hocWXp&z7hvETxC|ENke@W5Ro12EwR1*?KbS4C2^ zp!)#+VTk4YBdo+IApz_RHg(f3+#RDypI9EmLg}h(6(821ySuV`G&(7TPeVg__Tyop z)HNK`XhX;gc-km3%*9mHbX17f^^`F#fYA}Es;pe@oKt2j$ZtAY>HLxCM1F@b0CGqA z1)M)W>8mhGCFJMl_XH2`9^jAJ3(YX4Jn0WS4>7j6-gJdod@`}IDVBnuGLukovQMw1 zA=cS8bb>2W1cE7fta1@9Ef?N&|$DW|Ki+0`SD?B>o(o#^Pe;L8P(^4MD^dWEc;`LRgpKrY<3*-3qDuqRV!#x_TfRkYLL?%o?*7Gp z3&+N?{aU^`@iG8N3(<|(-;n0)vZeTG8I3=g)S7j1j++DKJe1!RIZwdi-L5$(9Ed9L zkKLs$Q&!Ym*?Jw4G@PXk90)`?!|3y-1ohUhZEbBqCFYO`Cq40FkN^Q`;csDK{($mB zvq~H0&iqsDu$Kz0xrd*uC`G9k51$ra%=DI;h|Ving8?q zFK<>j(dVO|1n8sC{QSJ*4g?ZdGmxNWz&^w(KX9T8-`do(zuMB!#dsG%!+w`sv;R3(oNLU=5;V6a;qHEL#C!gA;YWWilbP0w0Y3@# zkUJFYcova9{lP60PkFzq4S>*;;!nbJnPM4|<>kL&+#hI}y6wr+g0jODHp@hS$=f?Q zeK}z&V*iXzwd({av;|XmZI?A@6a*F(Ssy$kqh5f5aonJ)Ip{%f@YKy38-ve1*(4~A z$ABFsfYG*%5%%@J7nW+HMF8Ws<7FPjjijOEvt%C_(v~M0DS~E|h zO%73MY7_Vc5o6C^p{8eLdHz<$icd&zeTBLVC=QDOs?#IXQAdi`Qk;*e=cJk4H=vbg z6viAwCj)wWClF`1_Z=Js(yHzM`$?FgQf+T{rhgV~a}pfl1}~ofPzpo-vmW>zGXDOM zN=~$Nw8I6@tLy910Q7zG>>0yU&$HNHytdS>Uh=+pl?ncMo7n!0KYN7F zzh&lp%KHI0Yz6)xLAuR$$e2$W=JbjzGP(HgBF~i$+0oYSFa*8A2bhHwLQaVTu%Y$>;G1M`kFtrQ`l(v zT_EP{Ow`ia`ax5(SBS^N{JR^!D(7C|z$-x2qH#E;Eo`{s*F3<+ZU?!K!^>^SVrRRB zrlcX}l%%juRT1ASVkasPSy%O^bWca~yWmA9C508r>-P@AW+1;Us3*eE8F9!yY;pJZ zqa$;f478J1q-Wp5Yek0zKv_S5O1nWx;5>mnn|Vc;g>sh=P_c5xSDAoBl09f{a15fq zd()bH*XBk;Q&coi#Q&J&LhzW>z-X>Bb!CTpImDN#v@3$r%>M`M-os!j=Kd&u|L@@z zv|IMZ3JltC5q=dZ3?iS8?-q_cQy3I-tsJ)9YURypvIm5CEH7|m+l>Kdu6=y`Cn&%+ zoc`z@SUx{P0JAV-=Qs{Tnd7QZ7_Ko-Bz=s2xDZ zc2X{B>laY-+aNY0*;&re=!1Cb07>y7ucnGq3LDF~dC0Kg@Ea!m0!QW^Qe@r8^l*qO zVGio;VXAQ{cQ8399h_t&etc{XG^TJBKk4MuR`w0Ph#&hE60^lavb`O%_FVaiNVb7l zR>S_ReR5ScNw(i4Q*+SG{w9qBE)FHn0q5JG2ug-3OxjQ*Zc6p8ZkErRLr+%Mle64x zU>EbllK0FXFWVow)(g$6U0Bv``^1ezeGN-Kehj0i2bo##@7XK&i3HZDq-DzMkWi^H zM&Pob;dOtlS#+rd!SWZ+`gSN>GIH<+RVZWt&pKN=B%f}8ay1qG9S&`458Dt}Cz)N#?i==-W5^EMC* z{rm3TUW_Txq}6o3pfkMTlB_=+vS#&^yjazJCVk*h9|n{!QZ!F_qC97Uh7DpgG?>e0 zI?Rje3v01kATJ9D15JH_^Ut3@kDou6mXJUPIP>mYP4v{18ep|!Vq>caXQTO{<5Hhp zzHYqI#{jhioQa7p5P}Yr=mRXP<#)3mryDA=yEAngxiKsv1L^}|QS#Ye03b5w+)CLv ze`O84&A)ldMVsT9T>}GIz=aYK5m_HVJ{2Lm4lq-$pq0Was5}C1@DR%DTf3ytYd`*( zkPI=!7L5sU-iVpDUsq@!Kq*VGp2N_-FF`L@x|Fk;n7jMwdDG*L`B;c-MxAjG<&h%} zc}K^mzjM0#N<0K!CzxSw6AySNc9?VD|2(j)QfugyOc!3S4=dM!80MW=A7tzsOm?h& z{HZ}v50#1|u4&l4)Jt_P_HW%Xi(>1;oIW^_yPiAX93TQi63lWk+u!6__Nmuz!_Sdk zHeN4x;B)zN5VRnp{T1>;jH}u!h}dm5&kqZ$jN=k3I$PKNV6C!NbAd0!41>B9DqQ>-E>}D}!&#`|A>ec>2U5(2rrX!*{ z)w4wCFB^f*AzuZtFmK>khB2>dj4V&26=!^+lyHokgB;iVTT~)p-i|Cnf5JB1SrXBa z>8sWZ=MIucx^ zO5cNP6L0TXHhR5}tlYW2?B=+%8ppUB6;g?+k7ptDumUck883ND^l;+AB~%eRE5tKr zH)BS->+9J&BU~D;t0GMSy(d5%VR*L6X3J}M}5bX!vF56yQ_vq9kKm;GH4lw#Xf ziKuAhsWS7(L%784Fhay)>VvEy0TId0be$8cUITX|2~UJ)gX;?MX0|%Uhlzv9JRXKp z1*Yq8x$rP@p<0)}8M2-F-CpChVuzd}W7jY>Rrr!02{G|N|BkB<~~J{xNn27RkCzq1XAS(X0)9JmREPh zuXF4(8HcAxB-!n!KFEdOR!Uw%k$Yas>S&4Zo4{m&f|XuXPkoQk%C8&p++G*hS)~vA z&t_?Mbj|7ron2k*<{c(qD6{q?D*)A*{t82&%)s|`Jxs}duY&~L792EHaxWGFYlRII zhaXjK_M(nQJzLWA*bkfEdp@y|(so=)mTsoeW4GE%9a5UDpd9KA6>GJk)sJzQc*=LV zxWAZRQyEt0$04a;{6X22#XXU2TOJ*|PBD5pdhbO6^Lj7A&d(d@=AbcS4uWfyq>M=K zZBukz@BKJqtC8B3$-FDWMMIMOl;h5!=-`_^a7F-GP- z4|84?J1)Fv?|h`|9I)IXh^#fpD6D3S3}CHKx6rIRi1|c+I6PYRQ{!zA6Y1qnRCsMG z!31gG?w4-&)6-q1e;WjHYFePQaoB{Gn)*$SAQ>sCtho4ni44WjBjdf-@v?VBJob1Z zE;IaqfPkK%Z-q_3i)(3lBN6`G@QaM<<7dx;0Nsdv!%j--!TI?)@E;t48)e-Pg?~o$ zilsON-KP?QPtIcV^3Gkkx-?3;)s$(OxX3;4w?J@XD0SFW6ZRyZ1HsG7Ytz`5VCUMn zD+mfUyUI@N3HHwF@S=zR%(=lv6f#kZ%{TU6oxtB-UP1w!6a33R~FE=7tUiZKS z_!T-%q0-VeHa3)5P|;vbAw9S{iaq1U_e1g?*HRsY91k`M_iXtJMDLQ{L6k%0c{6QQ z?>Y8^1F?9;n|NpB=7rbW%smA3-dumiQnSiF9x^PT*$Y`d-<^(5qPCRdRbRmo_0+*x zTbo#vba5fLa^dUYF5q>X_~{`j%dDN+YEF^)S=YGVzNAQC0KC@VV2k+0>-g!$Q!Tmh zS&_T__mN$~mX-{*=i#*UW~m73=wHA7ay$?B50F$$m~UaCAp0XfxibkBM|TMi^!BIy zow_b9`db}VueFCrb>1b_-B;M4koi=y2x{f#4EA;~cnI!ZA4byUUD|o^2X_|cqqiGQ zdh>!Bx*dY2e0tG zdzw~GEjJ*q4VD8u1lR}>{(Y&-*d=z&EtIcfT(W^d0|U(7fgZnh?P%=~F`8WT}D$l64uE!2>f zh3@yC8iwubyI&7?-Y?Wth#!7GNL8gT=(#)zeL!`^sR`%1kfR0D7kkE&3^yVhrKbgJ z-7anI$shOOsYnZKM+)l)2967jJqRxsJDs>qu=(*61w=t9fGPmqI>i0v_^34UZpjOj zMt#@l5u7_IeCYK;(?~WxII;*A>^w`G$%J3vy#A43)z9X(Ug86+7?m`8gtUVr^4-yl zWDX2#cjbLL`n8x9n&1_bwY0r!!g0TKVIk4&pe6z=i(@Sba#<|TYQ&HV&XKRFGQfL+?IUr+-i< zDdFu28El{YaaJ(&^ftj|V{OpZ_N18D_sMg-t{bn~ARR=|&mDH?y${zRC_*oK^ypDEn33K|NCX;<+Vpf)P=Lti!NZ52C-T*AZx*0fP+?a~ zi}~7dS8Z!T)7o%6S7jm|reQf8wJ*k&KI`0)k;E2LH6--6V7|`=Ff>V-E<_#SKBVz%UXJ=*Zl0;TYcBbzBkR%WygQ4U)`V#m>k8ST&&HQ& z=S$9&QIo+f-2_IyjJ>x9?Oo9kD;u-o2Mp%64pz;hi{3AUK5#U6o=0Hmp7O|ltp0Lp zMmzLR(R3r&_!~F>=wMN7>RyG^JE-8y@Xd3Fd|rr_dAl}me`tfnf?PTR>h5K40!g&Fd?sLd=VHpK%YGN^NF6dqV49$GE4l zHCu66Y6=Bh$67V!bC_nct}Ky=IzpW$=SR(rl|Qm*;5PNQVOa^!R-9|ZmH)6-R0&Ik z)^XsVqxzt2!I449i}9W4cOD=x=TjU$Y3hk4adBtseIo7m@F{X>J<&(}@@3QHE+!JH zRFmm2%%c(ElWLkzaw2vo@>LV?OR=y07f{J};Jj@Dm-tJ1BlQz=y>wNGsxO(-cM8eF z=!3$-*vBuH*}&TPZ2G)6c=WPT>k5lGj?5bdB3i>kJ#&KVyMpQG&z}RO-e`1O^8Ak* z6VGeT{RE#%=_o3H@V)^sIjOPRDdlrOe-|4kT2qcrWs~iRs>D zm0fx}7P*n9mA~gX)Nsu{-ET!|8VgfBwx79w`zlCKn}btLS-y_18qt$2prB+sOQgvM zgMBxRS%76vmqS%sy{kOBgzW{T3q_Z3ul8c$8$&bi#?~^e-)Y~?{*G! z;QAaM-e$#Ho2teJqd^wiCqtaD4{-gm(m6#6?=hML3`*EsM1|bNmX>b#bm1c_ezM}S zvTRKUa-5t!e(lB?&x(*6it z0-2P&fSBD(@T)TYe&b%)dl`@KL*Faov|0PTiYtW1v$UB!nj|)q_TpL%jj@1FBn9-> z`2dUCH_XS!r$?~*)vHeoK;7FsA$SP*-Q5Q4Ajm{1$41=>S)za)J6RP04LT`DN5?p9 z)F+tt@A-&QKE8WegvWv!d#QbQ-Cd^}J#p396U{@-ok#!w3IBWE|Ldnqcn_J=996f7 zcBaebP}-}}S`8%Y6ytxsgXp28#DyjaWwjt6KAWHDd0fmpG4*OzSyf!^j%3ON=%V>T zN)lm2R1GHs0zKD&iZl)Pf@f{qc7&7AdH?;(XjQ!wxUhPSccfLTz0c&q95>^+IYjk> zfdRuC6uJeQ|NftE-+b^mhza3$<%AvQi;4)Y&f>WcIa@zirn2rQ@rt$^Ov?I`pG2n% zj~zio1oz&lb{PH{Z26Dg>c;MJ@2`3w5J zAw5~c;oQnSiUEbp=3fs*tsbcL`O&=&`y2aTEQABWpzrX*K`^NI}=lL}Y zbU2?_Fpu^G z-ZxNFQCAoAx0_QE$LI9aTB!QHR+*0VAlz5`>lxTv?zT(^3oYaUEa)yW=!J6D`$Qh= zeLSdF!;X@cl@(WDixWlyAIY<7U5ONV^-faqi?ucQWGsLt3SP{8l}+Fbww$dz>R~GS zpsf7X$cP@OHyaol<~;WYVnVf?Mtwv8| zd9i*gx}5tRRqh2F+hgypuJ?dB)rLXg{yPz92mWz@{cgYpKG01_yS zOiZK9n6E##VLkxDvcX|w0ux!I9(QI9w6EIQ#9?x!Px!YP=;&U|t~#)sH7B5z7!w0(Qxcyn=3)zvu%#8?-bP+ZD5y^!u?dOVghoa2F?!M%PDzNP4F z_<{-N^4eO!u*sjaG#>zrHC?lTFPpLb_Wk?!-&S{aLP0XEwH4LP%?+fcvn@c3AOL;^ zfU;6b;Q@WK1fj41@Lq+56QXsAi6jykKYV@fX@g7utfA^jl7L*j1Na$Y>g((O=H;OR z!FrwO1D0EB^Uy>1p$I1Q=sypq0Z5h9n~2?>s03mC8?2bpkKbf-cTe591@Ys67^}i_F6VC;!&;)rqyb+0$PpY*|s7zAsU{GY6@| zi4DdFSWF*r%DTQx#vYttJeR$8<0nbUQ}o3>-nh8E_f=Pg74!98inHl@xN8Sa#XiMi z0BiQp$jFH2V&M#v&Iaf&n-Kr2n@j z3KEawLBWcxYJrf- zWm6Ie3FfI5W##5dKX~JPMpO?Noe5V^PIk%&O6<8S1`cV{>}(<^4#FcQ?v7RvezCUz zUyx^!yIP{*v=N(v8r4-*8TbR}qG5IHlWVb4F0R{0n4_~ri?0>RzH zA(g%IL%odA{aA`RmSv@EP`J!$bP56)>hkjPrt34Cg9h;Pf4#l56}{9=f}pBfuW4K} zyYtqeMEVhs4{FprLut6i)jv*6rS%+Qqld1f0>kSNJ@9b?c8j?^?u0!{V%Jgebk}n| zq;{){%T2}Ubmih(D=E$I&0zL8Qaqf<&)mIQYgv3N&UPA7j`T1tUt9DGofJL4{cL$r zcf_{fuH5=;L2Wj!Kz=RJ+8mSET2jI&_p^dHTNv>eAIZ$9@Fk_!!ZX#*I~#F1Yc2o` zHZb%=4gZD^3Z8E?k2Lw90`l9^I7Zd+-5ItHf_fFEyB~hJWaxB{Y%+tDFBPAROb*=9 zpOqUao(UCss?n-y?|~$@OF+P#Wz~q(x6IWrpqMkf=I2ki*{>^7cI;{n(zL2U12#o> zdFYv*0u0KYpR6b!iobYzb_*XDxiYmR2&OH%Su#!4$a;KUif*@1D4_Q%7XsLLS$rR16G3VCVJuUMOgI0SxT} zJ8Nwen8oNWhpMb~fe0e6+c`5had>s9)r9kNZZ7q~uDYy>%Ex$FATO`S zY@o+EGB;<4q!4oDq%kum2AvlA7fjZmyP*t5nxU9H4r~44JrJ%y^Os&AuT+27@`$;s zTYq~jCs*hq((~{n9i(eN0TlIf=zuZ6=Ak zXW1MCtgURxD>;}_B)}37A+8| zs=r?RL`Ty;Ir;NhV^T|2+zCF(Rn7^&H5^e%>s0RU?tXZ9xY(hXQEfZMSZT=l+Enx@ z4AgFYR!w^vdC8^d;`BsaodAnMI0^8)qkjHu2fjUv(A8?R>Mqnt?k0P$dM#Fy_v<n;+BJl&mEo*tB>@c46m^(!teTUDpJ&PC^7#ka3TGVTB;OFI4TksxACd;0G@oE6Qsl7b_L~kI2`hox-U+d^*{ra&mz+3CFdw?$&Tcs{25 z9zyZ}Qa@mU5PP3&45Gg8jbnu`uPi7+^G*wvC(umAVK)O-9Bq{GzopD4PC~r{ z-n=%2#NM3nhB?Q`GYa?Bw(i}9%0R^I#9c=J+*;EwXU1M7Pzxu^EINDwX=zTxH|$!v z;5cYMa(g~AHA8&5fdNwLeActC`6axXjsGQ#6S{vd!;$FRj6bPNF15mjX^{b3ZFTS9 zV6CC8(t}xTvG=LMf z46lNNUrc!WYjQnlK3x1hsWQ3K73$Pr742}`)>gR~GM9x8oPax$(aK6I@V9yGRxx3$ z#+^#hmBHEp^03{P_DU0L`j44D#h52{;~NK9dN5KE&m?R1el0J= z*)y_~--ICfe)rlv+VqnWjv)#EOcpwgMA&y6Qr_RBZ&_Jc-@JJfGX{bAiOL%H!2?Ar zoMXotE5Dg**06=PqY1A(Q<-c#K@7Q5)(#(3j2MeYU|fJpEFywqyJn7$aKI(^p6u-@ z`K_-TX=!P}K*CfdP;h)~Y$#iS0yH!LWw2H17@HFXBtU5ow95ecId8t6jL(PiZzuK} zH9fa62W-pFCBP>zF2k9iQZw7s4LL_E%FQddxOYVa%JpAzoBM=@KDyJn=+vxC%dkvd z)B1|??p45_!>89H8LF!g2bcP)Yf4&I=J&7tXt|rZ!O-{+96#1E=<;ISE7WyA`?nqu z8XCt`l{JcFWQW!dsH_yPtH(9U*OwR{A4~ZiBz;>Hh|GNPDb~{(X>F}(oTJ^CqH$-osDiKNXaI3OE2?rN+8mtc}F_aj`pJMQ>bQ`ocfR!D;?oZwLYH zj(vH)n%KOy)AXe-HsaAQVKPGIV)CW_M6j4HL_*mLLH&sZl`Lv{+6T0)36Fj)DK*_Y zfATe867o-APC4!S94Ld*T6lats|ZOCcyXPwzANeZ&q(;o{t?FZ`!l}RmEFBTgrzWS zUq^>FtT7o32H22@K3nl#NLaO2{>|O!VEa6RAVnStzP6ic_3L_6v>s zD21&1iXFwj$}FzNz!n9I2LD?0$NXLG>~ofw=M4P^#70G4MT}+}r+q>fKUe>TDR1a9 z6GVhHLH#XleZEQ5yeVJ|sz)VIEAP>8$`AsMXJ#G6=W}ltgH#pC?DX_E@keiTigI$O zUap}DqRSde_+k*O(ap_e1Z&G?(px?~{bk=gTMZU!2Q0J9oSX+3Zfi&y z*g$$aycK{PQtNaeZ)LTQ_Ch0B?4RmQ1QIN~d^-l%J@xlb{}$A?={ltV8E731=nnZCl!AgP|1HpG18T974|uy z;Jj7vP5`S~T3^qKZv>7A2ol?Yz$qApb|4LJm}n7gk@4wP5kVo2X~oa8TijaH694d} zN!FFq5=8mtFz+zqhXgbKBZo1?{LjYaLS7%CAphM~Acra-Adr;&H0ST%-!)ekw#d7^ zg9o%gL0|&MRhz6m*#SD;di(^%552h~yx5w;CLWn8OePT-IH$EU7?{`9vH2H@<|+Vv zMeZaEb~wHTVUY5ACnhFZ{#M6E;Ox#$ZbO?Uc)IS2HUE(0w{YtPVfhq6sW0}Nv2Eg+ zjG2VDii42HULh1*FzNNN8ma3Dqi(545kYKuVIDZJcnVRQ_HA{BME*1G8qz2AI6LU` zJlBP}A1?bcu`f#VI`Rf|>Xv3rF?*dI+&{R8xqjMOBuRTWG+d_j-Or~PZs(*5 zB2c`asZO52y@FCYD)ou1`%4KkVmK&Qsff((!`Ax~vq5a1QYsAMxf~Cwz76Eh_E?sU z*TfC#7xo0$9UtjXKmV(D$rTA8mKCeNneVSYbxX*(P>bw+q$s0KW=AtU8SXtfq0=lC++0IhjF1MVm{~`7rRQS_?94Ej6o{*Cl{&{Xa zTNyq}ANJ)0m%@&>J79}KxVNr%VbP~#a)eEvbhgs+F4G1U_lJ)j0r<9ldrS{-jX*rz zS@U(H8aVRPldh=tc6Ke)6%A9KB8rjkqHKz*F!EJg$A=ESdF&v8VuHbF*5pnOpC@S~ zit^QLGD59tzxt(X+_JUP`HI|cFs!cWcc7)KlZ`d|x1j9>zNSFvu*pYH11xku_Bk;t zpsiBX&H4Iy`0Co4X_hq$w+jtyROgY(%=iR6M(Fq$02TP!U@;g+B`3Q&pS8|>LL;%b zw^y)veR(-``Gy7fEv6P0_W?`h+sKI0TIcZakFl|jKxhrbCn^($;Dw2)DVWv8xIFk! zdzzcYTyCgnjNkg4C1GJ=ZkBsWt|E9iIfsUZe&?%x`lO_;o+IerW$j!3J1Ywv{BN!o z`vs)d7#J8pzZV~*()nIgIs}qO=nrB35dVzDuJZ$0@hkKr{A*I|I8v0wF$bp8TMCLH z7evJE@GS+Q<73|U1_tcF#Trq1H49B@$2~BpbR0=6$_1ywOGk9B8sY0;`V}~qJb{49 zKA-d9T~oE5M%GCvK0e;SsFDmET{C_T{sSN>XLRPJMG974AF%WsbWsdI5&EPS{;Lx^ ztg1GML9E({KF7(0yzaiOzt&!8lTe@cz>bqR6Qt{?&_D7ytu)`iemD9feoAJLIT5{w zNE9x)UWYES88|du!m;@VFHFQB|7HUU86&8YtM9T`Ed!VPY+{wOTEj9y-#yE{LrOR459ij1&X)gj^DMz>{spYx zYOdP0wrNo>S)&=ItE+0rN5kvr@91bW zaO&S!NzD$04PfzIaoxFComx1;U~PZdxJ~h_6KI23zHHNBxdS5$)6;!HtFA!Ys!zP% zvu9lNb}M9|Lv@_}1#fHRS8pX{tEPqBFKzJf@IdRv`t5kO*jL)Q97I^40~n*J9Dopk z6!38C&11q)w6f{Gm8aKt8-w!#NkE)z{8Zp`i5jmLQV^g@SY-S$BK;}h02bjd_m9(Y z4KB@~INtLOfB|tM)w3}#m(+z6m%RvE=4gvI5 zGw3F-sF7M&SO>WN>D6bZ`&S#Os-7?aN*x^^-|fHN&MSI_N&2?{eiTo=c0nfeZ%78AOdj9$nDk1Ya%Sr&I-gQ1HfRWN)7J> zGr{80PLWI}BBBe%dMD7S1=X#JN|Zpv*7TG)8)V*Lr~C7X5`%VNG@+P3Gyp6KpyrXB z+cmF9kv|%S0>~f0d14fC*(kH9%u8E%A{7OySJDA!M*QVv1^OEr8XBo?DW$;QS65d# zND<0|(aFiUm?Ta6@&gZ?@fuC`@Epk6YasKtj-s|VsV8j1O^uF<49rQ=igpKK| z@C0$cO8rffBe2k^`ZM#}1|csGW7Th3??>je3hRAR0Vduftr#L+2_+GB`2hTySOMIa`8*jh*S?lMIY^{@*-Bo<`8` z()uJ|Yx{7>Gn0jO3m@acT5t2))|}(4xE)xFrX2y{4rtwp8oJcvUb8{hAiMO2r_t>GGe0~(|8$Sr zj2)OQkokB}ckvt<81V%|m@5Rs`gvatXpV{mp_3VOajjsU zR5soTKeqMv%ehc0%IK~?ho4|=JJF~F;(_KwKhMy=6yiB6E9(OABfi$Ly~=>h`-c$D z>(vC?U%AJ&_V%}t0i}h6AWQ%T_*!L+0~`q3we9LaFK)~PT4c%Za*|u%^dK^HV?!-( zsi^Nt?Lu!XW8`1vzsKp}=bF|Hbc!XIA_pJt`PQO77JHe+Z?o<4bUv5En;PUqSWJi0 z-{oRZ&EQ&^uxS|Ae2-hBqN<^r!S*@4c=4O-QCDEpSCM<)?H^PA967Gz8pdE`!Ck8( z(?r>^cvk8tdFwI8RIj9|tB|In08moc50U(})>zm&UGnEhZTcTl+4(yn`E>no3PVG~ z%`?|=U&>P9JEZ+;saE0Y_5|1Y*4DhT8MpuVy3S(0mH@2HDrcS&triY(mns7 zaeOvddzVieI1$?M6f8sqjpuD%As)7sqL#oydA%#+`qR2Pp{f0FzV2)4MKFRsjd@G4w zmYS)2Z)r->c!`eQ-s+9~?#TQT1%VL-o^(&O%0FZ!Twd3*-=X;{s;*>eJ4*GO$_nDe zTsO40w?BmHD;uH1I5?b&IbK)M%yTwZeygrrB?I&WR&3~JUBqRYj?T~<(oD< zqUBQR^k6nlS>CE`J95e8fTIunw4m9S%Y35Ct0+WR)V{0=UZnK`i~f{pGsvSn>yVKDStOuR4Q-R8}Kve3FPItobEec#?#0I5v}026%A z#lWVvA0($Htd~9mjnNn2x+RkPM7@=cu>k1$$bkFed#Gs7>_nkWEuU(8x znN1#U?w2c`0(lGMe04n*+_Qpv?WU_-gw1^xMrAIuiS<>Fnv^RYN-t1va~71A2wjW(3bg+@0Zow^*8Vvilhp zF+8f2Z;j2bwj=DH;1unc&hjWN^Rgv}fBa2h0h`fdEfW24(xHWfD;rC3%|o%g=U5aT z3F&^7l;Sswep=p7MRCwg#BMx#N0S;km5ZimFenT($0^y^zJmnwK#EXkULKR?WDyPh zKmL=pO3R699rS;^z6Cpzw%cPbz;PLnFS>)qH*czI*xk-8v_WTG5FG%)wn)u`B=Ps} zF-4$T4p3b;=ej|AzITfPCKv$t#S6Jr4s^=RYfu76(xugcjR>^e{R}d9fFe)=6j-S> zHvA{3FDYpb1gKwzfI|4E&z^ODdqM-ws%;Xk0IH|8=VUIdtVJ?Nt!-;0>yA@-y9wva zro-3-UV{!RxVKVd4tEqqzueK^cb$mmx|l%G@z<{zm6e22QGW{x?&42SxlJcmR$s4` zJ)udg4%(@qf!X8T0*EX9ntw9`UwwIX)jv5o87#7Zf&kF+ zWIa%En;AUsy5Uaj2hjTR#zqjZg8u&gU;Rey!d%8JPmopAx7MI-(tjUhkgj53S5%SL z#5~UoEg1joF4tIi5(@*W6b;QA0=O%CE0Ui-r&oT})5m@zo5ZV_%bv9O!w= z!BnX}i%2Hg>Cmn2>0y737yFa+hZ+wG*s1K77?7 zTV5z|R{x-{uDeSX0E5jIx6%y}Q0CO-Po0e&0X0`&e7cjCga;^Yo<2oNR-aT3z#Odn z&!h?%o6KyWCvt;?tA0+M39|%0@H=L;$$eZ6KA8 z=?%WTt`~v}R`riB*vqR7+Zg9tkmP^40D}_)zsqV*UKeRr$zOoRwbIyfa%~+Qc;w^} zARiI>jFq07I~K^{9f3Ta**+9R?)u)Tlg#No&zub^IBGOgZaQbz%L1afJ5j&T=;+*d zioG8}pOW|;q+hshf=n*RvUuE_qs_4EmA@%$9#*9I(6G7M{+)w)bpS3%mNhYryLXz| z9nCNcaz<6}quM|?gaU}DQ94DcPB@<^g@m;4sC3=d#DYRXfbuI{VSMEzD(X$26S;Q= zKz5)n-Ggre;1$sM#59*R8u0Bx!^1%-*EVpaIzZYFn9tpqY5xqOK@{*AfUU`SBhuB? zHPqhGAq}W6ppx(I?28Kq&=2(b+7%>MLCeS78Q`$~Up8{7D+lQwq0ZJ)MD8SLGT&ii zcRc0B6Sk!%imJ7V@=wX1v;$j-_F#_pAFdkx5BvG>i;*C>iH3Q~@knwTnMN%5#Id+J`h$%Tes%}8z-t*AfGhnHF&7GnSx z!a^$y@J6ZmGViuqvwCeT49K}sNN(Dl1S^bcS>v3D`j zb0-)YZ;8=jrgO27mcp;n2uOg$4R&)8;4ROAw-3-{m|RpvB;p*6uEqHDH5NI5|1NDKSSiMrFjI?didw zqU+P$BJe+t0!&bP1gV~NFfJ_jCcPW9*MFRHYio6C=_5JgM)8j4*><^)DsGua6eERrtC_@q#q%LLb?aT23^8fw?dV2{VjWq&xgEFCy*uq_144%><6jHcjT3oqx%m)h{8lca?YEM^> z#w@Gr!pDBOtWokU%XfY?wrMJ@62-gZZGo}@H^J@%Gi-i6BZqU2({8-l9 z?Qczi_9Mr=narI@nx9VOQu?AI&X?!-*JtlRrYS(X&e35S%>>B0@PoMk>|9%#EvT$N z`8G~iu#1U>WpH)82KaEGsx^Pi8En&nR32zF70aqy2!5%EyBPW>lj^+*VycC8M8<2g z=q+~xu-Er8GNbnBnDH`(3HFBQAz`--0_2f}Lqg7ndU0k!{{D<8g$W7I*TlqM38EFC zl*kDFwkHJR7x?%n=0b#5EZ^$t>Xc3Z2CQp384?>yXwRQ~ETpYHUcmL0u4@MPRX`R+ zLqo%JjkS<`$&2YO!|Wyg|1tL!eo;kjx1bVADo8g7(jXzy9Z~`kQX|scNDm=h(%sz> zigZagNJ$DvHw-;9ck{mAcmIWZ{rMZ1nKNfI=j?d)TI*R4axDGzy;CzIkP87@XHY`p z!AGD?1~3Vi$EnGuPoEOpzNdoX6kv+KhiZUs%xpBHw7##ej|aRDcKeBLl_a9x0{OC0 z_nPKNiZ|-1Zf)fX^75;Q+avRh{#a1KBSI}-*76m+IZ^;wS>l6$z`SXJK!WyG=M~C{ zuV8&T_R-p}+Yh&?KvDxzxI#BQMIKhb(47>;vjde;#Iqk}+07j2qNB83_0CYG))Nrh z&pz>Cc1M?#%IEX_S9+`9HG$iorh@DC^O5ej_1&ouO^4^lZm)}t*br*Q>tsm6g%G1| z#Hai4GFu~k{N3I+f`}eTARkJEDSo#O1It5ITNbTU@H>6|3Z=)t6Z_LZ)+l(53QQPQ zC%KA_rMULmu3tD4503RrCF--o>&m~{{{kS3ffh;~d~pq2+QFN`Ki_|YyU||ad+Wv? z%eN7N|9y+1ox((U9vv`H(`DHZ?7v7X+ouR(M2J{0l4r#$=1&sQ#%xB^#Ram)fE9i^ z1G~Y!pjfAEO3KYwAay7YzaU~ND=(3Ioh(!e17E%*~ zhN}6<&2+vwonI{*V!X8s-(PHQAF{b(2afY>8+rB@oYPg$b5Sn}e$42y*|+ZgajkqD zZszgA<`(tN=YViQyg6bVhzf7Y7XThn5#|Oes;&1%(S!H`KsTmry5KojJVBwqr<9A96guN;#)eTS#-q)|4fz877mPi{wN-2OnTLDnvfrJ@+koI+bwmXa5?(Y#?FqlUL z;%}(pNVI(1??N}=$v8DWE)HsoDG!=A*e!i)Xz1(dk(nmd`7<>)ClAW>fMpq6cVQb4 z>aXqZM`mVHg8f56f(3+h9t>E!r6wTa0eb@jL2Oys;wdBk^u(PxfH?3S_z}hhT7SdZ z3^pqu3QH;?DqLzy7ZLQLjOM`2c+G2(m%Wgp-0<-=S!9$vQP`$z#N^?sO~|N9NJKJE z56B@yg$#IP7*IIwZeqqs8+gzYWd>_hLmmVk3d=g9*&#-ArY7Fo7S&8tq#C-pab{#T zPc7;PGNjh%?D`Rym|u2{j^bpFKE=SmBO@O}W%9NCtgU2bhG}QlYH7oUmS$;Lil*{4 zl{BEWRcO_(&Kcj;wU}=rnVB7@tCN;ct`DU{(s=y?!@$FrGfHQl5)#pz5iLTaqp^OJ zW@jF0=@IpH#&_U4k?I|Pce-bb*yS)?@O4jh%Nn+JahpF9Fu142T=kNoMC zoD|FMfhkN`KuSdp0w16Ru=GKAuj5R^o(mPJya0h6m53+MmjxJB_pN+f-EMMCvowqp zohk-|vXr;CFvyr9BqEB7jqRMkA?KZF&L)sX+vDPs=lvn>N+3M-XStGGU?H$LBAO!b z7Z2ICs*SLO+Tjf$QnHBcM-b>3-2IA0FoFPqmaI^T6i~ ziHpPc<@U0y?pk|1H#k9`y-oMg3zTC$9*?SPx|N2#mA0zus$Duai!++~^KQHsetFJY zpfU{glMPP*Ya-FTwOkhL8(kF!lia;`4civa% z2I^Ozy>v!EpaHm~1`u~9uO`5Fke2?!Kpd*BxMIVv0fEFYC=g@w#Vu^SUA5Z#T;TJ> z42+Yw zDrTWgodBz{d}4c}42P&|NIusjv>r!|3Jv|b`f_x1haVy4_`vgWwA02826c9}##e%$ zQP&<{z8;^O3kB0`X=zvmTWDy%X3>hX+h`%!>AAu$9-$?!9W2Q^d=p+s19DX|3#;AT zvlVfZg4gdb#Q`i0=2=2(d}t_WB$`U(t*7S=;5mSR7+&22gLVhw?Em>b)Qd#X`(b0b z1vLlA0$(fQXrTcQC>Vv2sO4p%EGO`hTLECf*4LGcnCp7T|`48LJwYz zfI$OE-CTbnq=@uF+g5L?fB1S`JPkn5%_7IkTM(b&<%<5RNc@Nucd0Z%Te8IG&j~lS zoX_XDQU2N90=y+OJbZ1t##o==xy;x%E^qi6a;#?3rwOwzLo9?dwwM!J(=!@MQKa3GR4K2{b zUyGHaiUq6jy+8?s?#186Z;l4yOg%1_g~GB_QBcIBPfpjtohF-HrykXh4{iy0DuYl3=3? z3kzG=*!%*JGa$bK=;-L=6sM9cx@5U-;`3o_GR=%7`v`m$uqrSgw6(PXDy6gt%1uU2 z4s=s$z3CU*6A!_p0~ki&82{KA>5*L@2b|&&ezOUMScO@zU@}rSj>Mux6>Hpn` zgP+ubThOO|_?U=?&own$;1>)0wjh4u-vbGrU|IQ^o?P7I>+H+}e6{&)Dd}5*!+Rk} zj(_`Z0}w-H3lsNb1JH#4HO2}WjCvzIfC%K38`tQ7kr*tRwOlK;~17?qC*&8>nX$~h!g9qAZBN07rcuAD@aV7jKv~lor|ac z71i`rs)M7W+9)dfn1tWWOd2cLQ1Rm#`xOPPZum5aQJvO|@1nlHLQ4KOz+J!x3qCQT zA+HdL_J7kQ{$Hm-+~+%V9zD+_6S_w3w|cniPp57nOMR;2-fRBRR!lN6#xmxb>zy;g z;uXSWpj8t7;vz3Um0~h^{X%M+i+0B(&MwJCb=&CAW2q3vr5!UI2HGz@+$qx}3v;zC z7Ld1P;5=nMZ_fIr*)<3Fd$$d{W7@K}O66QfTV31jGaE*yMULhHzRW0@i=UsLAFh97 z0U*E7HJ6$hFG`JYP>1swPDrSQ2DDk(ejow%#MhS(xM z>+5Q(BW|;)W?Hk2-#TuZCnZ>1r3nXJb|M@G8mp0eqMGnYN6SnL$V9(}*c>AE82PWE z`l*Nz#(U<^se_F63fD20AudN-DeAoSvq>}1FP#@4s3mRQPNC^Q0#CXPa3D zLh5Gc;?tX+#rj8%GSBrd@|pyXl2^PRoS2|!4jS~X)D#sUl=rinFI#813oQ&i3@zc+ zCCn``%F#&~3k~ZYn((zF9r}B@=+-5k4`_csPnmA~vv{Ht=ca6+gtzC=!$t2cgL5Jg zkFax)5+H= zriB*QH@3euwH;4zAb0Pe58J&QB1ovP#=S0Ey`kRvXYHFvg03qGX&|BcwY^NZlUFHOwdLq{~8cAHcx@`W-g$Jy9h{QxJnN6I`kE~cFk^d=FA$~yBRy} z?RexhIJCeAiC)DDpR{2%dS^u|CQfJDN31|be>)@$*+b}qFVW{u=1?=!(&XxlkW<}F ziQ1e*u8KZNIC3YqLx0uZ*W}g?uu@Q!cG^2Dz*cfUW9e0<{*q7A5e=wb#t^3?%Li{K z*kEh(djxfxN`dIpd4W3x7D-9PNl|V1UV$T%>1i1Kmv{QmHg>n>%qyk1!g8VrhnIuL zf4TqLXp2}ux!!wrVMF4RR0eR!AmjU*zeO)XpBsMcdD7I>M019MVLeK)V(ppLekg_~ zn{7T-q>Qrv=N9EPyTr?Rk~Yi7dF2lxS+yspr)54|sT}$k9bVaPb)Dn9{szis)#|C; zw|$_sjjM=*tXw}{Z{7a=TR05|Z(r(iq%ahg7zf^jwKcRGM}6}oM?DsRqwoq&(fujB`(Sc+DG=cq(s7geEpktZi4{n&b+RG;X+%Mw^gu?u()V) z-%5?F8vOdl&%vRvkU+L(i})0(17nL>t^a=4Pe?ZdpIJ{ettlm8ieH+BxGaCZd7PO6 z9~R0(1}#@+4xB*a*mC|V>k z(;z<%F%N+!U9B}Bnyq~2T0H7PA2iEu4gMwaK|_Ac-k9|7S2%&zY#!@~*ZynTo5L$c<~6s^nu@Dpuwuo`^RwKJoMTttlWk8h?gyL9MO?ZmKWz z&4sDTZu&0CE;VDDIr^FSi_t>ai_5n1-ItH%gQJr)Qs&cNED892VJ9Ha2>(NaL0z_6 zu6P@7&MD>8<`5(5F6VGL8MNLEzwfmBHkKOhGf#3dTyA)6_Xw!A=E0x1c#^G z@mWHBmgt9=54fB|V$9uGi^W!w+*m6NQLV{W6D8bTnS?cbsUYVqor+6pnsT)L{5IPz zH7{Di6^pXOx{|UAYFG4dMeBdCaSk*n+nRGNNCwsZIQ5ThV@e}6%%PM!7-Wv=d~A2IcY%He8cJ^uL8I`^}M4onRb z5zUuZ*cQF$!l_YIMsE|Qq73@wXBO5TGV8bl1y&lEz}S(0($uNP+lyZ4+)a;LzsL&8 zLfiGhGkD0sMO-YZ)%fHhn@Q!`5nF!mXXLjbWcLi`kM;FUDEvehVCf<%BH8M zA3Zkvk0>HY9(-=+{rfWu zes4lJ1j@6Ipf#!9+PH$g@&05V=^T0z*2?|TlV5!ZnSG7D_QzVT5jNAk=-4Nu?|q_3 z4fs{?B_eV(NbRhos|ZE=T6$ouv&SAtc>da{H=j_1VVD#P@}I&ILZl$ ziQKJ15;DyOY9smc??8~~_hQn4MRVg?E3{Zo1{iQ-lWZd@TOp z+&cuJ67%F&~i_l1`{=F%l(tVAz>R` z_W9#st%0Ix)=gQ-m$}*$-k2(pM(KY>e>WrjZLNgX{kgk%2qH0hb+q^&&OlDrwi>wj zxZgImqqolc{`wsmwB3h|h!d9@UNx8fsd&2KU3k8=p#IDo^8$Yx8nIjS9IVdjxl%f< zQQ=lpBk1J~vG2F>Rf^-mJCANw=t%ZEx2k&&4ZoDP=&O<2@sj*%qDJC(UmhAo@eP1c zP(B0GxZPS0n$_I9!Ro_aX%2A}L(sk^!w#RL*|S&G#Uc~`3%@(RD9}`cf0C7?^*m}z zwq3d7M_%GVUrvAoW=F)Xv(I*$Z;};a)(6gZqMg0Be!)~Y0j))Fjx~M(qioC&js`v{ z!^ejlJ2ARNp0XpA9g)x+W)je^^*J#7M$G65pFH;rP0RxU3QAD#79fx;t*yIFYPbku zjCtP{kw?i|K6>POSJl_Ky)A(P?(=|29LS8|77%dnQp>%*nVOmspuiQT8siotzzqRV zV2V-^+8%YxyO&=^7;zLw|2gTf5f#3O9vC=AM!lx{n4rix%`M>WcjVpYp@hU+!mHY& zxx|l*j;?iFM@3;QPN_)YBZaV1^rhzd( zMiX7@B)YIwxV0nVz${=rG8`#CI}fjhGwCDFV8tt#>(-|q-z+!`j};h>KHbMNE*as_ zLAsysQ+zEFLCIHc&Q-7sGLHZ7ruU_B{Y3N%gk!!o@8XJD7}aWl1r4-$engsM`GNk% zJK8}M^VAPRTlVcyUF{(i=Q{l1_#>ib(ltwPWKVx5!BJF7HFaj_n#24z?fK~IRCgK) zwzLk5X-?4IqdumZg+faO1r0)Y4U(NXdO4n6fe?cTEGnHR3X8s`I9Hpc>hxN;qKh|# zcju>2vt$(9*5RGHEl{_N3b%77Bxmn@#c5AN-M0?wCU4T!_ii+71-i8-cFFH@a8Xmc z-k`>#mhx%XHA{!<%%JWh^FI61LbwH_Y>4_JgimAOH<)sHh83xTH{ zobognsHGY^%`@+!bewFU#mrt!^^u&R@-=2;Z^x@U9FYlQV0h#e~j3FP@!B z3B)0l&)Ns?HkWMgK1|GNbs?E}A9PuL2V~Ju+zZ8&)KpX&vZ&fDH9J#Q;vP3A(vS~h z+m2N(-ZQwkr;VKw0Dn!4&J=QNEMOW1a@Byg?!PY;9{$wl(4rFPn8l-5bq)-yprm*& zEfzn3GKqidBB(5yEmu98T!8v2HInY;?1Px#plJx6^TcT8Vv{TDo}65mY~iwYBes>b zHJEh!8YeNfQh-JMKai->XtAZjA>^F`%g4He?l-I=363@95Mmyx$Rj-`G(3^_-GLPy z|C}Z+@p;9Vd_*twOwS|W)b=CsL*3=+E*q!#_9MwxkjHR(9Xx&Xd}7pwt_zsA$=#Ue zK+!}51Nnz`hsyKF-=P>_0m5JTRO-(&Pq1}X&JTX{X>PGAJiH?EO4$$7SkRBEn^E#) zED!Z%NqSJgOcWgGwo|RF9fvO8qaMCZ9kG3^|HY#K67DcyI_@GN^t>p|*vF;weTtPu zQ%-9^iz)f$!jE^gsTrUtu;5UbPD1B(1Ue^YG{S-i=JccEc>VH+RoF5*{y7@eqz{-m zg>Rcr)%hyz4#=P}z_z1q;&{dRGc~1=It+QvSj)2X>XZpX9V_pHMm7XyonT;$jpDnob0|N|_#2X`X#WYOn!BQX z_P<(y&*OLhvblX`l*6}GiO@97CntyO(!4l%Qs2oUF-IF8S0VM>D&uU{GSc07=qPWN z(r&MN<9vM^HhsMlcSWLZSPmAwgQ^NzRw9T0xS1Q)9^AASexuob&|kcsVldgn;g4u= zxYWWPl zH?L19K%Fctpu6d#6XyBco=KLx=|5yTKK|`V^-@8JA-7?3Sa7iBi+}73Tr2!9zIw&} zTb^ESJ~9Q1RCA{_N~y%1-7(qerTwQUK82&D%TqA4Uh+l~{lOA}tbieQH2?6>bK|KD zY>VgFlNu3AQ?JRlYjv|p+e4wvi9X9OH%mF&bmEd=1lg@g-C*^CSbAeGRQpz@ET7yV z(?2(yfU_gkx|n#8V|hi$Er{M@WcE80pqw3FSWr||#kKGHWZpeys?ON`NU(9FCArd-M_w5tcUfZv~zQ>eWd+v zU)!b)u^^{huFR1{KTE`^)G9wKJ@CC}peMoBf=W|}oiCKhEt>FD_A+G78{Xh?xRPzY z9b#m49#yt8yG>4dW0bOmfP3&mkhZdyV`vm6=_cgUpQZ<=_kFEjmupptTIt$4rBa|L z+u7{~@x^o&(ic1A{4K%U$+kB6bl66onPmhHrZ^NGo)aRN)5I2^Q^xIGPF;1lG}5Zn zS9bB_xO(?Zq2w0jcwdu~rx9+{%h62jS2J|TsZg%Wz%N8;d|}Sf9`lme>kS70R+aw3 zS=W!FUcm1T+87xd#D;y3WXg69FAaYs5{PxXY<~bB&(;nXyb8BfkKe0mNg#$^+UtM* zSNNYRkW6P;1+G9S=^eueY{Q9p`g>H}7)j?xRa#C8l8q)-&VQM+h>qd5kP@eIZDiS^ zpxK4UFQIC<|NWU9K2|v^{}?D)b^f-v-rSqE(RO<{HGsqA_oJ9`2Qd+ka#t;;uW-3} zbUIbwl69B*2Q7M#{m?P1n)CIeh$;G9{8Kvbx7*Z1S$s1L_cJ?)h-Q_Ov(D;}h@`x< zBiDnyqQWEF+v(~L#>%H)Q=Pm0Su_i|kd^jG9C{{|hBUuMrXy9i?KB|}&I}c%gM)+n zRQn)r4*_96pk~ihsT;S%0J%92a)3dEgMbnZ7qKN@s*=eoQlK&i2w_ltWDC9IOG3Kz z5#Jn{lg&L<6_quo#wQ{tXT({LN?!|*MS2dlrw*o{k|DG1_CD!048M2y0%0L&3bVg>%EmELXg`~ve@Y74br z*EjJC#U(cEec$ENZn>d<75ujUTK3{8tJM^FcY@`^1NOj;9f9ia%G=&VC;Kr6xM1+-x+|p6{iMVYi9sztOT}kH3i)r2G4_Gxy`) z6ios7-A`A$J|M*Z@1NlEG2Djn(w|5sqnesDVwJ7V_;Q&4c#B>5F+N^jN^10al^drH zRMa)1ENH-nQR6+5r?Js1i{eWtLow;0raA4OrX;ezKay%noS)k7yMO;`|7sZ4G{}!j zO{Mo0XGNDo+5alNypS0mZ)BimwmG^m*EWa`bEAH^XkO=cywFEMc;|i7$YDK);22}o zPWkR=_^}y2#~Yu&H)q$I>e8lskuf9xl!;;0@Z|OzqD#1$7<+fjNkesM9sa-9qmt({ z2FgXS`1i=oO-bJmv1vBzF_#>}!Mz%@Sbj1?q6!Y5BE^x5-S$y0dMySeG^chzl+RLN zx;J+9x)i7kUPxU-xpj-gRg!SiQLmVnWTEP|NEyT1*@wsu0V*se*Oc{dlH2 z26Hb`cZNZ5CC@Q<&RcK8SrGQ3rj-__sRFPHERT(_VytVTA$@qVEybVjuATgMcb)8O znGK)0sj!dxyW1xlmnKIs#F}KtZk)AYil9NZF%Synb9T#k+6qkf4Vt~t;TZLwKRA?qVoDHd9G8VH_ZNbDN^kAXj0@v z4@m=udYQP9*{ph99*-`>(QnkMORAnhnW^QF?MDQF75X-B1Io)gy{wJbx_sj4<@Ho@ z)v2-npOZA*QyYGANlY0s3DIm-Oj<557V17IF%mGwhb0Kf7lT>~Fn3{>kmZhNC$R%2 z{U)z~(&<$yHV~P9So0uCK0d7g z6$RMSqTOqdt7yR+u2P&2>{(Xh{ryp&g+0psT3eoL{hwh2Uzwk0KD`#k4GEN{^S6jv z!)w4V-P??`=I8n?rsShRX^*&7{23yYdVHQIw9#c&2S{@u!vrS$(2qjlFr0|B6iP<2 znVGtypw}Oq4oQQ~HqKXBr3#Emok9-6w~6c4CSOR}k3L&5&jH#vkOI@+k9qRPakRw@ z?da~1Po?#W%?){L^bF(dUJ5)<3Dmb=DwW4ht%;rkf9T81IXRZn%F4t*mAT}N{^F?c zM-rQ}&{nCB&v6H5e$~jOhkeNh+vc?@(V~V0h22jZ#)6u=?Gw4(A78CjR?_TIcM5Pf zYzAfEMk&P&ZS?nkS%bA#70Tui6wuAb-DEeISm-Z`{}KA~=Ka`qF3NzsZsLu-YkH|= zC5r_P1&MU_tHj^Xhy_f^VtM?6x;l+eZ`|T;6}H$QH1Ze_Orb+=C=|g}mbN_I$3-y|X?L-sqQ-foOPL;MaYG zQ_PYF83u!DJO9|EExtF{6D-jA^xYX*-XTZO2M8C3H(T`wn|(s7r8~HqyU2g0x7VA4 zZz_*kFzr9678d=8b`c!uSjE@gZXRfU$ACHc`!@r)nE>>D&myy^s~GhHT~W4#YgyLe z6Lxlc+Q5G6x9X&cgoj>EkAO0TE>^sHc4`ILIlICUZ zr?)%ayvs9dZ|SG-Pid+jSZmSggB`>`wo!@_V?Za3h9GBzcE%7k-s%RU>_v;bsNk=T z4!=AEP=OPAYKwdy5>*=){C0*mD1(`;>Ulv%P0h4r*_ATH^6b%v(y1_{?hCYrqfqjn zj70e}d+clh=CBGn(j-AiUk8~NU|B*QIyfX7kVRcUA3C~);)yaS&WL>-JsW%<_uNzD zyWtV{X9<$WL362Nbw3sdKh^nyS-WxKBfij?N4Ra%uOsBU&l2utpYk?ttH$@PJvfR( zang{A*8(?4AJtAkCV=liH}$Z>uJtPnX8(YYsOv!~6EA=o1+f=RUKuqkU@h4A+QCT5 z^*9-L9Wnj*G#5TBdD2Fis!I|uBU$2$F-nVn; zY|CDQT7aft>;;<>?lUYokxqpGm7<7@;;BuV?W9Syx!s~F_+7NYkc>3P4GujlZ>?t- zD{5Vo6{cV<5c?ohWd(ozL5ZO|HGc+a-tH8dv@u`r!A63!I}Oe6luqxH1fR}=59U52 z7cWB&IH1SNG#(wg%$?la@$$=Cqkz%Fc-mNfHs@x!m)rM)lj;5mUpg;ZK}{}I^;pbQ z?yxRqZCm86H!-C7ipkshj?Ha9TM=nopLVtH$NK_iT1I&+UG*@;_HdbH0ahHSPI|Yq z>NKn+q#T74ZuO9tkN@M3KZ^C?wkQsBY{Id7Il7&C*&}A%>nFhL>~Ti~bZO|HEu=`0 zxsv~8dm0%(w9q#E!azO008~+l>C0;#vq|(%HfSgmBuCuvYv(9sp>-KYqa@~%V`qZS0pS%8iP)M{aM>0KCO#al4`|eVY zbiTdus}KDq>I~1G*hq2VjUdyIVr)o^K#3ip?_K7%Dzu0zqJ3=ziJ3+ho))hD)zzFe zJZR@f{6KQa+|tY6c8LSfKEWqTu)Ao!6?gjkZ{gz1U$60R#TqC!7ue z*x1+~t*55!8){64h^P!dKjD(+B4K+hS>mscgyHIZR%Pc2v|qRR>djV+$LsEwV+C8; z{whoTd~dI^_Zj>>OX$3XXeo>utKwSidDuzA!~$*l5LbRzz$0*t$`^*qkD}vZVrtEP zK1mT|hKUho&?L!ER0NjYEG^cVVu|Up*^0c6qYCiv%#D+6QoljLF#dMA^HLAj=C51? zjeF%Ib+)vbkkF{`G{v6TNb9R+=#mTlPW?Fz<2I=a7~#?V`AxkM!Sk#C&fl ze*%-GEcZOFt@fEcwB~v#$@2@LCnBq-TM5$3Yv1OIob6f@namH~d}yZa*WFt5WQE@B zs4BKqPcArEA+p!=H<9MmhzHed%sx|w_N_k(?3DbP?;}Is z=G+2&O4h7v#^)w;u8yt!;J251WO`)B-*p%&om=Xwzslm$!`{f*sB zg7jAyLyF%{;>O^#N|k6KxAwN;=jqQSGH_Al(A5W^F6R0;YgByUIeK~InXaHOCW1$_iW{D?ZVn~UFy$P z%R>y!##KWqUN1unL~~MnxsB_%3sc?WK-UBRg*~fE0$9f;)iigCdGLy-o8Ffr!Q=L@ z;>zV*Y@;$+PHO60A~82_dFFSt}?9^6@F8qA!WefyO~wM|+lJH#jtA3kgv z+|?akwgO_QllPf#HS2hBG=DIqDkaS|y>r9N^)h7{VAW6nzr{C5-%aw7d(7E!wzRp7 z^mfgJoQdVvBbcaf(YPA=a~8?jI6I095Z+d;hKE)Tv=C$!I&rr5KC!;zzeFa}D-m%J zu^$>WXR=nc#Hos2M9}Z6IX(KaiBuPjMu_DaaBX1JC^1UW;J@Vct(|8}RYFf62_7+H z{g7jydj&_tVKfdXSR&7K*n;r`z{8TAxsy{Zm(ptz?A?Uj#8{YfBZXOAV~%~p0x15( z(vqE#!L}crThJD1Sk0MW&lpdeK0-w1?=PNnd|bR~N0El)Lv{l}7|3~3q}o`IA)l~K zp%J8@lSHJ^*9RF0`sRu!gVij{u{4SU}A=gFiVTcqyoc#r{!Tmm(M#hAh|538Bv`$g>X zr_P!m0XK>jAo^cBaqkp0*J%v-dJTh`arqB0*pbJZfPxu4!*|oI8SLU zRmoqWRFUfyZWDKuFbd_+e&XnK?*-vuEypl>xk8~jL;OI1k6qv^RLrkr{!UUV%Rw}Van5VdzfrHiLzvk4 zkYvpH-B?L3)JJ%f{pJbPkA+4VNGI&%r`1i*y)NdGx|>^T8>YW@N$h6iAaaVih07wg zyQ7mKBoMk6EBE9k`3hbEg4&qBBrDX^+UH)@V7^`7MiOuojE<^2#YP7JH;@y6s1d9~ z(sUAx@tt-JtYp_1mZ%hs$pdx`fY=2HeDlDYOck(21QYSjj-{-eoGUZ{aWTW8FM7jktH_e!4l9i;2t z%wvxPf4lBS^ghN)7sEKt)fNr+xVHPiSaa#@9P<1d0QOx!0eg_}Ic^B_IFY_shqnSo zYk10I@~3YP*>v9+NKFktIdOD~a`a{=ax#1vD@UsqplRbb*p-M^*3u1gx5cL$)qjG0fE4@p@t6ndv$d8XrA8j6V8gNFVqfv z%RVtD9ioKQ$etTjD$&ynRw9KPU@h32DU=A*QNMf3Wj=Zbln*a#4@;Snd$)Q~md7t_ zKThMWY)Jro8n-5>zZ|6c66|Z(=(Q zZ`_2dOWKBmamauD{!OR=7<79+PXp4(mVTE}Wkyj6FJnH=*7LYB#L73Lz->~JZj(z5 zvrzE^rv3=a$z1M=9d0nMYt~6D2cZ-gts?tOHWgEOdpzF0_7i)1BUiU>vg+Yq zX|zW@5*=S!9*jfXzYRoN0Mz)VTNz}u1v;L$X!Rc=Kb2yQemxq&OkjLxMnXwB4cxad z-{3e$1T!yT0?j=EsOGY9=8-q?vPLJetxeRx*|`p^o`4NH_Y{$mk}4DaG5|{SV6_@T zQa%gu@JNB4Y4VD>c4__gzdiE+YTvAJMWopJ_W6Muqu1I#)Kg~`NcO%?(b!Iu%Fk>2;I5YMr9 zU;QEQ2S8c#_t^$Q!u#(zaQ{7LaDPD{!VOECRSG|ynVN*OX_{Cze{8kvvb&y}wmG7& zY3?<3)yE|H_koV+s0X{N74lHOLqY^A>Eec`4i%>s-1$)aPabPAHJmiqm(`(Vj4aS( zh+5LBgGj-|!Y>TI;0iP?k}84qGR0(3tA8|Ro*c!oI&Lt6%~P0i^d!(68k`NDeaX*5 zPc9Em>5Qq`GSVdf8&zCEU>YoM^heH~OO8<#27UKd+v?;wz%_}eN{))TKu(f&y8Sl9073l&97IhFIRELU`*{%HawtKK z7Lu4f#K<&NAnLD~n_vREE)}4}@)s9RH2g^W=-N9Au=fDq7HOvT63p!V>wy0x=-9Ir zV0qJCxf`}rsMzQ`)Exs>-h;aT6A(bB8gZmUV%qwZWtu6qGm{a-p7R$ar+5-{Set6Z z4{!0*>`vpb70&|xwSy-U@~ltIV_0rpHML|p>Twc0wtUc}%!%fwqIE1Wvn$XlvwiBh ztSrCq@v$D2*K%c9RrRtQo#*+@(ed23Mhbv8WAAJD;@0Coi1RE8h}Tg{YUCqTCv})l zd7`3zSWZ)^Sdzz?Payb=PWBZe+M*J=WmEUS6VZO%HkRt~$CSA#yc>F${vT2_rcIHX7nOLuAtPLh?h)6n`k=!Wyq&fNqOJzkyhkkr4v`g z9u$p_gC7R|JdmAKC`A;;J5qEweEizPLel?ddLmm!HEZHaP))%(w9hWCNI$b;HLyZ+ zYLfPRWBxUZ@(^KHKzGGmmsd}}HOl+3HgoR`-Rk7sYKVy z|4;;2gVN%ECCW@sO=UiBA-eR%c;GMDHVLF1=;#G6Z-KgavC9}2LqlV7sslh_YYRss zOvytaNAJms#?Eu3>KCv^wqHe%3JSX23puo^ggc6q^HFU6@D2_pV$A(KK>=QwSl4gQ zuE%1=Cr??(UsL6j?-__9uVW>BwP%}c7Tx`llC-g|tsF1rrEKQ7dcnslAYy~CS-cvj z!kcD}Ve@~3G_w$~UpKJ)`_l&F7-#rge6{kVB<7t$2JnvA)-pvmD0u#X@h1|?ik-J} z>GW%pZP5wcQXQdww3rnbmAQ~ajC1VtHXog2Nw(=Sgy!%BwvIf$5pI$x8*F82lJOIb zX&nh0Wt%S|N{kW>keWOaCQ?~-7>f>eSis7s4v^{umt<~H3&c~GNjo1Or7!6AXXCzI z@!A--poOr%y5<#Zt!HNy^q(lT8$W905{$|rm=orA@f_g)esyMgJYGI|n@Ov~-8{7# zUe-8)hu12YT+KVQyV^IVaFk7+FzJMFuA8!l-Yx34=}OamT0^ft zn=JN60p(nK<=1MWnhKQGr_FU#xl{iCr0!64tey%|x|xe?N5$E)yn6P;=xSNyUT6_? zeE~p9V+fom_-HBr3KyH25B^E$f8|H*K3>Go?_~!C+eByD<$taY7MkZSM(n46@|o#h zGxR^JBJskB;|UVO*E9C=O)_~GQG`s*^ifPNb70^vr#C4E@Fi}(9{rOA8fLp&Zhe zpt-Z@aVE5u$5G<*hnJ(;QI)IT-(9us`#Jra@%CIvI70W_vN<-RDKLcf?PTNB7j`U| zFc-umRu{E7Kb4#29MvYM)1Lgs87E7z&H7&7{g|Xbtro|uI?6@<`T%0eb~+O-`9!dP z$M|1)slBsaOc^Ajnvt=bcd~<@+=g2RyUco2ZYIH&>%)ji+%6i;aD~9z|J4GJwV#lu z9H8i+0+ysJBAJp0q6|0f8wX8BIokmTC@ODJE&Z3K(^>}s&^tL8Z;a$Y&ud9-?attv zsQ_#ooX$3k_Y*t|Lk_5+*hS%F!xy!e!`f2RANn-(@}TwJeB9|Ta6+WO&Od55T3Cpz zw#X)MUSC#Fq_V7N@nPoBrlMz#vlyJ*Nfr(rq&mLWjIpVEY)^3C2i$wUcir)#4>|e!Vcxo`aG{pCOHHKS)};h_!m7PXLP2Qq zic17%KlXHJu)`!E7#&o5!ko)*@%4wT9(}p-?Em+1mSbEMHHP9cK0FWkNO~x@919zr zge>6Q>#}8(Kb#f7H$Z_U>jj_4?A!^*#m5?QM=f2_`8TEE7sJv47g&3k`txFV7J;h@J=JzOz4&68a0>lrKexk?qFvGEz z^yiWtNC)yjTyJSkP?30^nG@AFnR(^#49wxkYiF2v7c)A!XYiDSASx{J@eMuf9vgdD)+6>Ayn?`r@ z#E#gP+jc`aem*IWB`3@C?(>{o)KD3qUmR;=XGamF!tUs9UmFkFdJ5A#;kf4-9lD9d z2z^un+J=Zu<>iWi zf(HTgyv+};C;6(KB5I~S*<*4niFDax@hZh{K)$%$$y$%(vhM`oGBPMra|(R9fd_6L zC`|#Z4Wgf8d^vGO6=m<0lwH#JqMP_CYGe zMiy|B!A#aZe3Gyzew~S#Ut;Y;KSp zyM^eTetSx^;+}L*sp0NuCi!0LQ8pe;Z^5Nkwn#}CGTFCQ8D+c7Xkd$&_%sAUVs@H| z4>EPM^xNC=Wy_FSJm~TM-l8#})Wa<-uxWJK7IZ1#Iy_+NRA5HlDRrB8OF4M+eA?6` z?t?VHDobY3=gXWbQ;)!JDI?pFo=RHu@y1i(d&C+bWar3E4-alMjEVKhHz80L7v{=2 zw3^e5N_@~^!Sk-!#O~+q#wy{&$1f*{uWL6eLRhHpjvh6TP6|5g{jFWe@w(6m{rF(` z0i7jDnr$)yW<6NhO|u7?cwp=pI@X~>)pkSIlz7xyK9H4&!-W(t|Ma9JcwFv4t z0{L|gf|&*C%ph&|_!bV>KVU1dz4O7HUVJ7Qc3RhZH(*kGJZr;Ge9Fqg0{Fr39csX$ z_5gztqt-Cs*#Zc9u+;?q{7=4<<=zMM*)~W}<7KEPPLU`!k|`{zhjf7_Y~J`&z1}V= zmjew)NRkZ#e5%}{L^I23&Rcx{O0<| zTV+nL`LN3w!$^iQ^4CWncKy0X`cwpoKO(ONBe3kThi>enOlX+Us8Mc;HW6B0=4S^E z3gj8f6&Z*LlC%V}J4JKjuML@a9O+?5cpo+dEmsSFt(^6#0nYKivlr0)!+4@kOG0e( z1?ZL5VlT=TX5$oI$oEJ}KM3JY%T$U|j5rSN#r?}s&X^gxTBR#3BSp*@k5f0ojN5uj zjm3fSL5wWH*TIt(zG=+!w+oWq&7Xc$&|>$vDjfa(7O*^JC^OH0c4V6&&V zRVYYTo0y*uo3}Buu#j&-G&z~RGc@EF6}i-RYdym)J)byoE_ETZmq9Zq&KktxY@zvW z_hl40swx8KZGiuSgnJEW!8g^n7+$|A!_!EjV-+^TuzR?@l-|`JDln#sTwoB(Gp4>^Qljvzt^S&f ztB4pY&`MCjOTNzodno`PY_km{|4@?U#>t+w*dQxH zk@0%Sbc>5OxtrB^66@{J*xTKQkG9~yAvg**#&!8$4XL$MkQV3I68ab-8mrD7KMeh_ zw+k}`e}7`c@eo-=b}e3FjUvu}r}=;eT#!RS^(yu>Z#0_LG)+9QL#Cu$^0K$3+skfH zQcZSLgggBTRFx*PQVj?-*yBzdr3GbP2}e(?J@Ulrt0jf`qRcCi85`mY+!Z&rB)C*7 znoeVhM@B|+y?WK~v!QRDnN3(sL?o(j9fT^ipc=5|IVCPebvwdSAq%`l76q{T0?If) z6PBL6>UP6gu2wRNJs}Lu-)u7iX<{48?tJ5SkU=Ov(%Rzx+kYkg3kO7Y4SMz8zlZ(! z!C&KcpsVKX4MMRXFwAr2e%8I-_525~KRB$J&kW4W zbzSG2efHTq`^r;9MC4W774Boj1fI%&SjC=a4w&?)B;~z50-j1K72Tkt(15$=azkzn z$B8$F%Mph|$`qi}mYR|Av`&cF`UjR}%BeZ%=Abb;%-hxGCMu(7x&ebwwDI(OEohz6x{*SkEk zeyf&xA|I~j=2f14=FKfQF}U1rNLNB`-ZeLaDpH%gc zm0oS{TqzBY4pWC0W_rsQ8#DOW8~xZdQ1psVu&dWjbRN}4r^9r)JEpXryN~xKtqR|P zK5U+uvWG_vMt1zs0hlGd>YoJc76Twv>>pWKa_>Y}B#mODqseB$s35o;uV!(3?B^1?@4T4Imm&DRsZ zO~v+FNFixvWo1Q+vXqoW=Id4jJ!AfDd1 zf?C9rQn&$9$btf%tJ5~gpuj+U_0Gl8A*E&`zAvB?;EkSwUQ-3K-mw!mF)0h0 z*qxiu+0QsaI5uKad-V{1OuAVPp)*z=`tn^UI5Himxdp`LiAd({3XRj}4<@?1Ijy$uQGQ*!UNa5mmjpOWCMJ54<8?C}Yl+cDo5&6ivK zW!PZw;>C+15KSZf{TM7!reVJI^i|TQ`C<$V2msl{Ky_+L~3mB;e3s%LloDY+P zI>KlyI~@omT(uZ3-=3fAdLKT@eTwnOZk8(*P}PC~jAmoZWLu};7@&j-C*BAW3~0mJ zynB(cxP#e~}DeRK3(@RvbJW>^erbaa@Wj+2liJ7aEoxaHp;srixV z;q>bI?w&_;Txe?J*4A<(F5T^lX@}sjgOTARyK8^AE2bIIi+un{@9^DOJ}j-M2!@6N zEMFiurPtLZ-K2VmcQ!IRs|1#GFbWQU+-+a7=jek363nOW?!xe)JGr>r2gyG-XBU^j z$;sz%C+J4DZDy$Z4k?K$!rEYEV-tqe`^4Nl3x4w;Ov}+@OZQ5mJo$x%1AENWrazxG z20)|^BjePt2XTz;Dg-TBEE#=ENGH(^Mk$qGj0AZn&?HN|k?+YxNWkLk@bHlM1`aUt z$uM|ggJlAUC=7UF2|lRjY4D4S_auvZptp?5duBg4Hep~BF7Jmu06k=I=?l>E=@m{* zOOt`aH0O%yt(6t$K-4E9adC0bp5U$QMyRQ)x5EAaxok*!o96joSD^Qaw70XXD@>fp zvqqwW&w~fDpnqq14)PQnhv&S8^?KHmrSgDV1$|<`_$c)OdMmJiWkLJ``e?Zq4ZnY@ zg8b6Z=qM|!eZ1@G2oQi_;Hh3^RNwZhI677xDIvpXm{XQW$$}%ey$~v`xgFdex#pbk zAV)6hTVtcIH;_>eMdOlrYGHIAG%T=@b~gw)a(NGu0t0<%U@SU4q9ekAy;t-5tNYq` zMYpZU5t>KV%c7*DK~{4B=Lb%vw(M!O;=3y+gD%t#{7_v?RQrq#y>EW*iH*Po@tns}SNl?xDiTRjk45=i$!p z##M#+=a((yLP|TxoxZ-!5mu+ccsMbbo<$=(7>LhHsGDo%oSp3^cfKHgqN=Lu3l$BB zu)fI3&VKe>NhvcueW}#Td@-?>Y))P|RwGXQ)%$KK`xaq`>pIrKi^J64>W0rd-+u|W z`#^&_%;!VSwY2&_0dZGvgJkB?s4=eog-KrL3qwmUQ*nu)V~Qjc9Jm-DrWhX=XS98dghcY;p;KvyG_kW* zy{9lNFBnEl)`;ESwpHJtPb4aM*%CPL7W%;h)6?D4RgOT~ZC!SF{opR4Pt!p=~DjF^x(lDCr~x*G-GHD5uPJoG=6C{0&Q%`xHQD~rHJrD+v#VfrYz8$-xmax z{WP=NpqvoPDq3$|W7ZJ5^K9ByVy6+=DVP{-j z-eaQ4B`5bz8R}kd z>y_a?S8Tf6EGnT>J2yK(U^Lk4EVrrdJ+@j;E6Ek@r+sY;x0>kn4f>0la{vVyMgv*ojCj9 zbYH4}&0gk`)__XiL8r=I18s*0-FCHB^6=gONO<7PU+O*iDHEVo<-h{@Lu9Fg^e@3Xbm*3vq{%76^tMS;SX2v0@#Zg{9&BBp}3Y3=R!tfFN5z^*YB{T))%x zfin%~+e&MC#OJAEB*hJ2;Q>14+1fY3Ceaij1MZS=e2L_ZaFkV4lz_D(Xop+a*kn{! z>l|4SW6fjS(t#PK!=s~tnVI~&oSbm9dxm;~cSK4Gui~jE@WqU>>I-={OSWBVil??5 z4rS!za7B;eS1-NOUq-dGzG!am=m<}j!l-K`9wvH{jG)KUr5-*J8vxb!ZLm z6q&2k9EODn(hQ;*FTT#qI8-@I2FQJC4|wMHxt|Q)(@<_-%Nu-yn!D^tL~K){r!#Y& zzL9Lo_pL^`zU$~(Skk8El#$uid`s~_wHVqS?++?A!=9U8`h($m_XdSCQNgfso-l2B zVS2_#mBSWNq5SE>2yYYpsNR62o5q{#cb0=4)r4$I_9#+9buYbNsyOC~aP3{3qn0e(GR<)Ps(yB-f3}fOwaT$bvqS{ra(%-5@t$ZyO>PkM8}$0Cde=X+zff$Y zTX%D@y<)u?D)yIpjCji2CrMIc=U+q5j=LGrp{qAIlF%NxPEJntBkG#-4prcg_v6P8srMka-Fwkzf3!X_`0pP* zw3PvmM61q$mKwDVa?h`htCH=`3~F;ZlqvY5(X+!pe=xwPkWEl98YXx^OqY9WyjbQ) za7k5u?`elvG03Gqy%6BJ+?H4Vc zV5a&GVhfC7t3rLraU2>P%=G9{EL7UnGAQoO4ZFA2QCXkfengup7pu5P;cbB-670)& zB1sRjDX%1igxE#tq?HUitO>6WvLYA&zKV%U31vNb)!DjAfRIV|W)43mBO`m^y6MlD z$gi)j4+@jd0C0s5y5j=F{kb2xle2R;5HGF#Q}x-|*~1`|7in>s3pbw$m~ZQ?TUznQ z_dr*0U|`_!)2BEfLIe#{-c0Xq+g_Wl?eWaPNxfq#X?YGuN#H`Rv>DbtMTtdD&sNBjg*g$VCDgZDzj zLObWO>!?tPZ&j=W6sBgas4eRjZyz7&m0nGZj|_!0lh>jeGHdm=hEl?HWz8Gd zi2}Hz^~JY-b@B=wBn%H8*FWw0REXK%kC>nEKiSRe^ZZ=sd6d`9%OSFJki?Jc7pJDW z#(%K#xo=>%-S`)uNA`A={PtVTlWEz1KDNgG6Ee+Ap?mOf2TfXVQY1-EN~LM=H0IZC z%%Y}EhId`$>PJi#J6jop#+eWoFGmxa53vWCB8O@(76Qd8`so^u%#^N%Do#`LsJj$+ z^D~`C%Y42_P9ISSvNXq8Tm-LP`vCSZMXr6cXGf4jDp$|+!VRw+ zEn3kV9^r#Hq`uEDyG~HorCDHdu+rmsb&z5Xw|eys8G3YrM_CJ}dy5WohRl*&JUp3| zm2nVWY-_e2ma&+kZve_S5jUkl*IW=c`wou}QlYC=Kj10q6v?oA=4n3d4JlV(Xei`| zi@tX4V09%At38S6jfn@;^r38Q%PB%r!ZIxCQ@jaIB-2wGCP`ZC}KOVM4^{UcK z=AIzGEJlXe@o`GnW+2gQHH+EN*GJ?i@kK;-bnDID`?~9w-n9~-H53WSrpwMOx1@uE zLwjc@BdEgv61#T~KWiv(3_(zj!eSzcQnRL~+*&%h04pURXhNa6wz&@Q0+<(sLde`X zNg2ft7VGnejq_>77T_%W!m(hGPBklml9y_fbulRCqoshvL-NsC03D!Ih4vl%#Q;Wt z?1lJ$0p0$pIyxNOP}hZc5+`*mcYV4>1exi+jCO&TH%LrVBt}ZDUZY6o?Huk5M3=7m zU}o>>J-9%-)-Da6$Tbp{rw(RpQVf zaa%A$tnZ95(}4Zx$?e2A-GcvIvT(dR??-`~}L@x0%8F4d2(qN$swJsX%)*^uF1 zJvmvlG}URP!E~aSqSW@QKV&*C?0>lc7+st;X49L%`E1H6kqF`m z)pY4_?^5kV?)ts>#77AUF_X=cy2A{=ZFP#Tf^MIMr#N)(ovZBlm?bQa9ow%SOk~Y-Cw=M9*Bd>!J&2C$IHtUqp(J#IF)VP}=}a z(7PIJDs920V1d$UlhQ{)euR;=FP*sNh3Imc|FvO*t5qp{M+uA9rAZ!sia#p9hHy>} ze(ZE;Y-|i7m<*ub4>J~h2$_h|t|u(=5xj}v$A%M6__H_0Oeq* zs1W48RcD|~PyEN^emGn;wZ+QKy_M<=!Dww~M~+$ZhN3V=SQ=xCjMJBVjXbfNj8ImA zwF`j@#(!RTPZtwI>%YuaQ6itU3==_Shgcv+@pqoTRa_Db7V(Sub2D$Fb-(O0jzdCT z7&Crxt_e13eO^XOW z)sAmO;_W_2Z>mQUhyS9cbOe^7wI*iR5nk*T7DlG7Ofm*rj#42k*p9?o)Qyd$YLH zj_k-WeP>X)U?;EaSX5+o{?mAV=yoP&GkX{q#eu!GGlk zU^n;Ch;6GR1<9o>w&%Bgj*)`gG>=bAj1pB3Af!P9rvRr;|D+z8VJ~L!CC`7YN~a+L z)|xL~eBGpU5Ted~aT5kr+dx?ZP_Nj)aI^4_UYY3fAS){Xa-b>$@?aLO$BX_DB9_>L zLqZ5aE!UUEPChlQE{X67-c`#IGracewrg&+24EGeBzY!GOhv`1oE6twOka=th9l~a z5nuZbSs*8GOmZ^qe*^?)U4~bTu`FzCq*f2^OGwa;(&~`xUaY;fYkPYiEDwNEimpY* z#^j)I0f}0`H1$fA-cEj9x}kVtU!^yA^U?Gl=nL`6mI#xU}y zkJc_L;On{!nLPMxSn{89U@^-(3@rtF|6t9@r|uaxx9j(~wTgWuJr{L7IXIIg*~_t0 zI)mD}nAvc7Jo%VaQAEv+j@pVM5C~FY+y?*SyRkwk{wVi{kB%2f1g4OY!nHmje*6yR zuZIVZgQ?)fB&ZyuwIs4%DGHEu;YO$P>NlDf3XRO-zZZwgUb+8mjQRXz*m-v$?H{AX zYJxW(qQH=g0bo_G$Lm%0f9blqoJ7`Kwh$4ypYVJMYt<;R6o#=m4k zShD8NWTnupn_O?ghXCO}?#I8CW5FMvE#dNY%)sMYRMc%~qHvr8C_V`8U~8M3CQeRK z0|P2ioNoXO4yYq{^o4;$NbD2g$V}BR(W-STj!H;S(AA}a)(F%c;jyu7a*v0TF4_*(q>#RZt$c#UfzhYQ-mGo8TSkw?E8tlVTlN)SLOP)we{ zFLvDlGv`I{5Pvmtg*FZYUbc3vP~48R5FHdEV5;F(XCQG(f2zwRPtq1j*YFl8eDGh! z0}qjAnNRT0-!}0U-4~7Q*Zr??us$RQ>$m=P&~v*3za@3#X=qJC^`an!9uXQAOj3d< za|bs4+XtOY`DzRyq)97K*o^l#v?0?oM4y#TzRfOtGOTjbE4GWpU5r*Z_Yds0iHQ!FvRInCyXT>0U=T7s zH$D9eRC{8(%?_RjW9ae3CQ8cY?CiNUQPTs+7uU1GhipH|L!)g`fWWQ1eFoP82-pso zAdEfa7S@u=gU&xXIp}{i$^?NB{kLem4onmo0Jqr^oqW~TuYYcCUg^kO3th&QnFA^! z@V1~hTFZRDbGEJ=Ep;ESqd78Skx?-a@0(k8I7SM<9eWRi@NvNLzSLNO=N zddEn^45wo0_>B#xiLEJ1%}O^zueF(p)9t!ODa9Ut)D`DZtYDeZ2vwzoKyqO(-3ptW zG7={UAeXco*q5)CSF%$Jm*{>csb20f@0g{BM<#)vU^<+xPXdSzTC0RTy&LhA>7M^% zYouL0aGwvLz&Kn+Ho{tcYVou1T%fWY4a(0f1CmfWBO~z_&Gv8|;F*v(vSLVLAO{J9Y zXNA%rwv=__={nne=!yT8#|4(8Y+`A}TbqqENZS9U#>l%uVrsDFCAdA4H*ve@G!gLm z4@oJvg4Iv*lSL%u`7mK4h3pn;pwvgf7?!{ApB#2PdM;c)sm;EQj-O95>|bTn_bZf5 zH9JV9f9@QT@#(Z&CxAHvNbsjUcIq4^z_jWDh+4jq{^^0c`&S66EmPX$B3y}z@jDhYm1UbuQfC@wERBbg>4M}7l5WaXai9EFoFA*jg!cX z#huO(z%MZ7F+LiJP62N)e`(2tS-$#T_NScPGgesse7e4f;f*7=zisGPO_#j)PMB-L zI*@6=vKgUPi1c@CLmcpf?)#RE=Su1G>l0&R0W){>7I@+D?e3PH69H(Do}LO}Hl*wo z^Y66-P$-Rv)8i85aI>;X=Xh-00E$Q`2yHyJpAi zgpCW1i}2`Z76=1L2X_Co*`AG_`939M>i_KHal0P%$0CoI@@h+ke5Nc=A4&VNm^6Es z?jm+4;&hp}c{G1N5!F5X>I*?Z7~duDT(sPu){EhE@xyCbzlO*R&;FZ|K6+etQ7^z) zT5#H_>9(`i)?85G6+|~5%wUO9^Sr$^H#4Q6WRSe6_fmu*bE+3Mif+dHL`6xGvZJiD z^KpKc?ddx!w=o`cVHP_gdWQ~e>y9)O9hLB=Z7ZlpJ<8W^F9euYBceX^t0J!{lo z()&_~DJ_jz%f{{Rr*Mm>Y406Xp3vTEnCpY=$E8M})*rj6{3cE_HiAZ&6o>%OqT;(h z&Kp}LI@PSPN^FzrkEFVL*F=;vvghs%96aGCvNPZWK%C@U#?H+h4NDCS?8Ew!AX=ur z0K(xf?GhME&g>)!8(MoLCe$d4^P@+a0$zB^_V->Y1$>Ct#+J#sr(vuz zte}qj3`(&$(#JwZ^`re#rZFGMY`kfM-IPsDmn~F?EnnZi3)3s5<>kIsccAqR&P*?! zrkN@1{?~G%Q#IHU&LnplGNou5gL%YOuhcX0S3;xo?Cj^Wzu;m(dW%@+^7!!hkZ)x# z?AoiVv=DQ>zTNy4DOKy7mwZhAXuyHuzl!p<_PhGW{?v-3j)Qq# zoJt}kbT*mR;ltc4U7y|Wl-KV(M8)gzza!V#m~Ct=7`&YD+OFOuuf4}nwi4reYNxCm zM=GrVcqRX6vk%wF!R`POaoNQ`6oh;7lewZZ>N z0zRc&i8Y+g>?|AC+Yhm6pEf8%4SvwPZ40hc2(@^}5!7!9{}k-=?8CUgX$`2D`%$(E zyEurCiT|E;B~VGUmFMdU5;agPA(rKRD!j#^O2;SGpc}xkw0N@R6BL??WYUb#sx^@x zKO|@b{L1IMqtv%GqF5b6w92@=lV8JrbRotraFHBa$uwW;=ydkc`Xmbe6i#)Weiy)+ z^2rdnu1O-*D!Q|~Tbm?QK3jc6(W&wwCp;29*`kiqQVcj_FlE0dN&baO`0udY(Aiq@#{-eXbk zt+D4H;=K+Bo3D{=aQpR?H|jT7VAd_f@1^727Dxe?cRs3eLXBJy`|MB7@gc#-w*$QV=`0P_Y;N94)Q zTtf=5bb1c47pn7ebDc225;(H7-i2jo;&twMc777{Sip1%aHHT^BYJ-R@WGFF3E9Z* zi;2DXvlAOTTic%}1f zVXjHt&0vwwT2$B)zf9_CrYO-osHi#ak4Wex${nuRdAVO_8k~`s zX?s=bfG=q`(^zgMfJ%!0%yW1ldG~xy_r6GW$L$-9uL4>7#`fritgie0CLNmv%8Mn3 z*a?5HZ+eqgb zeJ?W45c#|_K`=Og&O7d6r-AN6%GF`k>!E9YX|gx{NMCPHS4Ff}F^EjQQFId;xu;Pt z_rLer3wTy|^86i}k~;UVWdcHd25+>_l_|GYC{(H~U-0g;RF zL9?WNa?rO>e}tvf;V(j!xllWrt;!Rubv8}#we{{Dk8OW7)0`aQ|L}*fG9-+5gSD6p z<92)EB>t3mH;9q&!V#{naOv9X{9#ulJu_EiUz|+k!l!hL7rJ&HTH65tpLTH?UzV-g zP5gdxQZ;24D<(k)kO||ori%m|WC1%~J09OFP&BU7KWjjvGJ{1SW_P!l=wMCR=R2(B zf#G3U09nk^!nt+J-x?6{lgX_4_1_I>eyph(D~8={{jh6(RbF0Rh&rT1sjrgKkCc&z zCj<&+DB(6eK`K92#2|AK0M|iNb8`i--GHVvIk(RB>q(3drE}RDBJi)b-|Vrmv9!Q< z#CjINyu(#ze3T|x!*Ptl#gl#_#}OlzXcIM{&$^#!13n79 zx0U0a&COv`GqdNw{(_VPkk-I&-%J680&bRKA`!ICpi>6MDA~}uP9g@dEW+>LC%6j* zG&e#oe>g@`5$KmUGDu;L=LYu?HuS=)0q-wn&SuVh{G~lDUJLtE|LtHXDbYLy$WUVG z$ef3s8|s-`>gbF+)Z|!Lt3aCeRU zL!GHfCxaAa4t93>w&jJ@fix3y^RDnamirg`4m0Z`c^Q~BNs=<{XZ>xo#T;>s7+zkU zs8y9@t&-2_Hd7A<=zdSRi>5c+6rVb@NXH@~PV}ZfEa9A0Q#UL!ZX?t`|9n%mVyee^ zOED@$+N_B(=c^6QP6f};(PlUvJVJNB^77Tu2QFg8?#*e1oO+7S)$1Y6 z(X>J17`o=WTod)k=Oh}?;^t%rI26vt4(g;3X6Z{u~?=K_F|z5Dz@ROOo_`; zbFWv_+T%!l;w&sG>H(AU2P1QjzGQK*y!*X1qM74{pmE2qH@rF@6F5ew>FSCu`Zz%^ z*g-cq{1`&|Q0AMr{?B%^zn;RGO7rirAG`dyjjb&D)`Cw z0Q;#B72p`oom)+32UY9et=QGSw&y%{aVcLqI0FPhE`k~BBL+IIKZO4Evk2Mu??oU* z+uXG7q3}O>Ux)V31V8ogGOMxFvAl|60!ovFOVo)EeGA>3f`ZYq^72koS6VU3 z7I>8|1u6}>2B5iT=&Iloj;Scnh}@_ZoB>N>q$ zo(-1U3>RoMvOTg6gQ>rtlen+jLTE%b zQcz8iJ5k2%zxl^*f5m!VTgXO9WAWRl{rBFI=<;TQVRm)>zmw(V>IrAT&7SUMWzN{$ zLtoB#eNCCV-e=O*U*S!d(vZ9{&K|o1cQy|Z6fD6tMUMnx;TZy|xPrnvczCFW*#LpV z@7uQb)zsce>@i&i-OsN?v-p-!i(~B$IL$t&lLE!>R!`BCqIXCEWz7E33G7g@%(F7X z_2UNgl~5z`p0Yoc!b7*gC#)R;)cmF;fIlj5+zkKsZP?cCJq1cauwVa|FpD?RL%VZ8 z|8XzXv<^1Eg~_0CuOI8y8(!i^-#e+GxRUR&lWP0>S9V+ggb!%njWKTeh}^w<*9ksu zK#Jq6No!`%w!15n{s)K>AoV~e{nMvUTKO6{pFdY#?so}})PY|dnnBL)vlEqqo|&q; zjM257hf&OdQXa;E+*OS3CA$=Q28NH&1ArVK_!059df<3Gzqo)Qu_#jdAlWED4;>za zX#lCWYm!*+qg>UJC7gGe=jekCZMJA_Z2~zZ6f>P_OlDXhUFh?v0u(@e5$0)@N)f!pMUzwZxMesTct6Jo1lG(Q^uIpX#ZfP0X6`k?-6#xDWJ3UXq z;JaX99U9TbG-nm&#gzrF*=O_Q)clg*W1q7Ez0tEBqOfJB{(^UMo2na}8;wk%15)

zoI{BdQ-8CvP?6l&s{+kgtrD}F7=6GUvyeX@ZZRv_Lr9|HTUum+=3hKv4KxYhLT2aZ zXMh#uU+8b!>7{H(pqnt;+f$) z1$SexIAq36s3cP7yfmu z@1H+%it0a1P@GLJ(6fmO!47UES@{r`tH&9YAKdQ3WtUmz*GU0hZN{%L4obl2TZqAh#XhCe}YJqBU_x-M@(PNnJ*#U zAY0dK{ZL_{B0Dql>5!?Ae|gt(1pTVpTU*;vnDs3F&)=-e{y)E=jN;;3{DRBh9?h2X z9Ay137a;8F5+T|5g%nMK43{`A4&8%^2p9(;TOl5d08?xbPlnUyg_4r0zCI-6g#7&c z4plL?DJZTzmP>%X)$iXCkc_x{WTI(!M}9K3zkfUYJ!BXsm!|TyVNB%H3CnmSv6NIjh5PxBzrB&$l@ub~%0eb;1cYVk;pTljW zr6w-%zNEL?CUUR#sQ&ke_uax|9;K4w%bQ$Wx)`q08BfIfa{F$q5-90;kTuijQ?IYS znGdB~3Mg#A6cEF@YOeLyL$-z%>zB5bX*SxG>IVv0qUd1<+qv&OSsVREl>=WY^l98% z1G#zY*~uu#Fzv1QC_bmRKEDlsLtyiKn5N+ewXTI8=I4qkbQOOcRk}Jmm!4fS4FHPE zwUUV!s;VSF0PB}U^IM?W`1|*7TwEL;)gJI(7$K3YtgO6)-&{Vm1#>%)4ZtS--s2%b z3Uzd7n~b-&#QQqhl)fx&gd_>9jZDGFd4#z!tM&Yzo6-fL9tXI3n?aBIx~4ufL`|WT z16GwVZVS-8JG#4>MMV=}7Nh47Xk@Lbej(Dk2VUWkmS)-^W@2_ta|WXv<%=m6l;^dV;ks11G1#)sBjQOnn4;b7tvX zDc?B@15A>QZuGffV5M1PN4mw}q5y-FA}gsup=NnNjP+N6Ax3PSiomVeBDvc$+b zEv+8bZp8P?)^PtbH%^St4a66dn({N`=?fAx!ij19``h%z#axqETF7rV8iT{jclIQ8 z-YY27(duea)M+I*4k_mGg>!fJ^#{(v2vG#!-D`O#-Z$yF<|jj3U9qz2i2)>61^L8v za(N}Cn0oIyWO`;gng&oOY3uO~I6*I-GQr`SXmEG)0+M4!HYi!btF-MH=9ix*4r zSt)-J2gS>+6za}cc*xwD8q>O*!#tOr%!UR-XXG>JNH0|t62JKBHm2_?kAb#*%}l}k z842GGIrfhX(w1chd4S8me*5EPO(X_oNc$ zh4@57I1CFLjf|iX2o|tKiz9m1^yI;I;_U1!Js{?>qev1!?`Uo+{y*?Y{XS{93U)?l z_&e6s#idi>ac&P(Uo0Qs!-METN=gbs{_PAXcy`O*ztHklg7*q|st7PJEVs~KFm%Bn zpajg()$ZLUWG@`!^dY~Aa}AzoVrnW6Gb7)}8K6-f*}=?qbsebG;E*Vfp@TYMW@A$z zej$|GEe=x%U&l5^N@Wg*Qm$@?wl(`=6DUnpfNE?H;$LiRtn!*Qkda@#de!}w5aTiA zHexi!nINb32Jk2cp0Dvn$D0!oeF*5+XkYcv!RPU&7=k2xR_P55XlyC(d_v zwD98M;yXiR>{Cz+5~lRARRoYn`hM999u-po`B3 zpYp#7DB%aWI=bj9*CUygu3x^ux>l?aCsa1QE%ht9G>`%AI+Txq0TN0lk(G?=C`a=2 zmVLULOw$W5qA|RuCi2$IrB=HMzwT~bs)e9rng!_mf8rpV#;UC+?%xv?rGf+;N?9ld zUneC4XA~MrPzb}WhaodGS9;_InoF4v>Aegt(Ska2it57A*)v7?*Nsj7wJ=Nf-Bp^Y z@QkRi?(f)ko#y+^EXk2qCsrr3oJhc8wSfIydi*jW8>x&)d*fre^jN`B0GE(9ali5! zF429DQ7#8P9x%(s<#@sTL6|s z)@)ZR40htbLoZqATN{H+;MdU5uC5R$>O&2_IefTHMke1C%Nr{i3#S&er#c>q0;&nT z+0UOpxA*mBRaR04w>AOf#GAu^x6FQC+5)~q&;O-1V3Pua9YYHK3VvA1_gGl`p9GV`#GaBlBB!jr?6;4$c6=#J zu|g+$ZEbBHsEN$X%wgf-fDTZ=TE+lqOaNMu4La0dWtsG{HcQ!Bv1r5t0Z)+I8;_U&UKzjg2^33 zX?ftt05cGF%>IcXGktGQ4+{^E(j`vbK6?4erRur7XLX)GEGG_UOBEkpVbD!=@_5hK zOiR}zAz33vn!b8OO?hLbG24MiKvei+2yhivv?OdFgi)F^D`v&k^9y+n*f1Ot-M|Kk z-#4Gs45yoo_Z>a;?u!>|P=CBtP)?~GWul_!!y)47ZD704$ICB7wrC)CBk-NK_rNBm zd2V_%=>oZVu2Yq56b!N52yL~`=B2c8@ElhT*g-X{QP_tNegTX4qJE8p9@f6c)RdHe z%t{~{wcLzbZ)s~wiFrL?R?;EgC%Z2gI;H?RZ9w~lZ$a6aLp^T$yT^m!SC%hKiMZt? zQjducX=bQc=|CO^O7FYEQ>wB|l^*ZyPYz)gQljT@MqK>$0FgAxMCMbip$+mGNM{1) zqxNFECd=8oR0mr+QIr^O_k5$U%k&M>dG0|-Rq&GtW|sg)WqP5`>A5+&@};zKTU%QV zFWP!$`PW_F6#bt`v5U;>IRC{467%nCz#|TD{`^G0)acC{EcuA>2A>AKOlO2z1oN!- zg^jx?aO^6kXjbrUPeJ&8>GfZ4OUrdIo)*u4vGnK5w{Pg&oQo(xBb*+~^w9r4|Lluf z4o-UaqiD9{H$9azsLsS9_5SOD{9iu8QxX(6T6TALE#`cuLVCVpBWz^A11Qd z*%{uJr2OH{_vcw|a&@D;sJfimyi$q4JlGwViOLzULI_pYzBmd9EJN+ zWdliAo=35({Qvuhph>7;J1ondV`F2h0@vd3%!+_{`Kr%Qmwtz|EjI_$elwtOOc@eJ z^ri4lY`Fk6Iv)5cnTQ7B(qC%nNX-@Drc#X+;nd@X7Ej8J+yCEt?hLp&b4IQA>J>9Q zZ5Ct)hh|-uqcxw~RwNj=g(Qs$rzPG2mLi!rztYZ$Bfxj9wiS_aaqZ_v8|Wc6phsDQ z{~1*5pw0?WFWtK#&^Un`S}Xdc+?y^n4>krcZzywRKz$Fh^ZPI+%LixfSsW>wa_2H( zz%|qgk&wF~3C!Lf_4&e}obCIPFEg%$j)$uQM6KpFSC?ml%YCf-HO_6XEF4)h^3>nE zzx~2Xb~~{IiK?kjPRQ37*+ltH^$>wTo%w~2-58IAafOu`3itD8H;1cBqG;rf#QUh7 z+~Jj>*IK*k_*|IDWEmGFc&#@NN4js9xBs0GL%xHe>@YUe?QN&w<88u}KE0kS; z^(CF!IO@j5@aUWq;`Xu6Lld8yN7#c!O;^~l<5x%jU9eeNpz79E)&YD#M3Jfz7 zog*tdc2zQyu5N6x(FF_t!ikpl{aF-lE%RO-Ykr?%V&FIE?CrSzW997(OPSC7r7($< zm4YZ!bDGLUN*1#3>>s4BIqB)wKQPIK_zB+)3JOZEazwm&a94RM>me`_Uo(A^&V$*t z@AnV^s#ewK*^ko?=3#^#`yZOVhf%pxf8lmGAcxs>oU`ml+#3)m_Z)DN`QKeU*M4MX zeum|6RtfbiG>$QaoK}h7*Cn6Y(Q3}%1C5UbG9YPbtl;D?rYA|waOzX9tvNZnE}mTE z6c&yh3P5*|{tgTu4;k^Yi?A8U4@Eg8T(fGhuD7yzrAj#sBhMFO4X|!y_+%Wbfl6%lz?PY zj_N98>N0P_XC&?=&KE_6i(M{A$gjEGdh5KU>|5Gli~H|hMS|kSSlU#zI$ORWuXvd= zXQ!8r5N6alM&(SF0cU5~pysGd6?Y;W72yxP_)Qj5Y9^cz z@13x9omG+V*K*7&Qm3>0Nu_d#{!}(yk^3VB|DWf7mVwpMbahwXmkg4pGj}1j#5?vQkk0~z8CJgCC zeE2_&IK*dV#h@-%wk{7sy}t?D6zEAXcwrn4Qo}a+;9Ef&$9fl zOrK^rc=fB*%q_CJ;WR!&|8$>S<91`KMX$E4!eGIJoY4G#{)Xc6b17Z&Rc6=FhlPQA z8i_^Ifu@bmyyvr^A%TcuiEP)@#J=fwk3xM`M6B0(1RSo3jBiEM?>BAK?&h(XUa&b? zn;LOpWbgP9C;5OEH;obUeez^=v~G=lZPYCFrk~wR5EU2^&@YJwOcFhw57SCWH@nJi=U%b?slgg-t zwe^dUbI6qecdv2Xi4jd1LeEx#TmlS*d}{omL1yyxDHGH`Eq>Rbs%sv72>%D-GwcW};haj*m73EP zMz@8dvZI7lkpQKDN3#V}tK~-94UH}$?xUiP1rMAkw@$YDvTN?=@EXHCr9L?3 zNJPpz32&7N_ncw;vo9)tkI$R&sHFUTAT^;K+i5~&hpi;Hs?<%dpRd`*=gEmwKI5FL z6?fZab#AS|>GcGI5O>t{{7y-Ob383IA^9z*53j0be#^+(D8c*fzd{xH#nM`tZAr3k zO5Sq9u|7{lmOjH2JoNwU#rQujhqJz++&b8`=~>j*qbBL9R{r$|Qq;WvD(Ue>EH{CO zl*Bk9hKA8H5>6v-F72S9?f;2gArG&MHu}z9*%H#8VPws;HbrDGGylySB$t*Hob702 zqT}Nu{wmbolg#8Q!po`O3WBxNF@>2|uS#9Z+qa5#c9p6K^SQTlfCuHuC`4FkymOoeseCZ8ktn4_~-E0b@btrt-=UopFhlL%i)LCB)7P+c_;oBFv}zk zp_5c1Sxj=9KKgF8{-);{Y1Tf^FH~b@kvWD%6O$;GS*nEO>1EKJpLzCUjC&?PM;sZxrBq(}^i zN=QkINVn3c^o+ECw6t`HNH@|UAt@={A<_-QoV)papXVRA>;7;TEM}NF=S-Y^_I}4J z)INWDeza!HTmiHh03l-U+zU8~gH>*#!Lu4YSZJF!dL&(^y=AfjMg@4LUfO8)(r^cF z1K39f+Nmky!hZsn9@3XpED4dDbtN=gu~>Hf?sqhBbe%OVP1%#AQvwAn(4z9T3wZ-d>_478bz(@rKS}&4Nkp!<;b$>*DZtAr28U{hnhnQkJM+Y3^^y-+P-9 zDLQ#f76mJlCO@%k{+t`PX`YEx1%k#)XVA^sGLx;9u(C6Za%ffmd0o1~ zU0!`vn<3||sADkW2!0WF4l;-p6A`;Lt64X{c&jvTn9c6aoO>1hpb}T*?2qX*S&? z#`UG7OP}m|?Zki`Lt!suH-@O*J&y*bI+LOcBnz+Fm@ zuUb7xP6MOi`$wHPe9NDh(iorBG11{gWixv_q0$%($-{v&Fi48+9M;|y#{)9u*REfh zPd1gcmRFpR&q%608w{pqi)t@Fe}VTt2*E8Om#sv*QrW%^fJEJY_(mJjBI-0oi~!JlDymx zV?Fxf2|c+^n_+kV+AY?#cjY$2oP2>cM_5(%0V>J90~z}zOIm|zaiokB6+Th~3As|1 zzUs-WY_WtcZGq(tOZ9&a3ss!gkVx&XF03R8H`>UBMS6xP_nl(wMZGs~Z6Ur$qmY0q zKrBstk6c0(@6twbwmDZ~yu8Ua={SK%xkYr&h(^gj@q6PXUL{vDJp;>VC0L-cFkln` z=x$H3X3Vh7&KnbRH!WSyGDYpnw$52A@DJBM^J7lgH@1bhMZ~{=ktQf8`Ax#>pEtvxa*3)DtzD|ZbhYaFYtut`AV<7)OT z0itN62Ry3tdP0bkCUyZAwtF-!GSJM;hBF#2R1=5Un>W`$ZUa=R+CW_u5a~o;f6>DP z-Kfc1;ZEh{Yr!n;mP$8~lUFl!q)L8rl!R)e>|dbMa!1p}{-91XC=WRqjWzO(i2`HP zmCn;lMQ%`Pb-_AW_f3eAVttv0kO(N~9V zKWka-OLiJi5xZHCPxQ%BC=e@l@C)s;Wh0rd8ei}5;os#cy}}3|<>gd8nS}f=H8wgI zQ+45u)Y58aEEVLNcZxHHGD z)IlZs#S4wWnHk2t_(#8XY{VOD=pd+~ak@Ec`<2fY6gdf`c=6R?{;#h4B=A#dv;}DQ&xV);}2@B(S^Q|fQtx9+C2+cglOkhNe7B3p)ERRI`Cn-% z34Tg+43lt!f8?nLPsB*h__qn<$@=nrI6*2=Jq?r}{PXVk)d#aPm#A9 zT&<2vm}cnuSE-JUkW*M`h^D&9(xQ76w$|eDQJ~VW>fcxULqI8c>QLql_f<;2!fSI9 zs2_9v*+W32B6IrP)8Zw*<{LlJ*EEnc#C(Znkma}O5c|kfV65K0WR#HK;po5<7O=9; zywF4)d)QQSf>Rh0`7%v)gQ8e4s&rp=QSn8HZ!Gk1GQ6h_m%GwrA(LaBQTMhFTEQPS z`@_YtgS8wzc=>(NbR@YC49`H3L+=sNc`AnZ=4paRjc@#us!bmxutx5d;O4n~{&)%H zW1$vJfeequE9}@wM>VJW#-dp)QA^Cfr0=-zyl0E|x4dDlLYuWv!!UXfVxl69Gmo>F zG`imat5tuvr^oV}?($lOHsz}z)UUCgrvHw4&dfHt0!emEpmSf0ameJ8o_H0~2a9E8 zh&b0@y~9x2cq$VggVq0w1=zF2S)`$~rr=wf zys4@xPQ6fXM=b7>h7;eJ(TOq7^gt{LazFev`@z}-VLD|dK9b;k=k`|AA{f2q?wQ9XgAH}E31N?ct;YJxtXnL0d24d_ z=h~vzFdY|bzX%h7(Zb^0M!wDKkG~XznB7 zS>QV?@ZHj-*D~z{J7wCNzc=XYF5&A;hS84C)(>W{7lo)pvPKf#Kd5^DcVs>4zWd4E zvlr|S#4il3MQ(&m1_tC49DbAdf}j4`x^A;OcuY-2<&$2btWE4!kKm`>Atd+LVqsRn zR(l7TzjFEXm0J==)K>FhyguUa`3dyN8|by)&2@SXpF&@;9v>qB2=W0?!p{~3(PgXDimy&V%VR4F6gA*Q zwPKEs-=$M4D33Kubr57aIsJ}p#G&x*mSIDI1=YMmk2*zKr(m=UHx0<<&@(W!EZ3+^ zSTf(Zu44_cg(>RBAHLcE^t4j8>uy!m)g)7+wjvb7A^CP->uCIDpsnEeV|viGVx8#( zN=R9SRiTe}^lM&u8B=f#jS!&DSQB2tq4#M6r+mi08w8vWoCLCbZX4s+nr_nEkk1VB zx#wC`6zoIcyi~sZBwDsMl{&WKfvz{MT-+t5BCZD`d0ir^f0R{i9nbs zUKh!EL%*$oe%o8a5-x5cN=CwbbC4@pS05j$!&LUU&z+F{GrM;`m_em$EGmY7nC~-Y zUfsxF`U}~uagA86tlV>|78daff#5qm{2gEI=tV~3jmL{#g;;C!i@|Bnu}wP%DS9vn z#&NVQS<6o%;ie?HXoq!LU%T2oM7sy@IpBJux!6|ndb}v6QT|S6dU?Yq9^RLaAs=nr z3%%2|nT57t&3=|m0gYiH2-?0g{yo zaE&zLGQf~*F%|%nUsGFKr9nU;@O>q`8=HlGB}rRRjMeD`WQHkq8%Xi}jOX5LyxCk< zqWc_piMWw^K|2h$v1D6jV?)z?Cs(i43!ARC!b8~|wF1+O_CXjQhu0%MT`VXvd7HcW zfg?>=JN~&ZOF50^mdUd+&6Daa8l2?3dSDZgcf=&!zVdUqEm#sic<-iHHd1Gu9Kqk z<7)ms%KuA%N^_RYlZtFJfpz({2jNWzY=fIHEB-><9;SE>>(*Ly%JsVGjBayZaJE-| z+g^K-vsLXVXuX5AXO^San3=@%aH1It-C;Z#yk~qM{UVQ59f)^ze&S={tk`K088?u# zR<7}SBC_%CO_X-isUlZdTH-cx#;>rXXXHTS#+^&#Q=(wO%VJ99=GFIj@%>_6qSJNX}P&iMvDPx(%(h86?eXi(+!7I0{O%ibnEXbiA!xX)ENLe?+BL0yDZgdhk$Lt8TM^ry$ z$BErFIyW^vL!NHMe?VfYQp%uH{MenQ%d$lbl8B8`legD0gIrc|#L4-PEqE-= zW{bb}u;U*&hwo;es#r(Gj+5HJG zC}P)$mDwmLicWtsb~*v1j=z2(ZQRRj9G+(+wD-5(hPJgE8^Mb}d(6crtlEy;eerWZ*1<5!V4G6=--j8!h9D89&mlY(m zn|DuqV?PcP%YjlZP)i{>kL^xL&i%76#t+r^7=%z0OdmEPEQqMox?WPc!&x9_OKmoX&Uug(+muHWjf`_;Ua zj)trUfi;IDvCg)xiuI9 z1QNv~AcJg^FGT5%abSXqpdOfon|1a|VG^9Jr?c7=@jxWE44UL>>hI|Bs{aLS(-q}We^PFi$ zWg20^V&;<{AcVne?bkvvH2fNv`^u{!xl*V__3+Qd*ZfJPF44bZr5Y?>99>-CpXE2d z^Ym|=u?HE+^Y6qNdE?hYJA47=&E}c&-H$W&bkXF_5mJsm=SF9$N?|V+>dI)2KN7KX z9TYqV;IlUA`#0ISmNVB8PeJa1U#LS;C|ZVB=9au*c_y)_s;q1bq`uB(n8HQYx{Ac8 zJCj@@=lXQ9l$E)u6AbRVUtgj=CWIr@CIXiI4eB2XyXs?*+N-0Es1g{_)h!$2;UVUc zW35rJC#xEsiLny6`b%((%1DAqYD;fSULzv#+ zD657O`|9tnVF!$L=Qz-l_(k&+M(`-aU3ZXS_nabFAplD%vyMOzyk)XoZu*h0~p1&>U|`T;#9~1ol{HTR;5GHi310Y5lo7 zKXz&a#)>GIpOT1(2%;$eh3P(4{4l=x#KGZIQ{IyTT5wlfymVeX@-Pvgk4#Ms?^m^m zoBe3%9PMxl#MMGdOYehX^B<8!xUI?{7;|#;?{U~lXWIlpRIYA!6;+49rsiTN!k24h zGFY0z_F7Axigb55`=jJ*B7qb#ZVal(9;)^TB>RtwVk<7HrB*4Oe?@HAAbkD@=6{VL zyku|nv2BN;^P#RnHATriK28^V-?6vKz-|4lEJj42RUZWAt!5nO2&nl&hbN4%_~8)Y zydlc-&IqnkQ?C@EbftbqOK*Xp>)k;Z3;J8AGxGQ-S>2f<-2SoXf>tJs1J%R2Jj#D4 zXs0B#$fqyZYvNf*&X5X*jMA@59%cOu3-x}77rTdSljZrQYmU`ek_y~A6UYx5ShwWtRIpGm5xNUNs`6$anm1p>13 z?|6=eL%ikyP{5?)8bD;!juAi(2aG9Mi<|63e+KJv3B2qBJY=k2d05}n z_YkbOmeVGV3pOZAfl7a-6^Y8mP}q3TQE;hYuLJmeo-~C|8WeehW_Q>;O!@cl8-)%^ z6UM^F85b*qg~XRM{09oU$?1y0ccG`^?N);kZVaMvwCZDT!tG5%q(N6Q)_^iGe{cp$ zFyNYO&B@M=1f6>8N_}MzC|WLU9!4-ra3(q&?C%HvTJbe3mS>}YnvIUC{=6{&`(`k! zgOmWQNUt(v;s$gK4OxJcp*)awDJd*3*VOZF0ob?mMAc`{ZbLv%4G?kfzS-H@3g}#l zTJaWw?I5HB;aQ#|PO_y5^%K(X3j*(4?kCz8py7wiS{uu1H zf23}`1U$rG@26RmP;d(HcyZu&eaK9EPmisB4G@LtpiH|Cuns$Nz6F`2Wj|)w3BKw%7LRF~j2T`bcdxP9W9I3I0%@d!EZ)m*ujm$zV{e z=_BH#G#cVo-=xMSn6sVX)k3JMI91iVX8nOrLZ1-<PquTO@f@J&2Hv^}_m^w^~Nb1B=&^x!?Z*q;{!HviB~C6~yI zR2U(6Ls8#=$^Nyq3{V+Qf4kUDw4e9acB0-;^1kG~WKx$xwOX;8eg>C8a}d;cTv^Jy=@2fO)-Q0?B z>LT!Iz=iW)qu>!KNTZUzMB)K`BS~2$(`k##3Sbn_{Hz7kA~gC(q24(0brr|2`n`za zZTH?uy3)h(N^Cx(&yHb+Q-pP|Y%i@vXL4?8hhFNr_$9r8*&J29#>S@8IkiJ^CS2nK zB`*k?vPC}vi@@((682MqS+Fi_BNeib;ZBBYe~m?L%}s=eAPoqv7ZS3LxKOxyKA(MQ zbQezBBVp%c=+bT4SA$Sv{aFdlQ>B@iw8*nfWH$@+c*?QFot4TppPT;`HdHoQV%|*^ zos<-kiPkWAsfJvu=mZ%rKz)9m#xIp770rZu^3@W%VI^E?Q)>ZHI?T?-PD)jpeUtj- zKtJ*w=2s2_NzMTB1{%pRhZ@=X5tWb-46=^?1;6;ig2xvN%uy}^u{yUF5L+z}n zTY>MR8U(rhlV*Q|p}9JBP7aM{oX_tv$W~tYR|vixIH5@Uh6nvSQC<)amE4iy;tCo} zZ_3KTnLF!$FMz~&F-g3;)^stm!#2w$PbKr+q5O|=rG9`n2vvc=V~lnhP$Fk^I(qHs z7@0M-;ayAly3agfWZFaf&I`Q+4oRP-VH3bjb^;W6HlwCq?l(K@l|9k86q{=9ew2zq zzW=VVx96LW(oIn|Y!%LYnJ(1*OqCPOs`Z-lW%lokmbvgRH(W_M7BAjUlorv{WN3dn z&-w$f=)3?<9+<=-cbYDVDqLwUK+ zm1wg&M_G!E_ml6H*Osz*QWX@RER7-xN`KijpEeTpyQ=V&{?k}R=jq?6>|Va%NBw@5 ziQ?zFV-gwl4!NRfkQ>^l)CUKQ3g1zreuPM!?$B5@1rP?20;)70pWrc1Y&TM0J*x|U zr``Uw0*kPYV990Dv;Vk0<_FIWKUVA5h#Zn_yezDghYC0uH?A*Ta0FM>@KWqu#QRl zbzr0l!(GK)wQVVb(VY_ppqWXO$c23SKDO+F;B)d``fdi3|)(tJDMhg>B6q3s* zJQ`fac|zt*tRfw}<+ioU9cOnYa1Yc1A)C=1-cRHDWwd(qklh#=%J{p{# zvn(f?0+I;<7uwnj1yP_&8_k7fy3yI$Npd2^67l^!7Lc4Whpf|wH~jsBI!s&Mj=u_; zgE1%5fMl%V17FPj`iuPL1bn|^$Ps7?P)&l;Vx4}>fI>_(*G=nP2jyq2C4Iom`)Wvn zRcTuJV&yl%DLZZeC+qTWx+&20k4m#a-RC8O24`P)z@loXaKC9q!f&O$ z^)V7H8{9bFEL9b04ZP3K#VWpGK~wRDxS!rCJ?KsQj1rM=gdi_G)a1JtoK5%>_%dno`tP45p$2)U@$*)z z(Mxd=C3cq*zWihMwRl!Z{_0;o-ApTDrN$2T>$^|~89oh7<@yezWOBU3?ehzKFe&Ps z?h!#*RVH3_KFYKW?d&-DAaOYnS^=>-Dii%XxF8ksw^Nb7G4GSh^!ZsqRDyY=dFr*% z0Ri)@4Fw#Kn(|FWhl82(=6cPWXAc1?T0M?8$LF5qKGM#v@SjT?;5>F4oWhCE_6J?F zW!>f=R$R@ec5PROx8m!LnSqOILvEwtqyoL?@LYyin#&r@>`{KtV+ey7Jwx8SK=KVB zYtgJcr+MA@4YG85^ibT|-x9re6f480=&&dEyrGifTH?!bBc>>?NV&BAS20oaOtLNE z1236QUsaR7zxPW9Tn1)?yY3{cvAhGLE%Stn zKR7pLJ-^SxfcWw8!Bg~vWx2^hYXIdi2XL%7&Bkf?7^RP(1%n?TIf2=SoPhyTs@Ecs z*YO{#<(G5kaR$-YbLV5#yML_GqPWuButAj{Z06TzNlkT2gBpB-;DSg%1OmOpm!(%Yyn61ajw% zsu%?v?e1=SRzd?t-pa>@*TBuSlLmd%hu4~W{8OZ0BR0>8Ue?GY>}O6?%HzvDrhcN; z*QH zlDFFUbpN9C-7nsWD$Ez5W0--1ZJ)$BfHn2f+ph~unHNx!s}zc@5qN)2%Nhm_P**m9Iw1>ewaNEY_gO*+xW}bGX9zV))1m zJO`3&-rB|lYZ!;(F0@|5jWwD%sdSDI`vDOopAhMKd!9=;fu-KLoaFie(zWDm(5xgE zrio$zCO9F75_~X-8sxn10fIuBVB>0MjYTxUY4f{HCq^)7s(DOj$ck05RI5Cr_4;#U zHk2?Q)IuqF^g+-5*ItnCVKy2TixO-ctjNkPj*aPHuW}-td2g_?`YT7OU<*DH&-#xzppl( zO}VTcNfkEs};DMd<`Ku)eDr z|87IjB6P7Y6DLYbSl(hh3?BBXVf_`N!AZow7RyOuc8kunoHP17=ObsE zrDi4#=K5DrZ(#vpBVvbPT7ZcxrqW)b!d^lL#92v`BYKy4N3Ehgq-}TWeU^mW9(?KT zfv1{&FhWSokF& zl%DjS(yLDE>*_1^uq0l;$4U~Q6xcMT!`SB(}FkS5*ysOz~dcZ&8 z2e|Ex2=He6>~pUjGXMtN4r1x1+2gk;1JJx0!bDPLRYlr!L)xt{Scd%MynUI$-mOb5 z8Pdy^bX|X8P%out`rG!p$TWC5V%(sk#;hys-}gs~M`lhLX>de;Xs7YP;Q>74-tz@6 zMZ?_KE*=<%9?fm^T&z{Qbvb$sjtF~NW^Z_-ie;@>y1FJ0H7Jj^h1%jMAqpxSUi-#- zR|9OU?->pxn4C``w9%;~FqluL@wanvF#Y8qf7n6m+c($G&lvLD;v{RrKV=H^hw7~3 zPGvtf@CH#{)aMQ(AY5bf@qsEj;ncpdOo8m6 zHMHM}RWV=)&$ExzV&Q5mL60D{b(eV}RC~cf#8P^d=YnKH&{odJ^0A1Y8Y%vD?eDy- ziYeuOnkJwx6dpIvzAmgJH~D+xhVi)fvEC1-3xy zVC9R;%ptKRypM4xA5}XtvZ!)hT?x(gwqLhcWv!+;!w4u?VubeK7lppEYqG<&ofc{r z3t)+CmaeGmm6X>f2J_xk%27w~GC&%4BzOI{b^iK;SwF>~n5k-qGy#|%0_FGssxC0@ zOvqe2_gKmt4WrD@`wB1aZ#X(mcD3WpAX@Ab=Hi7J{trItnF@&FeJKCEAU_>2)t6vFBr^&QDMTjMRRJ|e2!Gy z`OHz|_*~4Y04+JZr@oKQGxNEb3McP}4Wkhcg?syv3}__V^%3d&lD(H8w&bU!ZGI@| zn?|6=oAiIN0EXUgPuaY&%LIj-EaZb6r?EczE?8eCeq#jd@}RSqlC$^yes+u!1?gcm z->X0?`KOQss_tR;QD%PV;5;f!+1$d?^odoFF?HqhyP1sA*v*=1Qg{#$)KySQ@>vl( zcgsIg3y3{01&b{32n!nCcnnyan5}LuEU1H6Th^=Mb$mJ~FQjJPq7gog7(En_lJcJ1 z%Rr@l|CYkl{n`B+V*9YwEqWOTa`VCplW2HE^(edtLZ$tU`W%N_(3hbgIB%{eSM^ve zB9Zs?`42}c73h->rsslS1*^tO`%z9?oz8rqsEAKDUh`S&D0zi$8weK%C$NQ&3QAvL zUv72b)8*mk;m;rXvH!%;lxCA9vHy)jUopQpvar^#fw&R#=R@71;6J_5@Skxe!Zsrl zsg2x=^ba|kyAgR-&or&;JCw7n=Jg#I?_T0U(?Un8xl{Oh}$=@ zR3rsN$k?+XLoNy{XqpV;R4>@r_~{XA@H#PJ|5kwE6t|Yl z8}dH<`COnSzG|5@#~{+jZP+#kQ5dnAihS5QBe5)GB`rkhy)xpQh@BKCmVnG}K)tef z?ZMRfGg%Xcb77|r{!k0n**cH!z%r3~GMDr`^ z)R=#Vvgxv*`9(JB-Gq)=r%Pr&&G}cH#iK{9SRcA{w{?rKlI2BsWg_hlLy}MB1!h<;uaI!N!vacjqg;7#{h!I($NWc#W&+&G%F4&v z1?d$-Gs>9w=)|8U3^xPqL zDP$!9J|Lw%k8Sdu`v}Z#Rskgrb&Z#p%Pl!8kvOZ1dd&v1!sdj1{M$)tA-e6SbAc?| zNJfwB$cXM;a{<%OA1}tgCuqW%Rh}Wu-%(ek z05$lUaly8qAOuSrMPA@*i+~?$tjBY<&WYozI6Z`DjK5&;=;%wZay|~8E>dXWS>>>X z=8B4>T~k!S8h=3OX+unm-@7h%A9{}0evbFJXH*P=Hh(E-zSOP3Hf{fi9m?RHb2i_r z8u`tjS(>HFDbDS0wM$X}(~zX}3Kfs&x4`KsUaYR%#(}lp861TLVotU6Ult5Kj%5yIs3esu zNIY^(jeb5Q;Ls-bbYhEC!JAuqJ%~;0qar?4L;FnaDy%1}gm;9vyf#=+RB_Ef5q9Vi zYW2y+O5WE9INNn;sa-{ii^uoFwYzYD8|EajuLfvs?E(o|Ai+Zh)DmXGI(<$Tg4FZ1 zPCJok`NPD%wE$@jxvZaGrBT&J-i)>G?hwjI@{HYZs*c9p-M!{$>?Ib|bUs?_*je}1 zZ9OB1eYDAJ<{{L4(s&{TH3Ki103aA)A_3K39#5VA3MB0s>>4NBdXxvm#iLTOt>i#` zKR%g9jlc_kfE6?8+J6p{BkhtzRh|;pBzZY|_MhD=P)E}oAI`Q}LKLLexlY8s$a%w3qi&qzK{WR+9xU-7nuS#ihkAW9cqgq zGiq3Q_u`07*U0a)?%aby%A8KR=AHtF_C;F@#t#~A$g1C5a+(eey{5@E;`Ze}+Z9;A z*#g(!|EX4uIr~U7>q;rGpo0t@RFHHmoXw<#wvx(h)9Yp?mDd=e$vK7Kq-+N!SqBR6 zTN1J4c@S8#RF1+ObD(1ACTySfo?NT+~=6Tecjeb1)LuP4Zo4$4Jcc@6_`p zS54q2ttUD@xNphYNe*9fkj>}$>DiIl*y$P37Ja2SG2x~;8c(qKaebKL(Yehh9d=&9 zC;#@tRBlO2l??=C^qzmSbE4q8<9~s!5 z-6~+Mjbe%H?Xp~(9wHC05Leu^??xMgis^QE<^8$$GMz|PMq(J6@0~qi7`>+UFvY;i ziX`K}5i9+l4Pufty6S8^KfQ0TC-t}utyeF=U$fzu^`?aY!o|4@>IdoEO%#w3F%Vw5 zYVjnnZaxuU+wmAN1!WD1=okx;HmIgisbnM){U1PHpgPYz=Kz<}Of;^PSAnMcnAo4Jc@~|=vR%o6} zKHM>a|CQ1|9iN`5rk_(EdYQaj*YF#6{JL~%-x&K}NDqz*Ko&ey?Q@<$K`u)A`XYz8 z)uZhkes31Kij1Ewi;d)qmr61h(lu(rX1kATI!wxZR(Ck_6~;O<3Nf(hvquU?<^uq)GpT%pQtcf=+Ozy;qpUD_`dNatnQ#JkW$RWXk z?p#czAMd9%lv45!O5IE(6;2SH?x!5B51nURMxG2APtTO<5H?rV=0H`7(QfI3?AW>u zagH%r0_JqG)JcCOd=BNZ`M!c!;nL?pkOw4Jm+j5U-9JubRpZT=p-3>(YDajlkrrwa zR7hF9zfdFOJ|mP`Aqg^QKq&;eLO>a<0+Ahc8HBvYm_#Npng00L;^{$tGz+`O+ z1~FbHo(3BsK&c2IXHA}V0jHHjYZv-OkQh#%; zPFm%Wx%Eg5I}g?`m$#=jVrgCvD6~w{!nz51)WVq-Y|G2KJHD~`{8j9DuXIX=zL3(S zKO!(!k)&=AP5F0098ZZu^RV=tZ%(LM+V&?WqJ8Wz*RyU^!ul46- zm289-D;K1>D$ZpYiwQUz?x*o^xHKGE3Xibl)IGsV! z$~HGd+DuE?q@{f(y{tKa({F3UK&oN+KMw#Fo7j4Hc=*0m+{Di!JRcGoMlmcYeI%foHzB7@C2-T;(&rsxaEPGc?iUwG9g#Ly%!R>o zFbUFzK5?4SQ(0eC^5lDyE&zA>e9t~Mn2<5SL|p1AZq=52aLzbSqqOX4RSP<8qV6dS zm#O?J>X(7b+%U$F%$xcq?RtIXkC<{5kNc9gX?vE*hdq;i3!s&pGP;WDTL^bgcI-Ct zzQ3^F|CQezCZPPpD>G`EZhr=G{*+X>6oQdlM+3CVVeTcICWP9dXG_4^5J`79`ICW% zcl})kWsY+8q?Ur+J5$qMKi-{Wf2Zd+9*(`772CsDzq>WcId@&}TpC%w&-~yYwZdFm z@lj$U7c1EXZevp2D;>C)?-X}koUnZ$(wxjL?-TdRtoR8N z*-N<+N4&vOv18eczj@4AMtI_l;QK2mw}+qy&>MF+=Ea#2CSY^mw(o}+s|nRgWYyQ& znE2WhTZGv=0oZ6l02V@R$QJ*W-8I;ZsCioQLrikqRd5_vFX(#Z2ixuKE%BokDkt>m zUNC?cab|M)_gVU>a?PPn_0AXX5IJv#z6CZdx6Wk%EHy(sDaBg&2DsPW5zw@G4Zls% z(?uZLqKNvYOU}RsRl3no{|PF%wZxQd+Fyh0k){Ax&{Q+iI#{`Oo;aopQwCOV|Ve!QY*Fgs=k$#wL)pg;9xZwLV^53d!owg z%=v|gS&I{s;jIOd42OmzTFCfdypc1Mh4kOdwqqHW4g$N@cNd`cP(UpqoUenSU?EFG zijD9lB`N=gw|M-#xxng;I_%EwV~H7yea8K2YR6j)HTt>czZhhuH61Z(f+%ViyAbpt zQ_76bN5}1F*t=wl#LT-lH)1=}t{q$ST>-LwDgqeEZQF=WNhv_kmbXLD)e~)h|PZsn4bWj zx)Qxu9=t~N?!LZHFR+WXb`j&}VI-k{Ets&NyimD6l4PHFWzBPONP~!U8^UhiHUkp^ z&13{M{UKVue4)hk*?o;q#`@TjhL|Jj6nobb>LT{E+nV^&;tZ^vEdncnvTE$3psUv1 zyb$u&@%AD-+h@Wa8}V;DUOrwUdf?)g5c4TgH=qe$+Fre7A$HAs;0hRszAJxK%RBP| z;HSV2(*+F;4F$kX18+PxH`ib3JKz{7{)KUc^y8?<+&2^zijt zlu|%wrDvls#!B;lShj=@Ac&7nOCtwv!N4j&?_ON+V-&zJcbm5Y{w-({1_9WvhLI8f zA9Cp1+~ALZeXe3>3oU$Obt-Rr7TVs25ZB@(R?00Ga1nmz0 z25;SQ$$|iac6`cGm>#++2*PXCB2V5pydlbDlqrQNzR}97UKScW-nH06T-^E(IcK6+ofMzld^z3wA~gDs z;P|S<3a*#X)O0TK8z%b#z@7tsit18J zGLA)C;KDDLkLK?Y5&PPG1(5Mz9d1CO5m=}w z{&)S8afyd-ZB$zC+rQ*k{*Cy|yy#T(Z#FGbZz@Md@@HD(Va+Ww);{36*!4vMfd_s6 zXG>)WAK-n)g)nYyIj36=NUkXavb6DS567DUr9n9&@1F8Nv$%>?tEGRI9)XHY zAm$AL!XSi&3gvG+P1$XlJ_b<5-(WniWJ2pkPE_++0HZv2>6B3df8+7Endc)c%z)kN zT_#8Ll1z8y8>V`|xA5#44&#nOKuhPsG3!6t3JkiSpsR${&8dJCn0a5S^#UDFxGw+t zQ_`U1Cb}`?)|~A}9z(x0^f&5cN!p`1x`dMNPU=G-XI{cXp*3h0l(0-ee+!O+7pD+OYY%;7%;m|3lkXxJ4Dc>uwsP21GiB5-|utq#HpILFq2(kZu@C zKtW1M8j&t(5F{l;Qo38Zdw`j{IKOl5x&Od@9+bUj?-^#V^{ubg_r33TeQV6GXZb4= zssgqXk~bOe1+o^WYis89Z*LLjTun?wm{1HWKE)Q3wrdaoIrHJsDSwv-s=PkYJtcQH zW_H8!IJLl%h9fTmUwl=Qd{J$=P=C2wc2sk68at0Vt*w}7xf*c3aS=_x^n{|{x3dQu z(S*T{hj(5~N$zpXkZ!LD%GuRP3V|7_2PMKnfJI>4_rQ(aF7u4=)-9vQUj*xI^Sv4M zMz8oE3nk-26SbsJZyU<@^5gp*jZ3x~1l*2=Uk7p4B{jjYh<&^pMVO^t^maJv`zl7X zCYt`0+lUwpF5t|S~ZeM%S zfD8`^0_d?TWnZMK;|ToQ)$0q(BJwfs$KPT+6MU5~)OfIxBin%k!!I<_ylA}$3QR*p zW$N7Du>@A5``=UB^RY+5jT)L#g7K76Xo@Op;wF?wB?}6%%yH)z)xJ#5bBF-Rv$D3I zu{Qz0;H5jey3ES6R-ME+Uyi-s4GP1${=6e%c-*10)TLIm>h!bt$B;mntLdckkJJM% zKqI2tU30Pr2OOiex@Z!ViDA%aMst{EtU*gw>;a!|y=pAaOh|)a6QdXw_U)S2$29`X ze);T6N#|LV;MllL;A1*Q;LUY{cDsrVssv5xRRhkMTYnyy4TD9i_s;Z}qfD0$?@*)s zA?cFr5u^ROmd!7L(%RQCXHAaF&knm;qcQ=qFMvejxt?!0UnZ`G{Kren-dn91s%WVN zgDz(Qs!OhZ6bpKiJ@yt9b) zU$_d=*MV1~718sEr$o@YyO1$)q0s>rw)NHa1tV}}wT}U~7AG4!I}QXyqHgh}f;>8o zF!@{!YAMU8Q*cA85-a)KN9O4{-2JvJG4H5)c|#!(P8=@b==k&Y?q|kfk;Q}(Oykm% zfC+WVCA*>DP`xdTgUNEqEI0U9fnYYaEGTH79%~M&*0pclUp+J3Nzl#Its~Z{Wq=k& zt|);wn^{^f7aP#sxb7t#D79X)BRH5GelSpz{k@Sqx2QRC`(hP3e}K9r_?7I?)^1 zS!blbGgnI=hNaUyABFaq#4N$}IL%8Whk!Osj1_#e|EG@?RK)UTaKwwR&ik3R^65U? zuUu<5*yBz9b>J7aKsDR^9e zcfZGN4i^Hzie$^&9PfV%GY{UuYkgtlfnEy~|9R)`*3D7H<}(hab;AR#dj!7oOW*!X zvN8AH!x#e9v6~Vlq1JP9`x|evK-Cts&{@uu#pQ|RRy^Zym)l*3V$Op!FaWZhYzK5m zZO4HtRYYt=wah|~u%N-|DQwVoq}qF2Kx0O+ZY_zvD=C(Lu`kBDjr*ur1fU$ts;Qx@opqyY0>%h``rAr4 zH|_rPJc^R;slDhU^t+ilvgV7vcMc1LR;3DvgAS_mlQP670CJA5xrJcMK-Mhcs3U5ADJDF^nmYve}<`8rNG}%!jp3-Kft0U;szBz z^&Zvz(LL^iEs#uIe1;#OQ6vXSSk>;|;ZNSTJvHLNFVmcR+tShkUHM4_w!#hk{sd8> zEV~F1aZQ+F$y6x8$eYtY?>s@{=;GNWFAopAfvaO5HIRpMSzhzI%bb}&>Rsch`DDDZ zhJMyt@};-WnY8naK%jB6vlQGV&R_^ivo2{zlp4csO7=sC30w$k(|-Ty4AvlhIq@v( z&5>$h?ne%2UurK#*?sXn)9GS&UPG{C>aJ$NXj?q8vP3#8C&OeRD2+8^S9$EdV zs)%Q%y}o>t0(7T)?-n#livgBE-YOz;`TOBtosm8C%UDStH0pY$C;ovHzR)8y8om9~ z+edA*9*v%SemC*?-KXSmwrGb@qZJlvL2MPP*OnU}GXDma$W8yfPia>$CM_16@m}X+ ziPMNiqm{5+u~e*&UnQ4FF}ph?`LSOrVE)qkZRYf)w|I}qdn~>BZ2Qa1>D29R zuVw?!zU@D~Ym+wYpFPvBi`OvxY52?+_7~grFfjma2gh#X(JMfBR(Oi%gd!v)ywmV9 zKzR0;1B!HL_BR(FJm4X8>&1%k%>op434bg=7Yyj~`j(qZ8HC4S(i5lqlAsN+h~6CW zcsQ_FTU*zg8*U>-6ikZs+!wbL(`}C2^D@#Csp&@7*a_4mdT2w+xJOyW%ul@iiud=_tfvONWg=&JPZ5 zGRv|wod5gxD>kjLu<+o}5JqTw*33n-mpTcg5F5O|?{M=$msi7(f|eF_TiZEaQ~oOz z6_~V)O#PN;CC*%b)10`$Lp)+>$S9DsbIxIxWSMj_r+XG5i)?LXxn3|-8dj1x*Oc8w zWiuPZw{O;PRDQu!2O~5N6JPh zWP}Y4sx%(>@qoVFMzw2M>BT#^fIO#xZH4VNoRD{Pu%%fGlWEKXSsbh zHKz1h?q5z03Jm0NT2Uz0D#x5!a*Gl>P1=k(Jp9A02)L;wt*!5C`WB5AdaY!Y$@|(p zx|GNG$lm5viov?Xr1q?x{*q39LH;%dNeRM%BIDKa2ns@`+Q` zZE{@BfZqYX;y7#9BSUEhGfB&e!{58(e*SE+>P2d3Sg3wS>)1UHy>dajv87n8bx`>x zRrEn~6dAIF;gyT}4?jP};^N`#`1kKTva+)9hYur&F%`i67QqYIXU|US`WYbb z8+XV^KA&A{h?Iap%ELpDg@py`4!}>o)4Ew(Q`5Gw^5zyM$TekUW#tzZN`pKOm>4Be z$>5NXuZ@lL>gwwF#Kh_qY95Ym3Gv;pPMthNE)ScIgAl6;1d@Bm+K1;1BVf^<4^}L= z=W>TeS6l9P6hlN5KaYbpe4FMNU0ahpvTsW;qG@+8)gn<^Q?v^|9O#)Mofq4M3A(Y; z!#K{5>dpq=3{q9T6-d{@3&!L{YlI&j_Tjttb;cjbQ9pIP`!%osSC;8!P26JAC-ZHY z-sVTLQtNOE07@jvhhAO6xYUjqkB@utmER?Uu%RD~4*QPH_%eHTz z`L&iD#qglzcw<=oa{b*UA$OyH7o+z}&$sAXkqi<6h(E~~1yM{mUP!<;Vel#sQ)4uBd0&Qnc4))*X#~(zpAo|9rvi|bbZ^`{vdoAu4&Vsh< zoRql4MAP&AMI)xZXR(3bHaD%w!wxc&V<~=_q1^q}<1!In6iFZ-&*R(XHj{_9-5{33P;#LYGnmsW6m^1e`hv_k zkOZd#DWj2+ux%e%lq9X~Oa9{Xq^X!4L3eD{e~(m8n~{~i=NpLMT_KULx;lR9Vsxj$ zOQ|!_lMifMCFCBP_qIltp(U<7Vs3jNBnqFQLMw={pj+;?8U_|`nP0exCP&pO_D$f` z`BrEmY6jxc2cLAEJ#RpfNOz@;rPeLoXL%MO^at>Y|19gej%wW^5j-MouRHdBcMbF= zzroLsmhMkXAj?KC^$$IC1!e3{p4?gMPs93oNeqEXM)u>3L(?d+5WtI_8d}wMbLe|{ z%4vwLrTecxO|fnsW3Th-=$pvVJ4!x_{y0ETiYbf+NBjdAIU6YBi_M08K$P;}y!Pw2 zYEqK^V|!mAktpn9VzaIAFvXWrzC}V#j;|Y34E2p8se{HQbKOxu@h~$R!wQRvo`dG+ z+JkXQgSR5mmeVG;kR-&IE4CUU2Ms6=jJcmM(V1&P1;Ra|yS}cdQRK-B1iZ9M3EFm^ln zeQvz0)({YC0_>qx1VUGru1$J_oR~WOjwC){FuHw;b|xq`X2`d9SVYbH6bqsNNaOk2 z>8Nf7MfC4gzV**`5-jc#R|xfh5Pig@J6k7i>m1`pA&IHT%uECJRF@Aks~CQSuMT$u zrA|iwaIL%yOTcMfp2LwD&z)?3T#e7MKyaS)13R02#jK1L*1vCA72FuH&ifh0up%kH zhU;UgvL7H^vz*(n_CpkMYL)XkyUs&Dp*p75p&*M6B0El3d6YWSy_-#Q;VyZVFqL^0OT5^jbAW?d3Pa_Z)e#aV0ZQv z-0aryQ

g}7JO{+VB!_vWPYZ)6J|^Mh6(83lzf6IC@eiYXD{^6RpBIkmUg>sz0s zW7)P5&Sb@8*!wX@G*%~udEdCt{oY~PV7H>4QaS#)TIcq#5YM-f-e-f&a(UgV6-ec8 zSX|Mr-|7&lMUx19HjsI{#%k%JJ-A-c;`sbkhkd=J9&go>sb^tCAo%~DctR*xt)vpE z`veBplj3GfISyUs&r`&VDTZ9xziS}gKUfRDaT`igxdW?_4`j#V9fnNnotp6dy^z_kXeo(Ky_#sq4LjKa4&w<*Us^y%Q>~A9$qbt2~2hxNsWw&5>4JchZ!FSjXJ%!qf+8MOPWV z?H!U`VX%C@*FJZMHRA3XTXe`QDIo?#C}0nsD^c;cpo3u0Yt{J=3O4f}*`Ddh9Ly=Y zw=WVs3vDlWD*>3w;>E++exITSip~mzO{qgDFku{A2vd3ayeVJjdOgb_if(~e%Co)>qwUP$$}xN z@$9jcmEF^k5I}*)J|&}yw%Q2=201u5_+A>Xu!u-}aZuPktP!2z-qo*l6=iUidu7|D zY(jbMq$y*Q(zp^x>G|!EpooYFsE#3{pui57D{UVFF+^iJWhwtHkkA37eEX*v7GJZm zv}%yi6)RZ)9ujD1Ky$b#jE;$kVSD`e4M8c;?Y6T#z?W>fR$f^IB-!7mFSukf-6spO zy@C6fRDIk!&)~fWiExRk{j-5x9Xi!5HzK$HPMa^Tm(PwEdL9cl2;aw& zzxr}djj5uNhKjDpNgQK;)FLy|!pZ3|*hs&*UOVrX(r`ooHKVWha%$(i!e_U?|`iNVF?-NY*<14pNtKfw&&-&V?1bU)xuc)hFclB|NHR!+xy@^XmU;)6x zIXOAeYy`ls4(3u?#36os&dMur>+`dqeW$jxeiCfFKklQGKS;M7`MP@)?n3(;@=W=s zq1xx}(u9@RrdwNOTT|^pMVe(V0B>k;jgN~UJ+QxQY}is#Qt)5^-N(YlCQI-Pu;MPf zP%q&(J&-_t+aWQyhaB0kx3K{V96vBUR79Z6Pp zwhV#Schk0%=xErDt@a{d)x*2BN^t~7573H@sMNe1plD-Dk3DndRcA;Thf2lx zmv?KQDLxqljE6->oc|2XGy5f=dvZ*s9Nu^gnB`X{Zj7%#zQM&b6P=m9>)NW)Ik&>w z3<|t+Zj_@J9-|6gd#{0?ac3F=@iI+VUD)f`QnGm)?+0$km+v&NDLA$m7f(7E#hV<* zEXTc(MGGugl{kPz4q}$O5BR+40aN9R8jR}DzQ$;_=LBIuxp|Df=fRvh!15Y*7%cGZ|}TH$GI8nPp;|K zWq^@U&+h_H`R8Zbi;d9pV+DMa=d03Aos{u=#L1lU(|-J8k<)puCSWR-QcRg>?b{a$ z++%rFD{jR5Z<(RgRCh);a7j2#4_-*uW-sGrt$2u2`6lG+wky=x2tf7lm7QT>C9Bro z6s+llH-BbriS{iwIbd`hBhZ(}A zNUw8t?lO>8cDC4xK`#hjeyqU_E;ALi8*GoDC5j<4{?Qdt+C0c~Y-(bnprF9R!kQfi zVLuXl9)t!;0YJE`B*;}&SGTS@(JX}n#!_-x2viLKT5MTM%X||oV*f!ncpJWsPV&&? z2EPlOcX*)bup47T-qZ zGPTJ-Wy1{ylZ}l{iv$(Ub%p^tHiG&|Fr;E8E?6Xi-DJOV7@k<}!CqhIUSw@(YMT8` z>5PW=-Iqd}kk`HE7s7AquIsr@_!5fSEXs;kkzIL-OCuBA7BiQX#Fzn+a2P%|7LH*6 zY!3Li>s`No!E}7cqk~8R2N=+%H-&eJ+4(tpg;K{yS_P@g0K+mQn?$kR0m7M4IDaY5!%;Q16{zx6;HU}OL_yN8)Eekr$? ze)S4V%#qlm?A#W|4SE*&#>fQg6yuN$UX!`UvR%Z|roNA?ZECU{C165ND1yin?q7Ot zVM*Hc2@t)|`q;*ha&w>A^uzThSSqCrKt_g-F;4U#m47lfPXr#!NYosM78xY2tJ=EZ z(gyUmpdfW?YpX-OUXT7cFyY`^wcGFxnk9f2dszFtzy(mB`C>n4DyMoHf8BKm!cOs& z%xKW#Dt&*?3ZtjL|5eU9hc40Wef`fe@WJde1Uu`h$U=;^lI3p;Ow!cHaH#&;)Vkv8 z)GQubM8f5T*JY`uub~^nQ-Z@`g9Rn|?)>*~2X4_NV@Rd>=a;k(Tj?pJQ z>2_{No2}jNH)?AqBdKblEMYL;c=O26?Z1ZZW(0i$D7{^T(|X=uB`?A#b4%sO$jQHs zeBddBu@H+6no-)C-^j5ZS7M<^=n#@Z$0393DFG>|rc3H84uHS~u)@?Z$Qi3@Yaaw; zfYDaJi_MG;WQye+zAhk!l%x5=5)vw8L@Lft}!gyT5U| zb_VtM-im}!=D%}sPU9XuOlYiIL6(#uV7*T2CU{9+z9gz-1s5K>xCqmh>0v_|NC+n8 zf(-(e$7+THjD^1q_^Ll7auw~^hcVI?@ zGUU=kj=^BH<4^B=)Hjekv0_$$!S4ww5GYW;4w4>V{BbNxI@gbQ`7*-(?fWUVK+?eU z!6FHF-y4rBenk#UL#2Ie&$=r=#W*}cj%MivWoXZq!ib!Ax-eF+W##? zH^24+)%+DWqZRsgu$h-d@r1*f*?sO0Esqy9rHh5>kZ`&wN?uw1{hpfXN!Z(H{-3q} zpSRaZRT3)T;1|^EpGArk)Te!4(^m!=;ajr*5VHN2N8>Z^6jVOG{|NUA4EyHsM zaU9iXW2Uvg*IO8Ys>$PYnFy*zKIRGe9(};^<@oGqX51sGwSB*a12)*w<~Dt2_8|B2 zgi#KX{*SyEJ|k9U+5g!YR~JQCY6_6~cj+&u-tmJV>6dw>Cmqc zx=_W?KFq^3$+gei35$%p3vwfXIFqG}$!ptdERTNrlH2J*noOwX%y4C54uNBfDiE*k zSU=+kmF#AQNv~wcDJDkW{8P2)FRXf%CR9Y9z4mwfaF8Q7e=ZT$CTB>h5oFD!^CQ^B z%`FzF=iO#P(LcS#|5FQ~7CLIavv^NQm_BWy%Ifw_({0;fzsO#+Qi=fQ+Cf$8z~!Zg z`Msx~lvtr|z-fce5Du<NSPYG0`GW(1gdN(48YZV6Nd5I?g_eEVHb zQ|_L#lhaF@D|-Kx(Kp&A&4v0#C%W zTQ-99cmCq@iF$ADyDyUf!X2o{a0CsN_oE;l_g%e*dOW05J>0jc(amAsh?KA)HNApU zBulnX=h0qts*vVKAP&q=o~Y9V0Y=!xr_C3{^4g?D8YOQ&p@F#M3zXS#fEA|j{CVrf zaGq~Ezi}HjV2;l$F7CAy3F|X&4<@+nfIPMW70H>PB^LtT-Hr78_#wRN0hr~pkhc3- z1qB33N=n^5J%HKs4n0Ze>&HKDDCN7OnL&Jp2dS%kD=7G#&kF~C2VhUg%gNzDGq^^4 z&Q}6A)f8YSZB+p6(y#jF4IpO&KfvmOpEy&2l)n873*)tUF-i;$c6PZh2-ZoQ=51C+cT2uFnmdd3TWc~Lb(@iOZH$3H3hE(jEVCLDJH}{wi zw;X|Zs<k}^k9{6AMOrc#@dGOs<|&Qn6Ymp zrZf!~Q-fRKAIOGzNj)|W62JL4jS@g0j-UJT3#LPzTS{N96VewrfuTUXOxOyvpIA9y z`D?<0?KRcZjM{<;Lbg;vJ##eZ87wY-7|%z4FW*gHp8@3D@{iutMfP7Y4W>Fl(Lqw8 zYxDNCAbrH-C;s-ex>`65{T)&BhnxgY8;EL0Vav#@0GuM zK0JljFyp?YUXAyvexMAhAoQN6e4~t*^AS4FbZub@X#|JM$0zX6*}YYgkHz8-sRF)@ zm-P`XVvJ_aN&;gskzH{>yO>NUc}(Smd=6vbfWDB@SPA%eyE0};&{)lg@0SsT{CdyK z+84r(xW9n9{Jx@$!v@Zn9gQ1vAP*5VfOPez$F4K}%inR4cZp#d1O<$ZS9ot7DKI`I zYp4~En$^t+1uKjAb1tVuqj5E`bS8M!zZGs&2BjIdTIwv)>w<6{=!j)*#C#yB_yq;x z;*xT;UqXzLiYiKOl5l989i!>E0Qa(6#xUyl{6PE4-r8b#o3wh1@har-hn?^&e9zMOHE2^C&9P$FUBzOy$x-Y)n4BMc)5X97oF0Wj~_)Mw2x z-!X8ZbqANP?L!6I+0zirnt)fwQ11F^B9H5)+GrElRap8(7iD^CiIQ5J%$9Ln`qbrW zmyiAzyXYm5^66y~4~DC&>&NUhLV??@`7RF0zAEbKIFdX2s-bbShU)4ab~Ko-zpVbr zfSPp4y+9xtnSfUsB(y=+t1%T(cJa>I+N6>x&W`V2^Ml@G1axhV!k`vM0~dzB;b~HF zP|CvWb-->4@r5YZx8C++3OYU$-y#s7`R3_Eedw5dTpev8wa>Y564c_-uEH;If?Cu@ zw^^3{W~UaiU(4_%%9p~5C`7tp-(Me`)QQ@N+PxcUsF&G$aV+otxql4lKjB<@{($Jq z-8^1@i#)u_2w&3%!#1D$feZKLMksw=Lv?%r@k~f=?1%{;$-{^3cf0 z+mFQC=iFMSg0Fl|KlBJN-YET}Kir%J=$%uYE7XTPN94Bl>~iCYH*m7<-{)p#_oSX1 zm@Uw8di~m}@n|jll8U=?qtfEFp@UL&%3@i^c|0VTC>69+k1- zsZ@9a?hAdU3=mhLEtoZOmbMG*oUP4GquS|32f_8ncwnEDIu)SVCX0GL2IZ8kzy#Di zdJas)YauU}0-Wkk!rg!QeU*7q}Q=yt%&1tW*3H)$LkN34t+ z>7}4tkeC9c`@cM;h4{=;dg0!r{-SVqvG0qVx!3tAO$J3@^eSm!LjL?p*i0{1fsd!) zY#OvXd-ksrS2ck-SoRn5ePPOBrdg$RWi^+F(kx3Jir%~@9B8(3nPQ zmF-PS`@}O>P|HHi)Be2L_)W(cLgy{whl5P(afmhfo}-UFioo0_^wcA~yGWpx;DcpH zx-TEVf-FciIz4%|aoKL^D~5W?%cvYD;I)(YN4(cR^3qP5??5igCw%S0-)C3vzAgq( zJ!Uth-z*bY?5%&((V8a}M#@F1ZYKU~g2nNl9w)e9{GwAZ6ZrifQ8@0B0e!)P%hDHS ztS7#2(0%Om5`Oe2^Lotj*YU1`

o=1mXKiTpnHmG*nRo57>}{HucKDLUe?1+V3Ut8 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

@_0%6i%@kOR!g6DK~r(dmkc{7?Y6=c=k~ebbge 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 Date: Fri, 22 Sep 2017 20:05:58 -0500 Subject: [PATCH 55/80] [MIRROR] Improve atmos components code + OmegaStation fixes (#2752) * Improve atmos components code + OmegaStation fixes * Update circulator.dm * Update dp_vent_pump.dm * Update pump.dm * Update volume_pump.dm * Update pump.dm * Update pump.dm * Update volume_pump.dm * fixes pumps shows area rather than vague jump also removes it from admin log, wew * wew --- _maps/map_files/OmegaStation/OmegaStation.dmm | 6 +- .../components/binary_devices/circulator.dm | 3 - .../components/binary_devices/dp_vent_pump.dm | 414 +++++++++--------- .../components/binary_devices/passive_gate.dm | 22 +- .../components/binary_devices/pump.dm | 47 +- .../components/binary_devices/valve.dm | 7 +- .../components/binary_devices/volume_pump.dm | 53 +-- .../components/trinary_devices/filter.dm | 29 +- .../components/trinary_devices/mixer.dm | 31 +- .../trinary_devices/trinary_devices.dm | 4 +- .../components/unary_devices/cryo.dm | 2 +- .../unary_devices/generator_input.dm | 7 +- .../unary_devices/heat_exchanger.dm | 13 +- .../unary_devices/outlet_injector.dm | 29 +- .../unary_devices/oxygen_generator.dm | 2 +- .../unary_devices/portables_connector.dm | 11 +- .../components/unary_devices/thermomachine.dm | 1 - .../components/unary_devices/vent_pump.dm | 33 +- .../components/unary_devices/vent_scrubber.dm | 66 ++- 19 files changed, 356 insertions(+), 424 deletions(-) diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index 9509e69220..1423cc331d 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -2243,7 +2243,6 @@ req_access = null; req_access_txt = "57" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/stripes/line{ dir = 2 }, @@ -5297,9 +5296,6 @@ icon_state = "0-2" }, /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -86304,7 +86300,7 @@ ape aqm abt abN -atu +acw abt aad aad diff --git a/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm b/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm index 45c48726d3..786aff1038 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm @@ -14,7 +14,6 @@ anchored = TRUE density = TRUE - var/global/const/CIRC_LEFT = 1 var/global/const/CIRC_RIGHT = 2 @@ -39,8 +38,6 @@ var/transfer_moles = pressure_delta*air1.volume/(air2.temperature * R_IDEAL_GAS_EQUATION) last_pressure_delta = pressure_delta - - //Actually transfer the gas var/datum/gas_mixture/removed = air2.remove(transfer_moles) update_parents() diff --git a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm index 1ef52cc787..15f0ccddd2 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm @@ -1,211 +1,207 @@ -/* -Acts like a normal vent, but has an input AND output. -*/ -#define EXT_BOUND 1 -#define INPUT_MIN 2 -#define OUTPUT_MAX 4 - -/obj/machinery/atmospherics/components/binary/dp_vent_pump - icon = 'icons/obj/atmospherics/components/unary_devices.dmi' //We reuse the normal vent icons! - icon_state = "dpvent_map" - - //node2 is output port - //node1 is input port - - name = "dual-port air vent" - desc = "Has a valve and pump attached to it. There are two ports." - - level = 1 - var/frequency = 0 - var/id = null - var/datum/radio_frequency/radio_connection - +/* +Acts like a normal vent, but has an input AND output. +*/ +#define EXT_BOUND 1 +#define INPUT_MIN 2 +#define OUTPUT_MAX 4 + +/obj/machinery/atmospherics/components/binary/dp_vent_pump + icon = 'icons/obj/atmospherics/components/unary_devices.dmi' //We reuse the normal vent icons! + icon_state = "dpvent_map" + + //node2 is output port + //node1 is input port + + name = "dual-port air vent" + desc = "Has a valve and pump attached to it. There are two ports." + + level = 1 + var/frequency = 0 + var/id = null + var/datum/radio_frequency/radio_connection + var/on = FALSE - var/pump_direction = 1 //0 = siphoning, 1 = releasing - - var/external_pressure_bound = ONE_ATMOSPHERE - var/input_pressure_min = 0 - var/output_pressure_max = 0 - - var/pressure_checks = EXT_BOUND - //EXT_BOUND: Do not pass external_pressure_bound - //INPUT_MIN: Do not pass input_pressure_min - //OUTPUT_MAX: Do not pass output_pressure_max - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/on - on = TRUE - icon_state = "dpvent_map_on" - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/Destroy() + var/pump_direction = 1 //0 = siphoning, 1 = releasing + + var/external_pressure_bound = ONE_ATMOSPHERE + var/input_pressure_min = 0 + var/output_pressure_max = 0 + + var/pressure_checks = EXT_BOUND + //EXT_BOUND: Do not pass external_pressure_bound + //INPUT_MIN: Do not pass input_pressure_min + //OUTPUT_MAX: Do not pass output_pressure_max + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/on + on = TRUE + icon_state = "dpvent_map_on" + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/Destroy() SSradio.remove_object(src, frequency) - return ..() - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume - name = "large dual-port air vent" - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/on - on = TRUE - icon_state = "dpvent_map_on" - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/New() - ..() - var/datum/gas_mixture/air1 = AIR1 - var/datum/gas_mixture/air2 = AIR2 - air1.volume = 1000 - air2.volume = 1000 - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/update_icon_nopipes() - cut_overlays() - if(showpipe) - add_overlay(getpipeimage('icons/obj/atmospherics/components/unary_devices.dmi', "dpvent_cap")) - - if(!on || stat & (NOPOWER|BROKEN)) - icon_state = "vent_off" - return - - if(pump_direction) - icon_state = "vent_out" - else - icon_state = "vent_in" - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/process_atmos() - ..() - - if(!on) - return FALSE - var/datum/gas_mixture/air1 = AIR1 - var/datum/gas_mixture/air2 = AIR2 - - var/datum/gas_mixture/environment = loc.return_air() - var/environment_pressure = environment.return_pressure() - - if(pump_direction) //input -> external - var/pressure_delta = 10000 - - if(pressure_checks&EXT_BOUND) - pressure_delta = min(pressure_delta, (external_pressure_bound - environment_pressure)) - if(pressure_checks&INPUT_MIN) - pressure_delta = min(pressure_delta, (air1.return_pressure() - input_pressure_min)) - - if(pressure_delta > 0) - if(air1.temperature > 0) - var/transfer_moles = pressure_delta*environment.volume/(air1.temperature * R_IDEAL_GAS_EQUATION) - - var/datum/gas_mixture/removed = air1.remove(transfer_moles) - //Removed can be null if there is no atmosphere in air1 - if(!removed) - return FALSE - - loc.assume_air(removed) - air_update_turf() - - var/datum/pipeline/parent1 = PARENT1 - parent1.update = 1 - - else //external -> output - var/pressure_delta = 10000 - - if(pressure_checks&EXT_BOUND) - pressure_delta = min(pressure_delta, (environment_pressure - external_pressure_bound)) - if(pressure_checks&INPUT_MIN) - pressure_delta = min(pressure_delta, (output_pressure_max - air2.return_pressure())) - - if(pressure_delta > 0) - if(environment.temperature > 0) - var/transfer_moles = pressure_delta*air2.volume/(environment.temperature * R_IDEAL_GAS_EQUATION) - - var/datum/gas_mixture/removed = loc.remove_air(transfer_moles) - //removed can be null if there is no air in the location - if(!removed) - return FALSE - - air2.merge(removed) - air_update_turf() - - var/datum/pipeline/parent2 = PARENT2 - parent2.update = 1 - - return TRUE - - //Radio remote control - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/proc/set_frequency(new_frequency) - SSradio.remove_object(src, frequency) - frequency = new_frequency - if(frequency) - radio_connection = SSradio.add_object(src, frequency, filter = GLOB.RADIO_ATMOSIA) - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/proc/broadcast_status() - if(!radio_connection) - return 0 - - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.source = src - - signal.data = list( - "tag" = id, - "device" = "ADVP", - "power" = on, - "direction" = pump_direction?("release"):("siphon"), - "checks" = pressure_checks, - "input" = input_pressure_min, - "output" = output_pressure_max, - "external" = external_pressure_bound, - "sigtype" = "status" - ) - radio_connection.post_signal(src, signal, filter = GLOB.RADIO_ATMOSIA) - - return 1 - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/atmosinit() - ..() - if(frequency) - set_frequency(frequency) - broadcast_status() - -/obj/machinery/atmospherics/components/binary/dp_vent_pump/receive_signal(datum/signal/signal) - - if(!signal.data["tag"] || (signal.data["tag"] != id) || (signal.data["sigtype"]!="command")) - return 0 - if("power" in signal.data) - on = text2num(signal.data["power"]) - - if("power_toggle" in signal.data) - on = !on - - if("set_direction" in signal.data) - pump_direction = text2num(signal.data["set_direction"]) - - if("checks" in signal.data) - pressure_checks = text2num(signal.data["checks"]) - - if("purge" in signal.data) - pressure_checks &= ~1 - pump_direction = 0 - - if("stabalize" in signal.data) - pressure_checks |= 1 - pump_direction = 1 - - if("set_input_pressure" in signal.data) - input_pressure_min = Clamp(text2num(signal.data["set_input_pressure"]),0,ONE_ATMOSPHERE*50) - - if("set_output_pressure" in signal.data) - output_pressure_max = Clamp(text2num(signal.data["set_output_pressure"]),0,ONE_ATMOSPHERE*50) - - if("set_external_pressure" in signal.data) - external_pressure_bound = Clamp(text2num(signal.data["set_external_pressure"]),0,ONE_ATMOSPHERE*50) - - if("status" in signal.data) - spawn(2) - broadcast_status() - return //do not update_icon - //if(signal.data["tag"]) - spawn(2) - broadcast_status() - update_icon() - -#undef EXT_BOUND -#undef INPUT_MIN -#undef OUTPUT_MAX + return ..() + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume + name = "large dual-port air vent" + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/on + on = TRUE + icon_state = "dpvent_map_on" + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/New() + ..() + var/datum/gas_mixture/air1 = AIR1 + var/datum/gas_mixture/air2 = AIR2 + air1.volume = 1000 + air2.volume = 1000 + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/update_icon_nopipes() + cut_overlays() + if(showpipe) + add_overlay(getpipeimage('icons/obj/atmospherics/components/unary_devices.dmi', "dpvent_cap")) + + if(!on || !is_operational()) + icon_state = "vent_off" + return + + if(pump_direction) + icon_state = "vent_out" + else + icon_state = "vent_in" + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/process_atmos() + ..() + + if(!on) + return + var/datum/gas_mixture/air1 = AIR1 + var/datum/gas_mixture/air2 = AIR2 + + var/datum/gas_mixture/environment = loc.return_air() + var/environment_pressure = environment.return_pressure() + + if(pump_direction) //input -> external + var/pressure_delta = 10000 + + if(pressure_checks&EXT_BOUND) + pressure_delta = min(pressure_delta, (external_pressure_bound - environment_pressure)) + if(pressure_checks&INPUT_MIN) + pressure_delta = min(pressure_delta, (air1.return_pressure() - input_pressure_min)) + + if(pressure_delta > 0) + if(air1.temperature > 0) + var/transfer_moles = pressure_delta*environment.volume/(air1.temperature * R_IDEAL_GAS_EQUATION) + + var/datum/gas_mixture/removed = air1.remove(transfer_moles) + //Removed can be null if there is no atmosphere in air1 + if(!removed) + return + + loc.assume_air(removed) + air_update_turf() + + var/datum/pipeline/parent1 = PARENT1 + parent1.update = 1 + + else //external -> output + var/pressure_delta = 10000 + + if(pressure_checks&EXT_BOUND) + pressure_delta = min(pressure_delta, (environment_pressure - external_pressure_bound)) + if(pressure_checks&INPUT_MIN) + pressure_delta = min(pressure_delta, (output_pressure_max - air2.return_pressure())) + + if(pressure_delta > 0) + if(environment.temperature > 0) + var/transfer_moles = pressure_delta*air2.volume/(environment.temperature * R_IDEAL_GAS_EQUATION) + + var/datum/gas_mixture/removed = loc.remove_air(transfer_moles) + //removed can be null if there is no air in the location + if(!removed) + return + + air2.merge(removed) + air_update_turf() + + var/datum/pipeline/parent2 = PARENT2 + parent2.update = 1 + + //Radio remote control + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/proc/set_frequency(new_frequency) + SSradio.remove_object(src, frequency) + frequency = new_frequency + if(frequency) + radio_connection = SSradio.add_object(src, frequency, filter = GLOB.RADIO_ATMOSIA) + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/proc/broadcast_status() + if(!radio_connection) + return + + var/datum/signal/signal = new + signal.transmission_method = 1 //radio signal + signal.source = src + + signal.data = list( + "tag" = id, + "device" = "ADVP", + "power" = on, + "direction" = pump_direction?("release"):("siphon"), + "checks" = pressure_checks, + "input" = input_pressure_min, + "output" = output_pressure_max, + "external" = external_pressure_bound, + "sigtype" = "status" + ) + radio_connection.post_signal(src, signal, filter = GLOB.RADIO_ATMOSIA) + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/atmosinit() + ..() + if(frequency) + set_frequency(frequency) + broadcast_status() + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/receive_signal(datum/signal/signal) + if(!signal.data["tag"] || (signal.data["tag"] != id) || (signal.data["sigtype"]!="command")) + return + + if("power" in signal.data) + on = text2num(signal.data["power"]) + + if("power_toggle" in signal.data) + on = !on + + if("set_direction" in signal.data) + pump_direction = text2num(signal.data["set_direction"]) + + if("checks" in signal.data) + pressure_checks = text2num(signal.data["checks"]) + + if("purge" in signal.data) + pressure_checks &= ~1 + pump_direction = 0 + + if("stabalize" in signal.data) + pressure_checks |= 1 + pump_direction = 1 + + if("set_input_pressure" in signal.data) + input_pressure_min = Clamp(text2num(signal.data["set_input_pressure"]),0,ONE_ATMOSPHERE*50) + + if("set_output_pressure" in signal.data) + output_pressure_max = Clamp(text2num(signal.data["set_output_pressure"]),0,ONE_ATMOSPHERE*50) + + if("set_external_pressure" in signal.data) + external_pressure_bound = Clamp(text2num(signal.data["set_external_pressure"]),0,ONE_ATMOSPHERE*50) + + if("status" in signal.data) + spawn(2) + broadcast_status() + return //do not update_icon + //if(signal.data["tag"]) + spawn(2) + broadcast_status() + update_icon() + +#undef EXT_BOUND +#undef INPUT_MIN +#undef OUTPUT_MAX diff --git a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm index d2e6a3ae72..158c272543 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm @@ -12,7 +12,7 @@ Passive gate is similar to the regular pump except: name = "passive gate" desc = "A one-way air valve that does not require power." - can_unwrench = 1 + can_unwrench = TRUE var/on = FALSE var/target_pressure = ONE_ATMOSPHERE @@ -36,7 +36,7 @@ Passive gate is similar to the regular pump except: /obj/machinery/atmospherics/components/binary/passive_gate/process_atmos() ..() if(!on) - return 0 + return var/datum/gas_mixture/air1 = AIR1 var/datum/gas_mixture/air2 = AIR2 @@ -47,7 +47,7 @@ Passive gate is similar to the regular pump except: if(output_starting_pressure >= min(target_pressure,input_starting_pressure-10)) //No need to pump gas if target is already reached or input pressure is too low //Need at least 10 KPa difference to overcome friction in the mechanism - return 1 + return //Calculate necessary moles to transfer using PV = nRT if((air1.total_moles() > 0) && (air1.temperature>0)) @@ -73,7 +73,7 @@ Passive gate is similar to the regular pump except: /obj/machinery/atmospherics/components/binary/passive_gate/proc/broadcast_status() if(!radio_connection) - return 0 + return var/datum/signal/signal = new signal.transmission_method = 1 //radio signal @@ -89,8 +89,6 @@ Passive gate is similar to the regular pump except: radio_connection.post_signal(src, signal, filter = GLOB.RADIO_ATMOSIA) - return 1 - /obj/machinery/atmospherics/components/binary/passive_gate/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) @@ -137,7 +135,7 @@ Passive gate is similar to the regular pump except: /obj/machinery/atmospherics/components/binary/passive_gate/receive_signal(datum/signal/signal) if(!signal.data["tag"] || (signal.data["tag"] != id) || (signal.data["sigtype"]!="command")) - return 0 + return var/old_on = on //for logging @@ -159,16 +157,14 @@ Passive gate is similar to the regular pump except: broadcast_status() update_icon() - return /obj/machinery/atmospherics/components/binary/passive_gate/power_change() ..() update_icon() /obj/machinery/atmospherics/components/binary/passive_gate/can_unwrench(mob/user) - if(..()) - if(on) - to_chat(user, "You cannot unwrench [src], turn it off first!") - else - return 1 + . = ..() + if(. && on) + to_chat(user, "You cannot unwrench [src], turn it off first!") + return FALSE diff --git a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm index 0ec1b57a2e..c5242fb5cc 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm @@ -17,7 +17,7 @@ Thus, the two variables affect pump operation are set in New(): name = "gas pump" desc = "A pump that moves gas by pressure." - can_unwrench = 1 + can_unwrench = TRUE var/on = FALSE var/target_pressure = ONE_ATMOSPHERE @@ -36,7 +36,7 @@ Thus, the two variables affect pump operation are set in New(): return ..() /obj/machinery/atmospherics/components/binary/pump/update_icon_nopipes() - if(stat & NOPOWER) + if(!is_operational()) icon_state = "pump_off" return @@ -44,10 +44,8 @@ Thus, the two variables affect pump operation are set in New(): /obj/machinery/atmospherics/components/binary/pump/process_atmos() // ..() - if(stat & (NOPOWER|BROKEN)) - return 0 - if(!on) - return 0 + if(!on || !is_operational()) + return var/datum/gas_mixture/air1 = AIR1 var/datum/gas_mixture/air2 = AIR2 @@ -56,7 +54,7 @@ Thus, the two variables affect pump operation are set in New(): if((target_pressure - output_starting_pressure) < 0.01) //No need to pump gas if target is already reached! - return 1 + return //Calculate necessary moles to transfer using PV=nRT if((air1.total_moles() > 0) && (air1.temperature>0)) @@ -69,8 +67,6 @@ Thus, the two variables affect pump operation are set in New(): update_parents() - return 1 - //Radio remote control /obj/machinery/atmospherics/components/binary/pump/proc/set_frequency(new_frequency) SSradio.remove_object(src, frequency) @@ -80,7 +76,7 @@ Thus, the two variables affect pump operation are set in New(): /obj/machinery/atmospherics/components/binary/pump/proc/broadcast_status() if(!radio_connection) - return 0 + return var/datum/signal/signal = new signal.transmission_method = 1 //radio signal @@ -96,8 +92,6 @@ Thus, the two variables affect pump operation are set in New(): radio_connection.post_signal(src, signal, filter = GLOB.RADIO_ATMOSIA) - return 1 - /obj/machinery/atmospherics/components/binary/pump/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) @@ -121,8 +115,7 @@ Thus, the two variables affect pump operation are set in New(): if("power") on = !on investigate_log("Pump, [src.name], was turned [on ? "on" : "off"] by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS) - message_admins("Pump, [src.name], turned [on ? "on" : "off"] by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)]") - log_admin("[key_name(usr)] manipulated a pump at [x], [y], [z]") + message_admins("Pump, [src.name], turned [on ? "on" : "off"] by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]") . = TRUE if("pressure") var/pressure = params["pressure"] @@ -139,8 +132,7 @@ Thus, the two variables affect pump operation are set in New(): if(.) target_pressure = Clamp(pressure, 0, MAX_OUTPUT_PRESSURE) investigate_log("Pump, [src.name], was set to [target_pressure] kPa by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS) - message_admins("Pump, [src.name], was set to [target_pressure] kPa by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)]") - log_admin("[key_name(usr)] manipulated a pump at [x], [y], [z]") + message_admins("Pump, [src.name], was set to [target_pressure] kPa by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]") update_icon() /obj/machinery/atmospherics/components/binary/pump/atmosinit() @@ -150,7 +142,7 @@ Thus, the two variables affect pump operation are set in New(): /obj/machinery/atmospherics/components/binary/pump/receive_signal(datum/signal/signal) if(!signal.data["tag"] || (signal.data["tag"] != id) || (signal.data["sigtype"]!="command")) - return 0 + return var/old_on = on //for logging @@ -172,21 +164,18 @@ Thus, the two variables affect pump operation are set in New(): broadcast_status() update_icon() - return /obj/machinery/atmospherics/components/binary/pump/power_change() ..() update_icon() /obj/machinery/atmospherics/components/binary/pump/can_unwrench(mob/user) - if(..()) - var/turf/T = get_turf(src) - var/area/A = get_area(src) - if(!(stat & NOPOWER) && on) - to_chat(user, "You cannot unwrench [src], turn it off first!") - else - investigate_log("Pump, [src.name], was unwrenched by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS) - message_admins("Pump, [src.name], was unwrenched by [ADMIN_LOOKUPFLW(user)] at [ADMIN_COORDJMP(T)]") - log_admin("[key_name(usr)] unwrenched a pump at [x], [y], [z]") - return 1 - + . = ..() + var/area/A = get_area(src) + if(. && on && is_operational()) + to_chat(user, "You cannot unwrench [src], turn it off first!") + return FALSE + else + investigate_log("Pump, [src.name], was unwrenched by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS) + message_admins("Pump, [src.name], was unwrenched by [ADMIN_LOOKUPFLW(user)] at [A]") + return TRUE diff --git a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm index bbee3bcb59..7ef6cf2142 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm @@ -7,7 +7,7 @@ It's like a regular ol' straight pipe, but you can turn it on and off. name = "manual valve" desc = "A pipe valve" - can_unwrench = 1 + can_unwrench = TRUE var/frequency = 0 var/id = null @@ -57,8 +57,7 @@ It's like a regular ol' straight pipe, but you can turn it on and off. var/turf/T = get_turf(src) var/area/A = get_area(src) investigate_log("Valve, [src.name], was manipiulated by [key_name(usr)] at [x], [y], [z], [A]", "atmos") - message_admins("Valve, [src.name], was manipulated by [ADMIN_LOOKUPFLW(user)] at [ADMIN_COORDJMP(T)]") - log_admin("[key_name(usr)] manipulated a manual valve at [x], [y], [z]") + message_admins("Valve, [src.name], was manipulated by [ADMIN_LOOKUPFLW(user)] at [ADMIN_COORDJMP(T)], [A]") /obj/machinery/atmospherics/components/binary/valve/digital // can be controlled by AI @@ -71,7 +70,7 @@ It's like a regular ol' straight pipe, but you can turn it on and off. return src.attack_hand(user) /obj/machinery/atmospherics/components/binary/valve/digital/update_icon_nopipes(animation) - if(stat & NOPOWER) + if(!is_operational()) normalize_dir() icon_state = "dvalve_nopower" return diff --git a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm index 4d3cf733fb..227c34d9ca 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm @@ -17,7 +17,7 @@ Thus, the two variables affect pump operation are set in New(): name = "volumetric gas pump" desc = "A pump that moves gas by volume." - can_unwrench = 1 + can_unwrench = TRUE var/on = FALSE var/transfer_rate = MAX_TRANSFER_RATE @@ -34,7 +34,7 @@ Thus, the two variables affect pump operation are set in New(): on = TRUE /obj/machinery/atmospherics/components/binary/volume_pump/update_icon_nopipes() - if(stat & NOPOWER) + if(!is_operational()) icon_state = "volpump_off" return @@ -42,10 +42,8 @@ Thus, the two variables affect pump operation are set in New(): /obj/machinery/atmospherics/components/binary/volume_pump/process_atmos() // ..() - if(stat & (NOPOWER|BROKEN)) + if(!on || !is_operational()) return - if(!on) - return 0 var/datum/gas_mixture/air1 = AIR1 var/datum/gas_mixture/air2 = AIR2 @@ -56,7 +54,7 @@ Thus, the two variables affect pump operation are set in New(): var/output_starting_pressure = air2.return_pressure() if((input_starting_pressure < 0.01) || (output_starting_pressure > 9000)) - return 1 + return var/transfer_ratio = min(1, transfer_rate/air1.volume) @@ -66,8 +64,6 @@ Thus, the two variables affect pump operation are set in New(): update_parents() - return 1 - /obj/machinery/atmospherics/components/binary/volume_pump/proc/set_frequency(new_frequency) SSradio.remove_object(src, frequency) frequency = new_frequency @@ -76,7 +72,7 @@ Thus, the two variables affect pump operation are set in New(): /obj/machinery/atmospherics/components/binary/volume_pump/proc/broadcast_status() if(!radio_connection) - return 0 + return var/datum/signal/signal = new signal.transmission_method = 1 //radio signal @@ -91,8 +87,6 @@ Thus, the two variables affect pump operation are set in New(): ) radio_connection.post_signal(src, signal) - return 1 - /obj/machinery/atmospherics/components/binary/volume_pump/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) @@ -116,14 +110,12 @@ Thus, the two variables affect pump operation are set in New(): if(..()) return var/turf/T = get_turf(src) - //var/area/A = get_area(src) + var/area/A = get_area(src) switch(action) if("power") on = !on - investigate_log("Volume Pump, [src.name], was turned [on ? "on" : "off"] by [key_name(usr)] at [x], [y], [z], [loc.loc]", INVESTIGATE_ATMOS) - message_admins("Volume Pump, [src.name], turned [on ? "on" : "off"] by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)]") - log_admin("[key_name(usr)] manipulated a volume pump at [x], [y], [z]") - + investigate_log("Volume Pump, [src.name], was turned [on ? "on" : "off"] by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS) + message_admins("Volume Pump, [src.name], turned [on ? "on" : "off"] by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]") . = TRUE if("rate") var/rate = params["rate"] @@ -139,14 +131,13 @@ Thus, the two variables affect pump operation are set in New(): . = TRUE if(.) transfer_rate = Clamp(rate, 0, MAX_TRANSFER_RATE) - investigate_log("Volume Pump, [src.name], was set to [transfer_rate] L/s by [key_name(usr)] at [x], [y], [z], [loc.loc]", INVESTIGATE_ATMOS) - message_admins("Volume Pump, [src.name], was set to [transfer_rate] L/s by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)]") - log_admin("[key_name(usr)] manipulated a volume pump at [x], [y], [z]") + investigate_log("Volume Pump, [src.name], was set to [transfer_rate] L/s by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS) + message_admins("Volume Pump, [src.name], was set to [transfer_rate] L/s by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]") update_icon() /obj/machinery/atmospherics/components/binary/volume_pump/receive_signal(datum/signal/signal) if(!signal.data["tag"] || (signal.data["tag"] != id) || (signal.data["sigtype"]!="command")) - return 0 + return var/old_on = on //for logging @@ -169,22 +160,18 @@ Thus, the two variables affect pump operation are set in New(): broadcast_status() update_icon() - return /obj/machinery/atmospherics/components/binary/volume_pump/power_change() ..() update_icon() /obj/machinery/atmospherics/components/binary/volume_pump/can_unwrench(mob/user) - if(..()) - var/turf/T = get_turf(src) - //var/area/A = get_area(src) - if(!(stat & NOPOWER) && on) - to_chat(user, "You cannot unwrench [src], turn it off first!") - else - investigate_log("Volume Pump, [src.name], was unwrenched by [key_name(usr)] at [x], [y], [z], [loc.loc]", INVESTIGATE_ATMOS) - message_admins("Volume Pump, [src.name], was unwrenched by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)]") - log_admin("[key_name(usr)] unwrenched a volume pump at [x], [y], [z]") - - return 1 - + . = ..() + var/area/A = get_area(src) + if(. && on && is_operational()) + to_chat(user, "You cannot unwrench [src], turn it off first!") + return FALSE + else + investigate_log("Volume Pump, [src.name], was unwrenched by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS) + message_admins("Volume Pump, [src.name], was unwrenched by [ADMIN_LOOKUPFLW(usr)] at [A]") + return diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm index 87edfe8d11..c777e5fe17 100644 --- a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm +++ b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm @@ -2,7 +2,7 @@ name = "gas filter" icon_state = "filter_off" density = FALSE - can_unwrench = 1 + can_unwrench = TRUE var/on = FALSE var/target_pressure = ONE_ATMOSPHERE var/filter_type = "" @@ -11,7 +11,7 @@ /obj/machinery/atmospherics/components/trinary/filter/flipped icon_state = "filter_off_f" - flipped = 1 + flipped = TRUE // These two filter types have critical_machine flagged to on and thus causes the area they are in to be exempt from the Grid Check event. @@ -43,27 +43,21 @@ ..() /obj/machinery/atmospherics/components/trinary/filter/update_icon_nopipes() - - if(!(stat & NOPOWER) && on && NODE1 && NODE2 && NODE3) + if(on && NODE1 && NODE2 && NODE3 && is_operational()) icon_state = "filter_on[flipped?"_f":""]" return - icon_state = "filter_off[flipped?"_f":""]" /obj/machinery/atmospherics/components/trinary/filter/power_change() var/old_stat = stat ..() - if(stat & NOPOWER) - on = FALSE - if(old_stat != stat) + if(stat != old_stat) update_icon() /obj/machinery/atmospherics/components/trinary/filter/process_atmos() ..() - if(!on) - return 0 - if(!(NODE1 && NODE2 && NODE3)) - return 0 + if(!on || !(NODE1 && NODE2 && NODE3) || !is_operational()) + return var/datum/gas_mixture/air1 = AIR1 var/datum/gas_mixture/air2 = AIR2 @@ -73,7 +67,7 @@ if(output_starting_pressure >= target_pressure) //No need to mix if target is already full! - return 1 + return //Calculate necessary moles to transfer using PV=nRT @@ -113,8 +107,6 @@ update_parents() - return 1 - /obj/machinery/atmospherics/components/trinary/filter/atmosinit() set_frequency(frequency) return ..() @@ -167,3 +159,10 @@ investigate_log("was set to filter [filter_name] by [key_name(usr)]", INVESTIGATE_ATMOS) . = TRUE update_icon() + +/obj/machinery/atmospherics/components/trinary/filter/can_unwrench(mob/user) + . = ..() + if(. && on && is_operational()) + to_chat(user, "You cannot unwrench [src], turn it off first!") + return FALSE + diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm index 8c2622bb42..cb515ec75f 100644 --- a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm +++ b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm @@ -3,7 +3,7 @@ density = FALSE name = "gas mixer" - can_unwrench = 1 + can_unwrench = TRUE var/on = FALSE @@ -15,7 +15,7 @@ /obj/machinery/atmospherics/components/trinary/mixer/flipped icon_state = "mixer_off_f" - flipped = 1 + flipped = TRUE /obj/machinery/atmospherics/components/trinary/mixer/update_icon() cut_overlays() @@ -29,18 +29,15 @@ return ..() /obj/machinery/atmospherics/components/trinary/mixer/update_icon_nopipes() - if(!(stat & NOPOWER) && on && NODE1 && NODE2 && NODE3) + if(on && NODE1 && NODE2 && NODE3 && is_operational()) icon_state = "mixer_on[flipped?"_f":""]" return - icon_state = "mixer_off[flipped?"_f":""]" /obj/machinery/atmospherics/components/trinary/mixer/power_change() var/old_stat = stat ..() - if(stat & NOPOWER) - on = FALSE - if(old_stat != stat) + if(stat != old_stat) update_icon() /obj/machinery/atmospherics/components/trinary/mixer/New() @@ -51,10 +48,8 @@ /obj/machinery/atmospherics/components/trinary/mixer/process_atmos() ..() - if(!on) - return 0 - if(!(NODE1 && NODE2 && NODE3)) - return 0 + if(!on || !(NODE1 && NODE2 && NODE3) && !is_operational()) + return var/datum/gas_mixture/air1 = AIR1 var/datum/gas_mixture/air2 = AIR2 @@ -64,7 +59,7 @@ if(output_starting_pressure >= target_pressure) //No need to mix if target is already full! - return 1 + return //Calculate necessary moles to transfer using PV=nRT @@ -114,7 +109,7 @@ var/datum/pipeline/parent3 = PARENT3 parent3.update = TRUE - return TRUE + return /obj/machinery/atmospherics/components/trinary/mixer/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) @@ -167,4 +162,12 @@ node1_concentration = max(0, min(1, node1_concentration - value)) investigate_log("was set to [node2_concentration] % on node 2 by [key_name(usr)]", INVESTIGATE_ATMOS) . = TRUE - update_icon() \ No newline at end of file + update_icon() + + +/obj/machinery/atmospherics/components/trinary/filter/can_unwrench(mob/user) + . = ..() + if(. && on && is_operational()) + to_chat(user, "You cannot unwrench [src], turn it off first!") + return FALSE + diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/trinary_devices.dm b/code/modules/atmospherics/machinery/components/trinary_devices/trinary_devices.dm index 199d1907d8..14495cd237 100644 --- a/code/modules/atmospherics/machinery/components/trinary_devices/trinary_devices.dm +++ b/code/modules/atmospherics/machinery/components/trinary_devices/trinary_devices.dm @@ -6,7 +6,7 @@ device_type = TRINARY layer = GAS_FILTER_LAYER - var/flipped = 0 + var/flipped = FALSE /obj/machinery/atmospherics/components/trinary/SetInitDirections() switch(dir) @@ -44,4 +44,4 @@ Housekeeping and pipe network stuff node1_connect = turn(node1_connect, 180) node3_connect = turn(node3_connect, 180) - return list(node1_connect, node2_connect, node3_connect) \ No newline at end of file + return list(node1_connect, node2_connect, node3_connect) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index 96bd0e8f65..a5052e4632 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -115,7 +115,7 @@ occupant_overlay.dir = SOUTH occupant_overlay.pixel_y = 22 - if(on && is_operational() && !running_bob_anim) + if(on && !running_bob_anim && is_operational()) icon_state = "pod-on" running_bob_anim = TRUE run_bob_anim(TRUE, occupant_overlay) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/generator_input.dm b/code/modules/atmospherics/machinery/components/unary_devices/generator_input.dm index 5ed771d41c..a1a67e2542 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/generator_input.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/generator_input.dm @@ -10,12 +10,7 @@ var/update_cycle /obj/machinery/atmospherics/components/unary/generator_input/update_icon() - if(NODE1) - icon_state = "intact" - else - icon_state = "exposed" - - return + icon_state = NODE1 ? "intact" : "exposed" /obj/machinery/atmospherics/components/unary/generator_input/proc/return_exchange_air() return AIR1 diff --git a/code/modules/atmospherics/machinery/components/unary_devices/heat_exchanger.dm b/code/modules/atmospherics/machinery/components/unary_devices/heat_exchanger.dm index 30ff1ebc30..ee6e31175b 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/heat_exchanger.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/heat_exchanger.dm @@ -5,7 +5,7 @@ name = "heat exchanger" desc = "Exchanges heat between two input gases. Setup for fast heat transfer" - can_unwrench = 1 + can_unwrench = TRUE layer = LOW_OBJ_LAYER @@ -20,8 +20,6 @@ else icon_state = "he_exposed" - return - /obj/machinery/atmospherics/components/unary/heat_exchanger/atmosinit() if(!partner) var/partner_connect = turn(dir,180) @@ -36,11 +34,8 @@ /obj/machinery/atmospherics/components/unary/heat_exchanger/process_atmos() ..() - if(!partner) - return 0 - - if(SSair.times_fired <= update_cycle) - return 0 + if(!partner || SSair.times_fired <= update_cycle) + return update_cycle = SSair.times_fired partner.update_cycle = SSair.times_fired @@ -67,5 +62,3 @@ if(abs(other_old_temperature-partner_air_contents.temperature) > 1) partner.update_parents() - - return 1 diff --git a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm index 0bf467f234..d46d5b47a0 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm @@ -30,7 +30,7 @@ if(showpipe) add_overlay(getpipeimage(icon, "inje_cap", initialize_directions)) - if(!NODE1 || !on || stat & (NOPOWER|BROKEN)) + if(!NODE1 || !on || !is_operational()) icon_state = "inje_off" return @@ -47,8 +47,8 @@ ..() injecting = 0 - if(!on || stat & (NOPOWER|BROKEN)) - return 0 + if(!on || !is_operational()) + return var/datum/gas_mixture/air_contents = AIR1 @@ -62,11 +62,9 @@ update_parents() - return 1 - /obj/machinery/atmospherics/components/unary/outlet_injector/proc/inject() - if(on || injecting || stat & (NOPOWER|BROKEN)) - return 0 + if(on || injecting || !is_operational()) + return var/datum/gas_mixture/air_contents = AIR1 @@ -91,7 +89,7 @@ /obj/machinery/atmospherics/components/unary/outlet_injector/proc/broadcast_status() if(!radio_connection) - return 0 + return var/datum/signal/signal = new signal.transmission_method = 1 //radio signal @@ -108,8 +106,6 @@ radio_connection.post_signal(src, signal) - return 1 - /obj/machinery/atmospherics/components/unary/outlet_injector/atmosinit() set_frequency(frequency) broadcast_status() @@ -117,7 +113,7 @@ /obj/machinery/atmospherics/components/unary/outlet_injector/receive_signal(datum/signal/signal) if(!signal.data["tag"] || (signal.data["tag"] != id) || (signal.data["sigtype"]!="command")) - return 0 + return if("power" in signal.data) on = text2num(signal.data["power"]) @@ -139,8 +135,6 @@ broadcast_status() return //do not update_icon - //log_admin("DEBUG \[[world.timeofday]\]: outlet_injector/receive_signal: unknown command \"[signal.data["command"]]\"\n[signal.debug_print()]") - //return spawn(2) broadcast_status() update_icon() @@ -188,9 +182,8 @@ broadcast_status() /obj/machinery/atmospherics/components/unary/outlet_injector/can_unwrench(mob/user) - if(..()) - if (!(stat & NOPOWER|BROKEN) && on) - to_chat(user, "You cannot unwrench [src], turn it off first!") - else - return 1 + . = ..() + if(. && on && is_operational()) + to_chat(user, "You cannot unwrench [src], turn it off first!") + return FALSE diff --git a/code/modules/atmospherics/machinery/components/unary_devices/oxygen_generator.dm b/code/modules/atmospherics/machinery/components/unary_devices/oxygen_generator.dm index 65f2c37ac7..e31d1efa96 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/oxygen_generator.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/oxygen_generator.dm @@ -19,7 +19,7 @@ if(showpipe) add_overlay(getpipeimage('icons/obj/atmospherics/components/unary_devices.dmi', "scrub_cap", initialize_directions)) //it works for now - if(!NODE1 || !on || stat & BROKEN) + if(!NODE1 || !on || !is_operational()) icon_state = "o2gen_off" return diff --git a/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm b/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm index 7dd6d62314..e17a2f796c 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm @@ -3,7 +3,7 @@ desc = "For connecting portables devices related to atmospherics control." icon = 'icons/obj/atmospherics/components/unary_devices.dmi' icon_state = "connector_map" //Only for mapping purposes, so mappers can see direction - can_unwrench = 1 + can_unwrench = TRUE var/obj/machinery/portable_atmospherics/connected_device use_power = NO_POWER_USE level = 0 @@ -29,11 +29,10 @@ return ..() /obj/machinery/atmospherics/components/unary/portables_connector/can_unwrench(mob/user) - if(..()) - if(connected_device) - to_chat(user, "You cannot unwrench [src], detach [connected_device] first!") - else - return 1 + . = ..() + if(. && connected_device) + to_chat(user, "You cannot unwrench [src], detach [connected_device] first!") + return FALSE /obj/machinery/atmospherics/components/unary/portables_connector/portableConnectorReturnAir() return connected_device.portableConnectorReturnAir() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm index 6ea8b717bf..17fa3b2cdf 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm @@ -39,7 +39,6 @@ icon_state = icon_state_on else icon_state = initial(icon_state) - return /obj/machinery/atmospherics/components/unary/thermomachine/update_icon_nopipes() cut_overlays() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm index f52d2d9b2b..df44b4ca9e 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm @@ -10,7 +10,7 @@ desc = "Has a valve and pump attached to it." icon_state = "vent_map" use_power = IDLE_POWER_USE - can_unwrench = 1 + can_unwrench = TRUE welded = FALSE level = 1 layer = GAS_SCRUBBER_LAYER @@ -92,7 +92,7 @@ icon_state = "vent_welded" return - if(!NODE1 || !on || stat & (NOPOWER|BROKEN)) + if(!NODE1 || !on || !is_operational()) icon_state = "vent_off" return @@ -103,12 +103,12 @@ /obj/machinery/atmospherics/components/unary/vent_pump/process_atmos() ..() - if(stat & (NOPOWER|BROKEN)) + if(!is_operational()) return - if (!NODE1) + if(!NODE1) on = FALSE if(!on || welded) - return 0 + return var/datum/gas_mixture/air_contents = AIR1 var/datum/gas_mixture/environment = loc.return_air() @@ -150,8 +150,6 @@ air_update_turf() update_parents() - return 1 - //Radio remote control /obj/machinery/atmospherics/components/unary/vent_pump/proc/set_frequency(new_frequency) @@ -162,7 +160,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/proc/broadcast_status() if(!radio_connection) - return 0 + return var/datum/signal/signal = new signal.transmission_method = 1 //radio signal @@ -189,8 +187,6 @@ radio_connection.post_signal(src, signal, radio_filter_out) - return 1 - /obj/machinery/atmospherics/components/unary/vent_pump/atmosinit() //some vents work his own spesial way @@ -202,11 +198,11 @@ ..() /obj/machinery/atmospherics/components/unary/vent_pump/receive_signal(datum/signal/signal) - if(stat & (NOPOWER|BROKEN)) + if(!is_operational()) return //log_admin("DEBUG \[[world.timeofday]\]: /obj/machinery/atmospherics/components/unary/vent_pump/receive_signal([signal.debug_print()])") if(!signal.data["tag"] || (signal.data["tag"] != id_tag) || (signal.data["sigtype"]!="command")) - return 0 + return if("purge" in signal.data) pressure_checks &= ~EXT_BOUND @@ -257,7 +253,6 @@ //log_admin("DEBUG \[[world.timeofday]\]: vent_pump/receive_signal: unknown command \"[signal.data["command"]]\"\n[signal.debug_print()]") broadcast_status() update_icon() - return /obj/machinery/atmospherics/components/unary/vent_pump/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/weldingtool)) @@ -266,7 +261,8 @@ playsound(loc, WT.usesound, 40, 1) to_chat(user, "You begin welding the vent...") if(do_after(user, 20*W.toolspeed, target = src)) - if(!src || !WT.isOn()) return + if(!src || !WT.isOn()) + return playsound(src.loc, 'sound/items/welder2.ogg', 50, 1) if(!welded) user.visible_message("[user] welds the vent shut.", "You weld the vent shut.", "You hear welding.") @@ -282,11 +278,10 @@ return ..() /obj/machinery/atmospherics/components/unary/vent_pump/can_unwrench(mob/user) - if(..()) - if(!(stat & NOPOWER) && on) - to_chat(user, "You cannot unwrench [src], turn it off first!") - else - return 1 + . = ..() + if(. && on && is_operational()) + to_chat(user, "You cannot unwrench [src], turn it off first!") + return FALSE /obj/machinery/atmospherics/components/unary/vent_pump/examine(mob/user) ..() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm index 095473c32c..d1a010df48 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm @@ -8,7 +8,7 @@ use_power = IDLE_POWER_USE idle_power_usage = 10 active_power_usage = 60 - can_unwrench = 1 + can_unwrench = TRUE welded = FALSE level = 1 layer = GAS_SCRUBBER_LAYER @@ -17,12 +17,12 @@ var/on = FALSE var/scrubbing = SCRUBBING //0 = siphoning, 1 = scrubbing - var/scrub_CO2 = 1 - var/scrub_Toxins = 0 - var/scrub_N2O = 0 - var/scrub_BZ = 0 - var/scrub_Freon = 0 - var/scrub_WaterVapor = 0 + var/scrub_CO2 = TRUE + var/scrub_Toxins = FALSE + var/scrub_N2O = FALSE + var/scrub_BZ = FALSE + var/scrub_Freon = FALSE + var/scrub_WaterVapor = FALSE var/volume_rate = 200 @@ -58,12 +58,8 @@ return ..() /obj/machinery/atmospherics/components/unary/vent_scrubber/auto_use_power() - if(!powered(power_channel)) - return 0 - if(!on || welded) - return 0 - if(stat & (NOPOWER|BROKEN)) - return 0 + if(!on || welded || !is_operational() || !powered(power_channel)) + return FALSE var/amount = idle_power_usage @@ -86,7 +82,7 @@ if(widenet) amount += amount * (adjacent_turfs.len * (adjacent_turfs.len / 2)) use_power(amount, power_channel) - return 1 + return TRUE /obj/machinery/atmospherics/components/unary/vent_scrubber/update_icon_nopipes() cut_overlays() @@ -97,7 +93,7 @@ icon_state = "scrub_welded" return - if(!NODE1 || !on || stat & (NOPOWER|BROKEN)) + if(!NODE1 || !on || !is_operational()) icon_state = "scrub_off" return @@ -113,7 +109,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/proc/broadcast_status() if(!radio_connection) - return 0 + return FALSE var/datum/signal/signal = new signal.transmission_method = 1 //radio signal @@ -143,7 +139,7 @@ radio_connection.post_signal(src, signal, radio_filter_out) - return 1 + return TRUE /obj/machinery/atmospherics/components/unary/vent_scrubber/atmosinit() radio_filter_in = frequency==initial(frequency)?(GLOB.RADIO_FROM_AIRALARM):null @@ -156,20 +152,21 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/process_atmos() ..() - if(stat & (NOPOWER|BROKEN)) - return - if (!NODE1) + if(!is_operational()) + return FALSE + if(!NODE1) on = FALSE if(!on || welded) - return 0 + return FALSE scrub(loc) if(widenet) - for (var/turf/tile in adjacent_turfs) + for(var/turf/tile in adjacent_turfs) scrub(tile) + return TRUE /obj/machinery/atmospherics/components/unary/vent_scrubber/proc/scrub(var/turf/tile) - if (!istype(tile)) - return 0 + if(!istype(tile)) + return FALSE var/datum/gas_mixture/environment = tile.return_air() var/datum/gas_mixture/air_contents = AIR1 @@ -189,8 +186,8 @@ //Take a gas sample var/datum/gas_mixture/removed = tile.remove_air(transfer_moles) //Nothing left to remove from the tile - if (isnull(removed)) - return + if(isnull(removed)) + return FALSE var/list/removed_gases = removed.gases //Filter it @@ -242,8 +239,8 @@ tile.air_update_turf() else //Just siphoning all air - if (air_contents.return_pressure()>=50*ONE_ATMOSPHERE) - return + if(air_contents.return_pressure()>=50*ONE_ATMOSPHERE) + return FALSE var/transfer_moles = environment.total_moles()*(volume_rate/environment.volume) @@ -254,7 +251,7 @@ update_parents() - return 1 + return TRUE //There is no easy way for an object to be notified of changes to atmos can pass flags_1 @@ -273,7 +270,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/receive_signal(datum/signal/signal) - if(stat & (NOPOWER|BROKEN)) + if(!is_operational()) return if(!signal.data["tag"] || (signal.data["tag"] != id_tag) || (signal.data["sigtype"]!="command")) return 0 @@ -363,11 +360,10 @@ return ..() /obj/machinery/atmospherics/components/unary/vent_scrubber/can_unwrench(mob/user) - if(..()) - if (!(stat & NOPOWER) && on) - to_chat(user, "You cannot unwrench [src], turn it off first!") - else - return 1 + . = ..() + if(. && on && is_operational()) + to_chat(user, "You cannot unwrench [src], turn it off first!") + return FALSE /obj/machinery/atmospherics/components/unary/vent_scrubber/can_crawl_through() return !welded From cc49f70de812e49903f9f048283456175ef9adc3 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 20:11:50 -0500 Subject: [PATCH 56/80] [MIRROR] Make scrubber code use temporary vars consistently (#2862) * Make scrubber code use temporary vars consistently * fixes merge mess --- .../components/unary_devices/vent_scrubber.dm | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm index d1a010df48..d92b061cec 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm @@ -196,39 +196,39 @@ filtered_out.temperature = removed.temperature if(scrub_Toxins && removed_gases["plasma"]) - filtered_out.assert_gas("plasma") + filtered_out.add_gas("plasma") filtered_gases["plasma"][MOLES] = removed_gases["plasma"][MOLES] removed.gases["plasma"][MOLES] = 0 if(scrub_CO2 && removed_gases["co2"]) - filtered_out.assert_gas("co2") - filtered_out.gases["co2"][MOLES] = removed_gases["co2"][MOLES] - removed.gases["co2"][MOLES] = 0 + filtered_out.add_gas("co2") + filtered_gases["co2"][MOLES] = removed_gases["co2"][MOLES] + removed_gases["co2"][MOLES] = 0 if(removed_gases["agent_b"]) - filtered_out.assert_gas("agent_b") - filtered_out.gases["agent_b"][MOLES] = removed_gases["agent_b"][MOLES] - removed.gases["agent_b"][MOLES] = 0 + filtered_out.add_gas("agent_b") + filtered_gases["agent_b"][MOLES] = removed_gases["agent_b"][MOLES] + removed_gases["agent_b"][MOLES] = 0 if(scrub_N2O && removed_gases["n2o"]) - filtered_out.assert_gas("n2o") - filtered_out.gases["n2o"][MOLES] = removed_gases["n2o"][MOLES] - removed.gases["n2o"][MOLES] = 0 + filtered_out.add_gas("n2o") + filtered_gases["n2o"][MOLES] = removed_gases["n2o"][MOLES] + removed_gases["n2o"][MOLES] = 0 if(scrub_BZ && removed_gases["bz"]) - filtered_out.assert_gas("bz") - filtered_out.gases["bz"][MOLES] = removed_gases["bz"][MOLES] - removed.gases["bz"][MOLES] = 0 + filtered_out.add_gas("bz") + filtered_gases["bz"][MOLES] = removed_gases["bz"][MOLES] + removed_gases["bz"][MOLES] = 0 if(scrub_Freon && removed_gases["freon"]) - filtered_out.assert_gas("freon") - filtered_out.gases["freon"][MOLES] = removed_gases["freon"][MOLES] - removed.gases["freon"][MOLES] = 0 + filtered_out.add_gas("freon") + filtered_gases["freon"][MOLES] = removed_gases["freon"][MOLES] + removed_gases["freon"][MOLES] = 0 if(scrub_WaterVapor && removed_gases["water_vapor"]) - filtered_out.assert_gas("water_vapor") - filtered_out.gases["water_vapor"][MOLES] = removed_gases["water_vapor"][MOLES] - removed.gases["water_vapor"][MOLES] = 0 + filtered_out.add_gas("water_vapor") + filtered_gases["water_vapor"][MOLES] = removed_gases["water_vapor"][MOLES] + removed_gases["water_vapor"][MOLES] = 0 removed.garbage_collect() From 3e2f63879389e5f64b029f979cd5edcecc6cdec2 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 20:20:56 -0500 Subject: [PATCH 57/80] [MIRROR] Cleans up internal temp code (#2853) * Cleans up internal temp code (#30715) * cleanup * Update living.dm * Update atoms.dm * Update objs.dm * Cleans up internal temp code * Update living.dm * Update living.dm * fixes then ommits mob_temp stuff. * wew lad. commenting shit out is picky af. --- code/game/atoms.dm | 5 ++- code/game/mecha/mecha.dm | 2 +- .../structures/crates_lockers/closets.dm | 4 +++ .../transit_tubes/transit_tube_pod.dm | 3 ++ .../components/unary_devices/cryo.dm | 7 ++++ code/modules/mob/living/living.dm | 36 ++++++++----------- 6 files changed, 34 insertions(+), 23 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 6698cab092..508459188b 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -636,4 +636,7 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons) return L.AllowDrop() ? L : get_turf(L) /atom/Entered(atom/movable/AM, atom/oldLoc) - SendSignal(COMSIG_ATOM_ENTERED, AM, oldLoc) \ No newline at end of file + SendSignal(COMSIG_ATOM_ENTERED, AM, oldLoc) + +/atom/proc/return_temperature() + return diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 200f771058..ed2a1ff82a 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -766,7 +766,7 @@ . = t_air.return_pressure() return -/obj/mecha/proc/return_temperature() +/obj/mecha/return_temperature() var/datum/gas_mixture/t_air = return_air() if(t_air) . = t_air.return_temperature() diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 4f1348f3da..e15f0446a5 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -450,3 +450,7 @@ /obj/structure/closet/AllowDrop() return TRUE + + +/obj/structure/closet/return_temperature() + return \ No newline at end of file diff --git a/code/game/objects/structures/transit_tubes/transit_tube_pod.dm b/code/game/objects/structures/transit_tubes/transit_tube_pod.dm index 1cf8e330fe..16d1072779 100644 --- a/code/game/objects/structures/transit_tubes/transit_tube_pod.dm +++ b/code/game/objects/structures/transit_tubes/transit_tube_pod.dm @@ -180,3 +180,6 @@ if(TT.has_exit(direction)) setDir(direction) return + +/obj/structure/transit_tube_pod/return_temperature() + return air_contents.temperature \ No newline at end of file diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index a5052e4632..76455ada49 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -396,4 +396,11 @@ /obj/machinery/atmospherics/components/unary/cryo_cell/can_see_pipes() return 0 //you can't see the pipe network when inside a cryo cell. +/obj/machinery/atmospherics/components/unary/cryo_cell/return_temperature() + var/datum/gas_mixture/G = AIR1 + + if(G.total_moles() > 10) + return G.temperature + return ..() + #undef CRYOMOBS diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index f31ee2fa95..649e19ba29 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -712,30 +712,24 @@ floating = 0 // If we were without gravity, the bouncing animation got stopped, so we make sure to restart it in next life(). /mob/living/proc/get_temperature(datum/gas_mixture/environment) - var/loc_temp = T0C - if(istype(loc, /obj/mecha)) - var/obj/mecha/M = loc - loc_temp = M.return_temperature() - - else if(istype(loc, /obj/structure/transit_tube_pod)) - loc_temp = environment.temperature - + var/loc_temp = environment ? environment.temperature : T0C + if(isobj(loc)) + var/obj/oloc = loc + var/obj_temp = oloc.return_temperature() + if(obj_temp != null) + loc_temp = obj_temp +/* if(ismob(loc)) + var/mob/living/mloc = loc + var/mob_temp = mloc.return_temperature() + if(mloc == DEAD) + loc_temp = get_turf(loc) //wew + else + loc_temp = mob_temp +*/ +//just gunna ommit this for now, it's on the 'to figgur out' list. else if(isspaceturf(get_turf(src))) var/turf/heat_turf = get_turf(src) loc_temp = heat_turf.temperature - - else if(istype(loc, /obj/machinery/atmospherics/components/unary/cryo_cell)) - var/obj/machinery/atmospherics/components/unary/cryo_cell/C = loc - var/datum/gas_mixture/G = C.AIR1 - - if(G.total_moles() < 10) - loc_temp = environment.temperature - else - loc_temp = G.temperature - - else - loc_temp = environment.temperature - return loc_temp /mob/living/proc/get_standard_pixel_x_offset(lying = 0) From c85e409872e9aef94e46061d1f41da548d08936b Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 20:23:56 -0500 Subject: [PATCH 58/80] [MIRROR] Removes the multiverse and its sword (#2573) * Merge pull request #30283 from pubby/multiverse Removes the multiverse and its sword * Removes the multiverse and its sword --- code/game/gamemodes/gang/gang_datum.dm | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/code/game/gamemodes/gang/gang_datum.dm b/code/game/gamemodes/gang/gang_datum.dm index b7b20a7311..510883ada5 100644 --- a/code/game/gamemodes/gang/gang_datum.dm +++ b/code/game/gamemodes/gang/gang_datum.dm @@ -331,16 +331,3 @@ adjust_influence(bawss, amount/bosses.len) announce_to_mind(bawss, "[name] Gang: [amount/bosses.len] influence given from internal automatic restructuring.") -//Multiverse - -/datum/gang/multiverse - dom_attempts = 0 - fighting_style = "multiverse" - is_deconvertible = FALSE - -/datum/gang/multiverse/New(loc, multiverse_override) - name = multiverse_override - ganghud = new() - -/datum/gang/multiverse/income() - return From 21088ca9ba597037a460a758f1e4b8ffc38d1c5d Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 20:23:57 -0500 Subject: [PATCH 59/80] Automatic changelog generation for PR #2573 [ci skip] --- html/changelogs/AutoChangeLog-pr-2573.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2573.yml diff --git a/html/changelogs/AutoChangeLog-pr-2573.yml b/html/changelogs/AutoChangeLog-pr-2573.yml new file mode 100644 index 0000000000..1bc36f7ec4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2573.yml @@ -0,0 +1,4 @@ +author: "Pubby" +delete-after: True +changes: + - rscdel: "The multiverse sword is toast" From 235236c5a9bb38ace72e96df6652ba9f4dc04465 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Fri, 22 Sep 2017 21:56:34 -0500 Subject: [PATCH 60/80] updates tool folder (#2905) * updates tool folder * impliments #2874 changes --- html/ban.png | Bin 0 -> 773 bytes html/changelog.css | 5 + html/chrome-wrench.png | Bin 0 -> 571 bytes html/coding.png | Bin 0 -> 566 bytes tools/CreditsTool/CreditsTool.csproj | 47 +++ tools/CreditsTool/CreditsTool.exe | Bin 0 -> 11776 bytes tools/CreditsTool/Program.cs | 150 ++++++++ tools/CreditsTool/UpdateCreditsDMI.sh | 13 + .../github_webhook_processor.php | 328 ++++++++++++++---- tools/WebhookProcessor/secret.php | 4 + tools/ss13_genchangelog.py | 7 +- 11 files changed, 488 insertions(+), 66 deletions(-) create mode 100644 html/ban.png create mode 100644 html/chrome-wrench.png create mode 100644 html/coding.png create mode 100644 tools/CreditsTool/CreditsTool.csproj create mode 100644 tools/CreditsTool/CreditsTool.exe create mode 100644 tools/CreditsTool/Program.cs create mode 100644 tools/CreditsTool/UpdateCreditsDMI.sh diff --git a/html/ban.png b/html/ban.png new file mode 100644 index 0000000000000000000000000000000000000000..54f68f47708dc908312cd7555e9e9c273c642ad0 GIT binary patch literal 773 zcmV+g1N!`lP)){4J?}Yiyv5Zf)Pcg zelUmv2~`{lw8M1pPD_JU+<20cnatdK-?``B$6x~<4%lM>+$Ny31gLZZRtrKUCWs{* zBnpWz3}9mO@l#8AvPR-DJJ4K~PcC2`2x%I`)9tPNng*Ueh433{9KdlO6(~;3C9flt zQ6aXS5A%t{Co~?|@24UneUBFxV!}531(F%>>=bxe{)|9iFBD}NKA#86%2I0N(PNof z2^L~mbqy$HT7}ftH!5+QIW;ly9$s%H91aJ{oDMrF$tffnPnhaV*b2j09n)WD7Mld2 z)|bg-z_Kjn<`&@gx}CE#vrVMZ@MV~-t^xw}KuZ8PBLIgQ0dF}_w*#?N6_}q-rBsz9 zN#k%j%aC5v>;+@BEWi~XZH!N$0=`Q02nTC@{e!Y>Ed`Dqsqv4Ey|oJhkHI_lB^q^< zF+A8xKUMCrSJj7Kzxp_&>j;u3(dRFwWWT=}w|j>q`X8nKV>!cv+h}3TfQ3$>g)v4n zVDtEcFGmtX4jUr#KWJ3I2l9k}GyVlMfhZ}8QLOR4*@8~auB0Ibn_K+xXHR9f3lYPM z*26$j0pw{!loh~k1$KJ!$p*MWGL2e1+tJqeVBp?386MqU0oW{?z6ksNY;!fUQGj|3 z{Y*i;bmann^G3g9B-6<;YN>&GZKs&sL|R(V&SIJPjrfjumzZGAxe&j0{UYCewO3jo zb0$^9%ygMLcH!Zv@JZfPQEt)nY^kCsrtisQ)@HS-dN!LLc`_;uOydO8z@e*#Mc0&$ zTL~?9>v9mxxa3w}@7_(HKK=Odp6uGSYwphHj~+dG`0(NC!>`sId%gC^s~xA`Za(p*Y1#ctmo9nN zUOamA==t;K3uoS$v;A59;``I4O)H*rZ^eOETeohVGG)r%3-7zvJYKr*<)n>I4jnqw zzVhMb6K|_$U)r;0&zi%p=Inf)KmB%ldwXE>)mht~&Di#=V&1)-XWy+}y?WKERfi8B z-f`yLl+90{KYw1o=+3UQ?~WZicK!PG6)RR0&%V>M?$PoCFXzskJA23TmgNuc-o3kY z|I6)X-d4`PTQcX~%+74n{n?)L?`O}Redf%Wo|QM|&!7MQ|9=LW0mYvzj0_Bk3_2hiKykvrKBFPA zskxbj(KWWEtBECnk4>Sw%UsYVoO4o3B%cgpViXh8Om+`x3r9u=hDk!4EUdcxnnC_u zs(~sTaUAxR!3?Y|T>2*QlFAGWhU^EMx#eQGopqSlCYkwix$uZH+fEYWweyS+5b;y% z4h^$Xw~iJy4VmQa#iL=Y=c6^#K--O1t>wT3%`+1j16)cZ0sWxZs1|?#%oAy_tE;aU9r0IBX~)l}i1WBQpJpzrBCdF9JX73@b97PFb;7e6np@ z?R8y;OeS+F(6C=96c&bcLe7;+1?u&>T9c4Jf{V#y!iU2loIgH;^q8P&ngTf*h5@D_ z;o)>w1w>dOV=d;l+x!{i*_qO|RF3TCE1LSZtPn zXpnJ#I{*#_`}}_J`h2Q?oz8%dRq$Xia1Ra=iGCQtS5V%DwDs(y>qucG?&9~n}p^##A_WKM(NT}z)=s6>H5MNBwOvU5zLpOnC zS%2E?_AfOwoL{edWNbcARM!8A;hIu)#Dr}+&hG*Y0N_IWL<|H~O8@`>07*qoM6N<$ Ef(u3dw*UYD literal 0 HcmV?d00001 diff --git a/tools/CreditsTool/CreditsTool.csproj b/tools/CreditsTool/CreditsTool.csproj new file mode 100644 index 0000000000..68187a0815 --- /dev/null +++ b/tools/CreditsTool/CreditsTool.csproj @@ -0,0 +1,47 @@ + + + + + Debug + AnyCPU + {BA95D3D9-1940-4183-8563-BE617D752D0B} + Exe + CreditsTool + CreditsTool + v4.6.1 + 512 + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tools/CreditsTool/CreditsTool.exe b/tools/CreditsTool/CreditsTool.exe new file mode 100644 index 0000000000000000000000000000000000000000..da0187aaf7c3e8d34f9575227f9706759aa91a0d GIT binary patch literal 11776 zcmeHNe{dXkb$`3Jx3@Y;XWgA8IguQ#Wjmbp<1AUWiCtN?Y{|A_OO`Fgj)}v0rCUoI z-`!qzSF&Y|f`A6dU_zjTHg3`(beKY?P*O5L=+KlIH$xfHlxgWC6XPbpOo3rS8PaJ9 zA?fFR_xA2&?36z`(;1qz_w9S{`@ZkJ?|bk2-S2l#qwji%LPVtCe)CPDuj0wq9s%DP zETcKr_O%#2S@Z0=uS$oXT{k&vxq8vDXB;E1PaB1T?demd?#vZ*tDp}Znb7lg)=bye zM>mvIj}H?amO`XF@z}}0+Dp_<_eUdu#v;3r8_ZzMTfb1HBb@)wKr!NjqlFh9LV&%eYxr7w)QS4-rPY z@+y`%?3+wsdOZcd*Kq7)lB&YGve%8NmL8Q(!#4WHjnJmMJ4Z-i{Ok9US0 z6RbA|)CbZbi0ML&bjduUx)w+1ND*`eC@`__YxW+~(qkf0-D4j2%MT|EUf}=^r z`7s#Rgu=ZE9g|v9vZltqnbGKNKSb0M(NqglwTapk$}yU(i!1TEM7_NhL|0?H-kF!7 z9HWcwd=m2UdPryxZUe`L<571VKr$AOx$TUsim$TQ18LLynt*Qb(c1W`cwGu^HUBf9ZwLQp*YF<&odN$>*YL+c|0npvP#VLNFV?>g{07_; zAOiiDWaqCiT#?QDHenbS5jZI%$|cnS+U^ACpkz;&{>0Z47lj*j{(&>sh1MM(M1xOu zgRE_;>vSU8rTUsw8f5oWO_RMDNZb1KiJIn*u>OrrZTe$2R?Mi|3y@UeioFF$^OkLK zrP=NSn%WA`eQR845@a&W*f#Lgc-Z+VXGlqH2PtY=YreBii#%v;`H-6uDWnHAlbK#BP>E zOM)ocX!p1LILfPiWg?m&gbQny@WN4UdzvFAFGgA4B7zQx=mK)9c-2(-juFD8U#;|= znb-IIHQ)DJt9-AQYkc3=lzhK>x7_B-RXhHypX0LQoM{lkzVHkyrXt4`F$UjPKNABz zSU#JgS0i!?qg1b`9W;nH1}aiq|AIjAEeZvkLXcdMfv#HF&jgzB+Ae2Fgq|Bk3PfY2 zBm2Z{A`C&tQi!h8@fLZJbJuaRdk97@z=tH}&Ruw-Z>bjB-soE+FY?3^Q>?F6Zt_DO z?Tj>uRVk{S>j9r=T&Nn^QrPAMoJNny%V?ZmBdW+*YEkQ z>7I07PhT(AAfCZFz>6@x{yw7r!t)9Yt)K85t1#oT#6LsnqX_8wJ0_@zh@gUL{ee41 zhVWbl{UOYw^?P&n6bs|RYeG8F_UYOh_(!iveT3x+DWEiNo^t3ym_!7>dHo>7Mev!% z@PsUMh<6Xua7XYsr>uu>qU|C7snYl4SHmj(TEGkP%i&eD8lzC@FXTr;Dt%qupr|y9 zZYs?Ph`ovwrDWu?+D8A#vzzV|d{ucK@4cs$%jk8h;QUzPz7Gn`7z}#7B3)La^fB$S zs!~SqKPzNX;dg`csKoH6(37BKcmjR@4*sb0l#uy~_B?ETDa1OTfQ*WrGUIi^?kAYvFPT`p0tNuQT%D7}#-Kd|OS zM7*B1mnjL|18CzM?L@sIj>wx#&mmzP zamH&J`F@FgzE`~)_?zmKGz85yAp151&lkXd zR{JpU&#DrSLV1t$2ra4~mqw%(<&V%h6M9U*PXm4}^jYbsw4c5pos>r9uL7RO411jJ z(-?*$4RliCzJt;s@J~un`Dv+FM8J?*q|4HG1pWxU8oDa|y%?h<6{H`6e<<`L>0XSH z>q((jRE|bFQ1x|~p=s>+UjR(f_W@f-3Z-d1MMKlnNAC?SQzzXSBFP1=3;2?NBnys! zdjvc!;9(k)9+18yeN+0j^g6y$@S3qH@@>@GW0CJ-My^5~$*7<(o(Vy%1{K0iE(xep zBVao<18zWtg)qHZsEzvQQTkK*F8v$5LYAZ~L+Og^M|c^aY|ED<^XcPSp1+z^%SGkO z{2E!&Hz^;)9OBs`)5GG#1ESw`2DW7~y)-ghn9G}vF_kkoMU;O zSzw6*(@h)fgw%Vjgxv|Y%!+%{6kn&*$4 zAud;B?u<1f%4@tZ6O_!5W1PcgGR>*SGhmloOdmHL7sC)OV%JF%b5m{!^J~4Nfhz<0 z#|>{**f?QjfmM0TnGe#69js~OY1GWy&O(V8_rKYS&PYhU9B2DFsm4*qkXoxD>H)}XlM2(Nl<)=)C{PFP| z1Tl$kt|hcQg^rxV%%|IpdBb-+@Egovb%f<$fE8EEYeqT{Lsj>eCdzfiD$8LY2Ir96 zu2QEXQ}_NRn8{ zkDOtpVv(>RHGCfL9v7zb_B_@Ce`(xrJ9)z+KT5%P#!N3js|=P?f?%Xk_7IxE#6D?H|~Z$xQn%Q@;dkti2-egVQ{%<#Q)SarRH@|$!xUj#*T?;V6X#fjFW zo!Eh;X*2C32UM0Uf_0iC8~<`>G3h*R9s6r;FM_M%K1T&m4h^hmVd^gEor8{9q2ny1 z3OGej3)`5kvXOzV0zAM+f=z=o1)UChu?OtYBK6P`o^0KM4EwZ>Xvb0LX1fdEa&H|v zZD1aF7PPQs*5smPkj7~QBjA73w-5Xr{+a0Em3tdB4}U$}4tm@{$LKKnmijbSw`QQ* z;jbOFIcS;@8mQU#bCG)CtxLP$_ZDCj!Y9)Zj)@~Ht@7w}(en&+=){oi2BW>vSm6J* zWAHo=Ka2PmjGevUNY7#9I(!TKDvx0K!$V+lvbfO@>Gi{AfXB}GCg(*^uOAi;B?qI-sb2l_{9rG**4ELhu zdvN-xa7xt_Ie=hI60P&IpMx*c=*8(`?VITyc*+>{VL1?ksxo3nlK}fuGxAvBtz&nIZZB2EBb9vBV~=G2YEB@m|1KEU_)IBe6pvSOt({ zVFJ4~Oj2SgruwSzVEd{rC50tOMM!~EYimT8!AeSSON+u6sAf|2Z3s?pz+rp7s+gwB z;5H;BSOb?w#=~D579(F9hAAnre190)HLV6PvHU=M`6Kvh!&YTA6vnTh%a5@27@mnp z$u&BNz!U~xXg%YkuZ1Hv@k-s{5ZOb z{u*48wGg;6+7KcwrbMK~Q56wd{ye*$7{!5G3q>R?9tq2uA1ojGy6#7GVrq{h-9oXt zs4(w0v!XifD;G{3ziI1B4`^T9oq13EyV0Fm@6)#(|NQo`ZLM!L^KZWK8wXC|1DP6= zRgELV$qT7)Q%#t-ty=JcvOt^=9hDH`9Wf0Hh$x#lDU}*ajG{~+rzJ);QUs-mx?{a{ zegT$-oAUd&hEmk3N#ffye$nF3qLXsd34A{ovkT=NJb(niwv2<&a}e-Qy${D!4tqk!Lnu*an3m0tM2n&3D6-{7;{HB4}P`PtuS z;u(a$X_AQ^I!#z01S!CzycN&mG=cpCZ={X^8^NY(4D<-#e*dqv=AzUK|+ zZ)$o-$ncKG|F;!;*d8e8!fGd#<%eM16?+#8`=V+)I%IpWf>vaYLzZ{`{;r69>A{|@ zaue-A<|Hv1K501c-+=#PfO*jPTNUssd!$K>xcUr4loGxjhRlrU$-Da^&LX^Tn!$z_ z+fCAO9~5?ul=!?`XFEX*nELJPZ587ihaMX{w>iYYL%vszvNAp%E8%x2j>#b6;6gHw zsOI3I{y+A6b&BXG$VqVh?605h-+exx({cFZZx*}Sd(%Dbx>=aEv-kqCtNo72{oS{< z>sa0kStDl`%w6pZrrW-Ipgvk3?KfQ4%unSObf_q}yV~cR!cKR3*327jcix(IY}Y>H zbx+&*orarF&-b?Ld81&R!O1pwsR?^frt4*8Blw8v;XJ#-C;S`@zxbo>uJ+M|!6H6f z_}|;oMzPqw+1KDXbFRl9#(qnGwzP|WuSox^5{2FLMF;AVE*vF7m&7vJ1}ORar@ zRvlMG4;K3AIeteTHs{Tpo@2PH-Ec<=^Z20XwCi&ge+zIC#xq9FHA{mMN;Y4|o51zW nD}3+YTn+*R`Zos|8VEA}_Vb1j*yI20!$bIUvA3`Pe-Zd^!Tc6l literal 0 HcmV?d00001 diff --git a/tools/CreditsTool/Program.cs b/tools/CreditsTool/Program.cs new file mode 100644 index 0000000000..d5dd162412 --- /dev/null +++ b/tools/CreditsTool/Program.cs @@ -0,0 +1,150 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Net; +using System.Web.Script.Serialization; + +namespace CreditsTool +{ + class Program + { + const string ConfigPath = "remappings.txt"; + const string OutputLocation = "./credit_pngs"; + const int world_icon_size = 32; + //this downloads all the user images of contributors of a passed github repository + //usage ./CreditsTool [authToken (helps with github rate limiter)] + static void Main(string[] args) + { + if (args.Length < 2) + { + Console.WriteLine("Usage: ./CreditsTool.exe [authToken]"); + return; + } + + if (Directory.Exists(OutputLocation)) + { + Console.WriteLine(String.Format("Aborted: {0} exists!", OutputLocation)); + return; + } + Directory.CreateDirectory(OutputLocation); + + string repoOwner = args[0], + repoName = args[1], + authToken = args.Length > 2 ? args[2] : null; + + Console.WriteLine("Querying contributors API..."); + + var FirstResponse = GetPageResponse(repoOwner, repoName, authToken, 1); + + Console.WriteLine("Collecting avatar URLs..."); + + var LoginAvatars = new Dictionary(); + //now list the things we want: avatar urls and logins + foreach (var I in LoadPages(FirstResponse, repoOwner, repoName, authToken)) { + var avurl = (string)I["avatar_url"]; + LoginAvatars.Add((string)I["login"], String.Format("{0}{1}s={2}", avurl, avurl.Contains("?") ? "&" : "?", world_icon_size)); + } + + Console.WriteLine(String.Format("Collected info for {0} contributors.", LoginAvatars.Count)); + + Console.WriteLine("Remapping github logins..."); + + var remaps = LoadConfig(); + + Console.WriteLine(String.Format("Downloading and converting avatars to {0} (this will take a while)...", OutputLocation)); + + using (var client = new WebClient()) + { + var count = 0; + foreach (var I in LoginAvatars) + { + var writtenFilename = I.Key; + if (remaps.TryGetValue(writtenFilename, out string tmp)) + { + if (tmp == "__REMOVE__") + continue; + writtenFilename = tmp; + } + using (var stream = new MemoryStream(client.DownloadData(I.Value))) + using (var originalBMP = new Bitmap(stream)) + { + if (originalBMP.Width == world_icon_size && originalBMP.Height == world_icon_size) //no need to resize + SaveBMP(originalBMP, writtenFilename); + else + using (var resizedBMP = new Bitmap(originalBMP, new Size(world_icon_size, world_icon_size))) + SaveBMP(resizedBMP, writtenFilename); + } + Console.WriteLine(String.Format("Done {0}.png! {1}%", writtenFilename, (int)((((float)(count + 1)) / LoginAvatars.Count) * 100))); + ++count; + } + } + } + + static void SaveBMP(Bitmap bmp, string writtenFilename) + { + bmp.Save(String.Format("{0}{1}{2}.png", OutputLocation, Path.DirectorySeparatorChar, writtenFilename), ImageFormat.Png); + } + + static IDictionary LoadConfig() + { + var result = new Dictionary(); + if (File.Exists(ConfigPath)) + foreach (var I in File.ReadAllLines(ConfigPath)) + if (!String.IsNullOrWhiteSpace(I) && I[0] != '#') + { + var splits = new List(I.Split(' ')); + if (splits.Count >= 1 && !String.IsNullOrEmpty(splits[1])) + { + var key = splits[0]; + splits.RemoveAt(0); + result.Add(key, String.Join(" ", splits)); + } + } + return result; + } + + static IEnumerable> LoadPages(WebResponse firstResponse, string repoOwner, string repoName, string authToken) + { + int numPages = GetNumPagesOfContributors(firstResponse); + Console.WriteLine(String.Format("Downloading {0} pages of contributor info...", numPages)); + //load and combine json for all pages + var jss = new JavaScriptSerializer(); + using (var sr = new StreamReader(firstResponse.GetResponseStream())) + foreach (var J in jss.Deserialize>>(sr.ReadToEnd())) + yield return J; + + //skip the first + for (var I = 2; I <= numPages; ++I) + using (var sr = new StreamReader(GetPageResponse(repoOwner, repoName, authToken, I).GetResponseStream())) + foreach (var J in jss.Deserialize>>(sr.ReadToEnd())) + yield return J; + } + + static int GetNumPagesOfContributors(WebResponse response) + { + var splits = response.Headers["Link"].Split(','); + foreach (var I in splits) + if (I.Contains("rel=\"last\"")) //our boy + { + var pagestrIndex = I.IndexOf("&page=") + 6; + var closingIndex = I.IndexOf('>', pagestrIndex + 1); + var thedroidswerelookingfor = I.Substring(pagestrIndex, closingIndex - pagestrIndex); + return Convert.ToInt32(thedroidswerelookingfor); + } + return 1; + } + + static WebResponse GetPageResponse(string repoOwner, string repoName, string authToken, int pageNumber) + { + HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(String.Format("https://api.github.com/repos/{0}/{1}/contributors?per_page=100&page={2}", repoOwner, repoName, pageNumber)); + httpWebRequest.Method = WebRequestMethods.Http.Get; + httpWebRequest.Accept = "application/json"; + httpWebRequest.UserAgent = "tgstation-13-credits-tool"; + if (authToken != null) + httpWebRequest.Headers.Add(String.Format("Authorization: token {0}", authToken)); + return httpWebRequest.GetResponse(); + } + } +} diff --git a/tools/CreditsTool/UpdateCreditsDMI.sh b/tools/CreditsTool/UpdateCreditsDMI.sh new file mode 100644 index 0000000000..89d24e1e8f --- /dev/null +++ b/tools/CreditsTool/UpdateCreditsDMI.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +#If you hit github's rate limit, add a 3rd parameter here that is a github personal access token +./CreditsTool tgstation tgstation + +rm ../../icons/credits.dmi + +for filename in credit_pngs/*.png; do + realname=$(basename "$filename") + java -jar ../dmitool/dmitool.jar import ../../icons/credits.dmi "${realname%.*}" "$filename" +done + +rm -rf credit_pngs diff --git a/tools/WebhookProcessor/github_webhook_processor.php b/tools/WebhookProcessor/github_webhook_processor.php index dde21e4f43..4e20a7e902 100644 --- a/tools/WebhookProcessor/github_webhook_processor.php +++ b/tools/WebhookProcessor/github_webhook_processor.php @@ -15,10 +15,8 @@ */ -//CONFIG START (all defaults are random examples, do change them) -//Use single quotes for config options that are strings. +//CONFIGS ARE IN SECRET.PHP, THESE ARE JUST DEFAULTS! -//These are all default settings that are described in secret.php $hookSecret = '08ajh0qj93209qj90jfq932j32r'; $apiKey = '209ab8d879c0f987d06a09b9d879c0f987d06a09b9d8787d0a089c'; $repoOwnerAndName = "tgstation/tgstation"; @@ -33,6 +31,7 @@ $maintainer_team_id = 133041; $validation = "org"; $validation_count = 1; $tracked_branch = 'master'; +$require_changelogs = false; require_once 'secret.php'; @@ -43,6 +42,7 @@ set_error_handler(function($severity, $message, $file, $line) { set_exception_handler(function($e) { header('HTTP/1.1 500 Internal Server Error'); echo "Error on line {$e->getLine()}: " . htmlSpecialChars($e->getMessage()); + file_put_contents('htwebhookerror.log', "Error on line {$e->getLine()}: " . $e->getMessage(), FILE_APPEND); die(); }); $rawPost = NULL; @@ -96,6 +96,16 @@ switch (strtolower($_SERVER['HTTP_X_GITHUB_EVENT'])) { case 'pull_request': handle_pr($payload); break; + case 'pull_request_review': + if($payload['action'] == 'submitted'){ + $lower_state = strtolower($payload['review']['state']); + if(($lower_state == 'approved' || $lower_state == 'changes_requested') && is_maintainer($payload, $payload['review']['user']['login'])){ + $lower_association = strtolower($payload['review']['author_association']); + if($lower_association == 'member' || $lower_association == 'contributor' || $lower_association == 'owner') + remove_ready_for_review($payload); + } + } + break; default: header('HTTP/1.0 404 Not Found'); echo "Event:$_SERVER[HTTP_X_GITHUB_EVENT] Payload:\n"; @@ -103,36 +113,87 @@ switch (strtolower($_SERVER['HTTP_X_GITHUB_EVENT'])) { die(); } -//rip bs-12 -function tag_pr($payload, $opened) { +function apisend($url, $method = 'GET', $content = NULL) { global $apiKey; - - //We need to reget the pull_request part of the payload to actually see the mergeable field populated - //http://stackoverflow.com/questions/30619549/why-does-github-api-return-an-unknown-mergeable-state-in-a-pull-request + if (is_array($content)) + $content = json_encode($content); + $scontext = array('http' => array( - 'method' => 'GET', + 'method' => $method, 'header' => "Content-type: application/json\r\n". 'Authorization: token ' . $apiKey, 'ignore_errors' => true, 'user_agent' => 'tgstation13.org-Github-Automation-Tools' )); + if ($content) + $scontext['http']['content'] = $content; + + return file_get_contents($url, false, stream_context_create($scontext)); +} +function validate_user($payload) { + global $validation, $validation_count; + $query = array(); + if (empty($validation)) + $validation = 'org'; + switch (strtolower($validation)) { + case 'disable': + return TRUE; + case 'repo': + $query['repo'] = $payload['pull_request']['base']['repo']['full_name']; + break; + default: + $query['user'] = $payload['pull_request']['base']['repo']['owner']['login']; + break; + } + $query['author'] = $payload['pull_request']['user']['login']; + $query['is'] = 'merged'; + $querystring = ''; + foreach($query as $key => $value) + $querystring .= ($querystring == '' ? '' : '+') . urlencode($key) . ':' . urlencode($value); + $res = apisend('https://api.github.com/search/issues?q='.$querystring); + $res = json_decode($res, TRUE); + return $res['total_count'] >= (int)$validation_count; + +} +function get_labels($payload){ + $url = $payload['pull_request']['issue_url'] . '/labels'; + $existing_labels = json_decode(apisend($url), true); + $existing = array(); + foreach($existing_labels as $label) + $existing[] = $label['name']; + return $existing; +} + +function check_tag_and_replace($payload, $title_tag, $label, &$array_to_add_label_to){ + $title = $payload['pull_request']['title']; + if(stripos($title, $title_tag) !== FALSE){ + $array_to_add_label_to[] = $label; + $title = trim(str_ireplace($title_tag, '', $title)); + apisend($payload['pull_request']['url'], 'PATCH', array('title' => $title)); + return true; + } + return false; +} + +//rip bs-12 +function tag_pr($payload, $opened) { + //get the mergeable state $url = $payload['pull_request']['url']; - $payload['pull_request'] = json_decode(file_get_contents($url, false, stream_context_create($scontext)), true); + $payload['pull_request'] = json_decode(apisend($url), TRUE); if($payload['pull_request']['mergeable'] == null) { //STILL not ready. Give it a bit, then try one more time sleep(10); - $payload['pull_request'] = json_decode(file_get_contents($url, false, stream_context_create($scontext)), true); + $payload['pull_request'] = json_decode(apisend($url), TRUE); } $tags = array(); $title = $payload['pull_request']['title']; if($opened) { //you only have one shot on these ones so as to not annoy maintainers - $tags = checkchangelog($payload, true, false); + $tags = checkchangelog($payload, false); - $lowertitle = strtolower($title); - if(strpos($lowertitle, 'refactor') !== FALSE) + if(strpos(strtolower($title), 'refactor') !== FALSE) $tags[] = 'Refactor'; if(strpos(strtolower($title), 'revert') !== FALSE || strpos(strtolower($title), 'removes') !== FALSE) @@ -148,7 +209,7 @@ function tag_pr($payload, $opened) { $tags[] = 'Merge Conflict'; $treetags = array('_maps' => 'Map Edit', 'tools' => 'Tools', 'SQL' => 'SQL'); - $addonlytags = array('icons' => 'Sprites', 'sounds' => 'Sound'); + $addonlytags = array('icons' => 'Sprites', 'sounds' => 'Sound', 'config' => 'Config Update'); foreach($treetags as $tree => $tag) if(has_tree_been_edited($payload, $tree)) $tags[] = $tag; @@ -158,21 +219,14 @@ function tag_pr($payload, $opened) { if(has_tree_been_edited($payload, $tree)) $tags[] = $tag; - //only maintners should be able to remove these - if(strpos($lowertitle, '[dnm]') !== FALSE) - $tags[] = 'Do Not Merge'; - - if(strpos($lowertitle, '[wip]') !== FALSE) - $tags[] = 'Work In Progress'; + check_tag_and_replace($payload, '[dnm]', 'Do Not Merge', $tags); + if(!check_tag_and_replace($payload, '[wip]', 'Work In Progress', $tags)) + check_tag_and_replace($payload, '[ready]', 'Work In Progress', $remove); $url = $payload['pull_request']['issue_url'] . '/labels'; - $existing_labels = file_get_contents($url, false, stream_context_create($scontext)); - $existing_labels = json_decode($existing_labels, true); + $existing = get_labels($payload); - $existing = array(); - foreach($existing_labels as $label) - $existing[] = $label['name']; $tags = array_merge($tags, $existing); $tags = array_unique($tags); $tags = array_diff($tags, $remove); @@ -181,27 +235,153 @@ function tag_pr($payload, $opened) { foreach($tags as $t) $final[] = $t; - $scontext['http']['method'] = 'PUT'; - $scontext['http']['content'] = json_encode($final); - echo file_get_contents($url, false, stream_context_create($scontext)); + echo apisend($url, 'PUT', $final); + + return $final; +} + +function remove_ready_for_review($payload, $labels = null){ + if($labels == null) + $labels = get_labels($payload); + $index = array_search('Ready for Review', $labels); + if($index !== FALSE) + unset($labels[$index]); + $url = $payload['pull_request']['issue_url'] . '/labels'; + apisend($url, 'PUT', $labels); +} + +function dismiss_review($payload, $id, $reason){ + $content = array('message' => $reason); + apisend($payload['pull_request']['url'] . '/reviews/' . $id . '/dismissals', 'PUT', $content); +} + +function get_reviews($payload){ + return json_decode(apisend($payload['pull_request']['url'] . '/reviews'), true); +} + +function check_ready_for_review($payload, $labels = null){ + $r4rlabel = 'Ready for Review'; + $labels_which_should_not_be_ready = array('Do Not Merge', 'Work In Progress', 'Merge Conflict'); + $has_label_already = false; + $should_not_have_label = false; + if($labels == null) + $labels = get_labels($payload); + //if the label is already there we may need to remove it + foreach($labels as $L){ + if(in_array($L, $labels_which_should_not_be_ready)) + $should_not_have_label = true; + if($L == $r4rlabel) + $has_label_already = true; + } + + if($has_label_already && $should_not_have_label){ + remove_ready_for_review($payload, $labels, $r4rlabel); + return; + } + + //find all reviews to see if changes were requested at some point + $reviews = get_reviews($payload); + + $reviews_ids_with_changes_requested = array(); + $dismissed_an_approved_review = false; + + foreach($reviews as $R){ + $lower_association = strtolower($R['author_association']); + if($lower_association == 'member' || $lower_association == 'contributor' || $lower_association == 'owner'){ + $lower_state = strtolower($R['state']); + if($lower_state == 'changes_requested') + $reviews_ids_with_changes_requested[] = $R['id']; + else if ($lower_state == 'approved'){ + dismiss_review($payload, $R['id'], 'Out of date review'); + $dismissed_an_approved_review = true; + } + } + } + + if(!$dismissed_an_approved_review && count($reviews_ids_with_changes_requested) == 0){ + if($has_label_already) + remove_ready_for_review($payload, $labels); + return; //no need to be here + } + + if(count($reviews_ids_with_changes_requested) > 0){ + //now get the review comments for the offending reviews + + $review_comments = json_decode(apisend($payload['pull_request']['review_comments_url']), true); + + foreach($review_comments as $C){ + //make sure they are part of an offending review + if(!in_array($C['pull_request_review_id'], $reviews_ids_with_changes_requested)) + continue; + + //review comments which are outdated have a null position + if($C['position'] !== null){ + if($has_label_already) + remove_ready_for_review($payload, $labels); + return; //no need to tag + } + } + } + + //finally, add it if necessary + if(!$has_label_already){ + $labels[] = $r4rlabel; + $url = $payload['pull_request']['issue_url'] . '/labels'; + apisend($url, 'PUT', $labels); + } +} + +function check_dismiss_changelog_review($payload){ + global $require_changelog; + global $no_changelog; + + if(!$require_changelog) + return; + + if(!$no_changelog) + checkchangelog($payload, false); + + $review_message = 'Your changelog for this PR is either malformed or non-existent. Please create one to document your changes.'; + + $reviews = get_reviews($payload); + if($no_changelog){ + //check and see if we've already have this review + foreach($reviews as $R) + if($R['body'] == $review_message && strtolower($R['state']) == 'changes_requested') + return; + //otherwise make it ourself + apisend($payload['pull_request']['url'] . '/reviews', 'POST', array('body' => $review_message, 'event' => 'REQUEST_CHANGES')); + } + else + //kill previous reviews + foreach($reviews as $R) + if($R['body'] == $review_message && strtolower($R['state']) == 'changes_requested') + dismiss_review($payload, $R['id'], 'Changelog added/fixed.'); } function handle_pr($payload) { + global $no_changelog; $action = 'opened'; + $validated = validate_user($payload); switch ($payload["action"]) { case 'opened': tag_pr($payload, true); + if($no_changelog) + check_dismiss_changelog_review($payload); if(get_pr_code_friendliness($payload) < 0){ $balances = pr_balances(); $author = $payload['pull_request']['user']['login']; - if(isset($balances[$author]) && $balances[$author] < 0) + if(isset($balances[$author]) && $balances[$author] < 0 && !is_maintainer($payload, $author)) create_comment($payload, 'You currently have a negative Fix/Feature pull request delta of ' . $balances[$author] . '. Maintainers may close this PR at will. Fixing issues or improving the codebase will improve this score.'); } break; case 'edited': + check_dismiss_changelog_review($payload); case 'synchronize': - tag_pr($payload, false); + $labels = tag_pr($payload, false); + if($payload['action'] == 'synchronize') + check_ready_for_review($payload, $labels); return; case 'reopened': $action = $payload['action']; @@ -213,7 +393,7 @@ function handle_pr($payload) { else { $action = 'merged'; auto_update($payload); - checkchangelog($payload, true, true); + checkchangelog($payload, true); update_pr_balance($payload); $validated = TRUE; //pr merged events always get announced. } @@ -226,7 +406,11 @@ function handle_pr($payload) { echo "PR Announcement Halted; Secret tag detected.\n"; return; } - + if (!$validated) { + echo "PR Announcement Halted; User not validated.\n"; + return; + } + $msg = '['.$payload['pull_request']['base']['repo']['full_name'].'] Pull Request '.$action.' by '.htmlSpecialChars($payload['sender']['login']).': '.htmlSpecialChars('#'.$payload['pull_request']['number'].' '.$payload['pull_request']['user']['login'].' - '.$payload['pull_request']['title']).''; sendtoallservers('?announce='.urlencode($msg), $payload); } @@ -306,7 +490,7 @@ function is_maintainer($payload, $author){ global $maintainer_team_id; $repo_is_org = $payload['pull_request']['base']['repo']['owner']['type'] == 'Organization'; if($maintainer_team_id == null || !$repo_is_org) { - $collaburl = $payload['pull_request']['base']['repo']['collaborators_url'] . '/' . $author . '/permissions'; + $collaburl = str_replace('{/collaborator}', '/' . $author, $payload['pull_request']['base']['repo']['collaborators_url']) . '/permission'; $perms = json_decode(apisend($collaburl), true); $permlevel = $perms['permission']; return $permlevel == 'admin' || $permlevel == 'write'; @@ -314,7 +498,7 @@ function is_maintainer($payload, $author){ else { $check_url = 'https://api.github.com/teams/' . $maintainer_team_id . '/memberships/' . $author; $result = json_decode(apisend($check_url), true); - return isset($result['state']); //this field won't be here if they aren't a member + return isset($result['state']) && $result['state'] == 'active'; } } @@ -325,17 +509,17 @@ function update_pr_balance($payload) { if(!$trackPRBalance) return; $author = $payload['pull_request']['user']['login']; - if(is_maintainer($payload, $author)) //immune - return; $balances = pr_balances(); if(!isset($balances[$author])) $balances[$author] = $startingPRBalance; $friendliness = get_pr_code_friendliness($payload, $balances[$author]); $balances[$author] += $friendliness; - if($balances[$author] < 0 && $friendliness < 0) - create_comment($payload, 'Your Fix/Feature pull request delta is currently below zero (' . $balances[$author] . '). Maintainers may close future Feature/Tweak/Balance PRs. Fixing issues or helping to improve the codebase will raise this score.'); - else if($balances[$author] >= 0 && ($balances[$author] - $friendliness) < 0) - create_comment($payload, 'Your Fix/Feature pull request delta is now above zero (' . $balances[$author] . '). Feel free to make Feature/Tweak/Balance PRs.'); + if(!is_maintainer($payload, $author)){ //immune + if($balances[$author] < 0 && $friendliness < 0) + create_comment($payload, 'Your Fix/Feature pull request delta is currently below zero (' . $balances[$author] . '). Maintainers may close future Feature/Tweak/Balance PRs. Fixing issues or helping to improve the codebase will raise this score.'); + else if($balances[$author] >= 0 && ($balances[$author] - $friendliness) < 0) + create_comment($payload, 'Your Fix/Feature pull request delta is now above zero (' . $balances[$author] . '). Feel free to make Feature/Tweak/Balance PRs.'); + } $balances_file = fopen(pr_balance_json_path(), 'w'); fwrite($balances_file, json_encode($balances)); fclose($balances_file); @@ -372,10 +556,9 @@ function has_tree_been_edited($payload, $tree){ return $github_diff !== FALSE && strpos($github_diff, 'diff --git a/' . $tree) !== FALSE; } -function checkchangelog($payload, $merge = false, $compile = true) { - global $apiKey; - if (!$merge) - return; +$no_changelog = false; +function checkchangelog($payload, $compile = true) { + global $no_changelog; if (!isset($payload['pull_request']) || !isset($payload['pull_request']['body'])) { return; } @@ -449,10 +632,6 @@ function checkchangelog($payload, $merge = false, $compile = true) { $currentchangelogblock[] = array('type' => 'bugfix', 'body' => $item); } break; - case 'wip': - if($item != 'added a few works in progress') - $currentchangelogblock[] = array('type' => 'wip', 'body' => $item); - break; case 'rsctweak': case 'tweaks': case 'tweak': @@ -510,11 +689,6 @@ function checkchangelog($payload, $merge = false, $compile = true) { $currentchangelogblock[] = array('type' => 'spellcheck', 'body' => $item); } break; - case 'experimental': - case 'experiment': - if($item != 'added an experimental thingy') - $currentchangelogblock[] = array('type' => 'experiment', 'body' => $item); - break; case 'balance': case 'rebalance': if($item != 'rebalanced something'){ @@ -525,6 +699,35 @@ function checkchangelog($payload, $merge = false, $compile = true) { case 'tgs': $currentchangelogblock[] = array('type' => 'tgs', 'body' => $item); break; + case 'code_imp': + case 'code': + if($item != 'changed some code'){ + $tags[] = 'Code Improvement'; + $currentchangelogblock[] = array('type' => 'code_imp', 'body' => $item); + } + break; + case 'refactor': + if($item != 'refactored some code'){ + $tags[] = 'Refactor'; + $currentchangelogblock[] = array('type' => 'refactor', 'body' => $item); + } + break; + case 'config': + if($item != 'changed some config setting'){ + $tags[] = 'Config Update'; + $currentchangelogblock[] = array('type' => 'config', 'body' => $item); + } + break; + case 'admin': + if($item != 'messed with admin stuff'){ + $tags[] = 'Administration'; + $currentchangelogblock[] = array('type' => 'admin', 'body' => $item); + } + break; + case 'server': + if($item != 'something server ops should know') + $currentchangelogblock[] = array('type' => 'server', 'body' => $item); + break; default: //we add it to the last changelog entry as a separate line if (count($currentchangelogblock) > 0) @@ -533,7 +736,10 @@ function checkchangelog($payload, $merge = false, $compile = true) { } } - if (!count($changelogbody) || !$compile) + if(!count($changelogbody)) + $no_changelog = true; + + if ($no_changelog || !$compile) return $tags; $file = 'author: "'.trim(str_replace(array("\\", '"'), array("\\\\", "\\\""), $username)).'"'."\n"; @@ -550,17 +756,9 @@ function checkchangelog($payload, $merge = false, $compile = true) { 'message' => 'Automatic changelog generation for PR #'.$payload['pull_request']['number'].' [ci skip]', 'content' => base64_encode($file) ); - $scontext = array('http' => array( - 'method' => 'PUT', - 'header' => - "Content-type: application/json\r\n". - 'Authorization: token ' . $apiKey, - 'content' => json_encode($content), - 'ignore_errors' => true, - 'user_agent' => 'tgstation13.org-Github-Automation-Tools' - )); + $filename = '/html/changelogs/AutoChangeLog-pr-'.$payload['pull_request']['number'].'.yml'; - echo file_get_contents($payload['pull_request']['base']['repo']['url'].'/contents'.$filename, false, stream_context_create($scontext)); + echo apisend($payload['pull_request']['base']['repo']['url'].'/contents'.$filename, 'PUT', $content); } function sendtoallservers($str, $payload = null) { diff --git a/tools/WebhookProcessor/secret.php b/tools/WebhookProcessor/secret.php index abea10564f..93c9b318f6 100644 --- a/tools/WebhookProcessor/secret.php +++ b/tools/WebhookProcessor/secret.php @@ -8,6 +8,7 @@ $hookSecret = '08ajh0qj93209qj90jfq932j32r'; //Api key for pushing changelogs. +//This requires the public_repo (or repo for private repositories) and read:org permissions $apiKey = '209ab8d879c0f987d06a09b9d879c0f987d06a09b9d8787d0a089c'; //Used to prevent potential RCEs @@ -47,3 +48,6 @@ $validation = "org"; //how many merged prs must they have under the rules above to have their pr announced to the game servers. $validation_count = 1; + +//enforce changelogs on PRs +$require_changelogs = false; diff --git a/tools/ss13_genchangelog.py b/tools/ss13_genchangelog.py index c4e22014df..c7a31325b1 100644 --- a/tools/ss13_genchangelog.py +++ b/tools/ss13_genchangelog.py @@ -57,7 +57,12 @@ validPrefixes = [ 'spellcheck', 'experiment', 'tgs', - 'balance' + 'balance', + 'code_imp', + 'refactor', + 'config', + 'admin', + 'server' ] def dictToTuples(inp): From 6efb76fad556ca56fb7017424920156177c3a5cc Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 22:30:44 -0500 Subject: [PATCH 61/80] [MIRROR] Ammo cleanup (#2643) * Ammo cleanup * Update briefcase.dm * Update manned_turret.dm * Update mime.dm * Update manned_turret.dm * Update manned_turret.dm * fixes * mime memes --- .../RandomRuins/SpaceRuins/caravanambush.dmm | 6 +- .../machinery/porta_turret/portable_turret.dm | 4 +- code/game/mecha/equipment/weapons/weapons.dm | 6 +- code/game/objects/items/storage/briefcase.dm | 113 ++-- code/game/objects/structures/manned_turret.dm | 428 +++++++------- code/modules/crafting/recipes.dm | 19 +- .../living/simple_animal/hostile/stickman.dm | 2 +- .../living/simple_animal/hostile/syndicate.dm | 2 +- .../projectiles/ammunition/ammo_casings.dm | 361 ++++++------ .../modules/projectiles/ammunition/special.dm | 2 +- .../boxes_magazines/external_mag.dm | 66 +-- .../projectiles/guns/ballistic/automatic.dm | 5 - code/modules/projectiles/projectile/beams.dm | 2 +- .../modules/projectiles/projectile/bullets.dm | 540 ++++++++++-------- .../modules/projectiles/projectile/special.dm | 37 +- .../research/designs/weapon_designs.dm | 7 - code/modules/spells/spell_types/mime.dm | 420 +++++++++----- code/modules/uplink/uplink_item.dm | 24 +- 18 files changed, 1062 insertions(+), 982 deletions(-) diff --git a/_maps/RandomRuins/SpaceRuins/caravanambush.dmm b/_maps/RandomRuins/SpaceRuins/caravanambush.dmm index d2a416bba2..2f395e4f1c 100644 --- a/_maps/RandomRuins/SpaceRuins/caravanambush.dmm +++ b/_maps/RandomRuins/SpaceRuins/caravanambush.dmm @@ -590,9 +590,9 @@ "bW" = ( /obj/structure/closet/crate/secure/gear, /obj/item/ammo_box/c10mm, -/obj/item/ammo_casing/shotgun/meteorshot, -/obj/item/ammo_casing/shotgun/meteorshot, -/obj/item/ammo_casing/shotgun/meteorshot, +/obj/item/ammo_casing/shotgun/meteorslug, +/obj/item/ammo_casing/shotgun/meteorslug, +/obj/item/ammo_casing/shotgun/meteorslug, /turf/open/floor/mineral/titanium/yellow/airless, /area/ruin/unpowered) "bX" = ( diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index ee8363e1b3..b84de7cf18 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -570,8 +570,8 @@ /obj/machinery/porta_turret/syndicate/pod integrity_failure = 20 max_integrity = 40 - stun_projectile = /obj/item/projectile/bullet/weakbullet3 - lethal_projectile = /obj/item/projectile/bullet/weakbullet3 + stun_projectile = /obj/item/projectile/bullet/syndicate_turret + lethal_projectile = /obj/item/projectile/bullet/syndicate_turret /obj/machinery/porta_turret/ai faction = "silicon" diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index b6b4241402..1e9616ae12 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -251,7 +251,7 @@ icon_state = "mecha_carbine" origin_tech = "materials=4;combat=4" equip_cooldown = 10 - projectile = /obj/item/projectile/bullet/incendiary/shell + projectile = /obj/item/projectile/bullet/incendiary/fnx99 projectiles = 24 projectile_energy_cost = 15 @@ -271,7 +271,7 @@ icon_state = "mecha_scatter" origin_tech = "combat=4" equip_cooldown = 20 - projectile = /obj/item/projectile/bullet/midbullet + projectile = /obj/item/projectile/bullet/scattershot projectiles = 40 projectile_energy_cost = 25 projectiles_per_shot = 4 @@ -283,7 +283,7 @@ icon_state = "mecha_uac2" origin_tech = "combat=4" equip_cooldown = 10 - projectile = /obj/item/projectile/bullet/weakbullet3 + projectile = /obj/item/projectile/bullet/lmg projectiles = 300 projectile_energy_cost = 20 projectiles_per_shot = 3 diff --git a/code/game/objects/items/storage/briefcase.dm b/code/game/objects/items/storage/briefcase.dm index 8107c5a1f8..df40b2898c 100644 --- a/code/game/objects/items/storage/briefcase.dm +++ b/code/game/objects/items/storage/briefcase.dm @@ -1,57 +1,56 @@ -/obj/item/storage/briefcase - name = "briefcase" - desc = "It's made of AUTHENTIC faux-leather and has a price-tag still attached. Its owner must be a real professional." - icon_state = "briefcase" - lefthand_file = 'icons/mob/inhands/equipment/briefcase_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/briefcase_righthand.dmi' - flags_1 = CONDUCT_1 - force = 8 - hitsound = "swing_hit" - throw_speed = 2 - throw_range = 4 - w_class = WEIGHT_CLASS_BULKY - max_w_class = WEIGHT_CLASS_NORMAL - max_combined_w_class = 21 - attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked") - resistance_flags = FLAMMABLE - max_integrity = 150 - var/folder_path = /obj/item/folder //this is the path of the folder that gets spawned in New() - -/obj/item/storage/briefcase/PopulateContents() - new /obj/item/pen(src) - var/obj/item/folder/folder = new folder_path(src) - for(var/i in 1 to 6) - new /obj/item/paper(folder) - -/obj/item/storage/briefcase/lawyer - folder_path = /obj/item/folder/blue - -/obj/item/storage/briefcase/lawyer/PopulateContents() - new /obj/item/stamp/law(src) - ..() - -/obj/item/storage/briefcase/sniperbundle - name = "briefcase" - desc = "It's label reads genuine hardened Captain leather, but suspiciously has no other tags or branding. Smells like L'Air du Temps." - icon_state = "briefcase" - flags_1 = CONDUCT_1 - force = 10 - hitsound = "swing_hit" - throw_speed = 2 - throw_range = 4 - w_class = WEIGHT_CLASS_BULKY - max_w_class = WEIGHT_CLASS_NORMAL - max_combined_w_class = 21 - attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked") - resistance_flags = FLAMMABLE - max_integrity = 150 - -/obj/item/storage/briefcase/sniperbundle/PopulateContents() - ..() // in case you need any paperwork done after your rampage - new /obj/item/gun/ballistic/automatic/sniper_rifle/syndicate(src) - new /obj/item/clothing/neck/tie/red(src) - new /obj/item/clothing/under/syndicate/sniper(src) - new /obj/item/ammo_box/magazine/sniper_rounds/soporific(src) - new /obj/item/ammo_box/magazine/sniper_rounds/haemorrhage(src) - new /obj/item/suppressor/specialoffer(src) - +/obj/item/storage/briefcase + name = "briefcase" + desc = "It's made of AUTHENTIC faux-leather and has a price-tag still attached. Its owner must be a real professional." + icon_state = "briefcase" + lefthand_file = 'icons/mob/inhands/equipment/briefcase_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/briefcase_righthand.dmi' + flags_1 = CONDUCT_1 + force = 8 + hitsound = "swing_hit" + throw_speed = 2 + throw_range = 4 + w_class = WEIGHT_CLASS_BULKY + max_w_class = WEIGHT_CLASS_NORMAL + max_combined_w_class = 21 + attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked") + resistance_flags = FLAMMABLE + max_integrity = 150 + var/folder_path = /obj/item/folder //this is the path of the folder that gets spawned in New() + +/obj/item/storage/briefcase/PopulateContents() + new /obj/item/pen(src) + var/obj/item/folder/folder = new folder_path(src) + for(var/i in 1 to 6) + new /obj/item/paper(folder) + +/obj/item/storage/briefcase/lawyer + folder_path = /obj/item/folder/blue + +/obj/item/storage/briefcase/lawyer/PopulateContents() + new /obj/item/stamp/law(src) + ..() + +/obj/item/storage/briefcase/sniperbundle + name = "briefcase" + desc = "It's label reads genuine hardened Captain leather, but suspiciously has no other tags or branding. Smells like L'Air du Temps." + icon_state = "briefcase" + flags_1 = CONDUCT_1 + force = 10 + hitsound = "swing_hit" + throw_speed = 2 + throw_range = 4 + w_class = WEIGHT_CLASS_BULKY + max_w_class = WEIGHT_CLASS_NORMAL + max_combined_w_class = 21 + attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked") + resistance_flags = FLAMMABLE + max_integrity = 150 + +/obj/item/storage/briefcase/sniperbundle/PopulateContents() + ..() // in case you need any paperwork done after your rampage + new /obj/item/gun/ballistic/automatic/sniper_rifle/syndicate(src) + new /obj/item/clothing/neck/tie/red(src) + new /obj/item/clothing/under/syndicate/sniper(src) + new /obj/item/ammo_box/magazine/sniper_rounds/soporific(src) + new /obj/item/ammo_box/magazine/sniper_rounds/soporific(src) + new /obj/item/suppressor/specialoffer(src) diff --git a/code/game/objects/structures/manned_turret.dm b/code/game/objects/structures/manned_turret.dm index e15a655a63..52d9e38f6b 100644 --- a/code/game/objects/structures/manned_turret.dm +++ b/code/game/objects/structures/manned_turret.dm @@ -1,214 +1,214 @@ -/////// MANNED TURRET //////// - -/obj/machinery/manned_turret - name = "machine gun turret" - desc = "While the trigger is held down, this gun will redistribute recoil to allow its user to easily shift targets." - icon = 'icons/obj/turrets.dmi' - icon_state = "machinegun" - can_buckle = TRUE - density = TRUE - max_integrity = 100 - buckle_lying = FALSE - layer = ABOVE_MOB_LAYER - var/view_range = 10 - var/cooldown = 0 - var/projectile_type = /obj/item/projectile/bullet/weakbullet3 - var/rate_of_fire = 1 - var/number_of_shots = 40 - var/cooldown_duration = 90 - var/atom/target - var/turf/target_turf - var/warned = FALSE - var/list/calculated_projectile_vars - -/obj/machinery/manned_turret/Destroy() - target = null - target_turf = null - ..() - -//BUCKLE HOOKS - -/obj/machinery/manned_turret/unbuckle_mob(mob/living/buckled_mob,force = FALSE) - playsound(src,'sound/mecha/mechmove01.ogg', 50, 1) - for(var/obj/item/I in buckled_mob.held_items) - if(istype(I, /obj/item/gun_control)) - qdel(I) - if(istype(buckled_mob)) - buckled_mob.pixel_x = 0 - buckled_mob.pixel_y = 0 - if(buckled_mob.client) - buckled_mob.client.change_view(world.view) - anchored = FALSE - . = ..() - STOP_PROCESSING(SSfastprocess, src) - -/obj/machinery/manned_turret/user_buckle_mob(mob/living/M, mob/living/carbon/user) - if(user.incapacitated() || !istype(user)) - return - M.forceMove(get_turf(src)) - . = ..() - if(!.) - return - for(var/V in M.held_items) - var/obj/item/I = V - if(istype(I)) - if(M.dropItemToGround(I)) - var/obj/item/gun_control/TC = new(src) - M.put_in_hands(TC) - else //Entries in the list should only ever be items or null, so if it's not an item, we can assume it's an empty hand - var/obj/item/gun_control/TC = new(src) - M.put_in_hands(TC) - M.pixel_y = 14 - layer = ABOVE_MOB_LAYER - setDir(SOUTH) - playsound(src,'sound/mecha/mechmove01.ogg', 50, 1) - anchored = TRUE - if(M.client) - M.client.change_view(view_range) - START_PROCESSING(SSfastprocess, src) - -/obj/machinery/manned_turret/process() - if(!LAZYLEN(buckled_mobs)) - return PROCESS_KILL - update_positioning() - -/obj/machinery/manned_turret/proc/update_positioning() - var/mob/living/controller = buckled_mobs[1] - if(!istype(controller)) - return - var/client/C = controller.client - if(C) - var/atom/A = C.mouseObject - var/turf/T = get_turf(A) - if(istype(T)) //They're hovering over something in the map. - direction_track(controller, T) - calculated_projectile_vars = calculate_projectile_angle_and_pixel_offsets(controller, C.mouseParams) - -/obj/machinery/manned_turret/proc/direction_track(mob/user, atom/targeted) - if(user.incapacitated()) - return - setDir(get_dir(src,targeted)) - user.setDir(dir) - switch(dir) - if(NORTH) - layer = BELOW_MOB_LAYER - user.pixel_x = 0 - user.pixel_y = -14 - if(NORTHEAST) - layer = BELOW_MOB_LAYER - user.pixel_x = -8 - user.pixel_y = -4 - if(EAST) - layer = ABOVE_MOB_LAYER - user.pixel_x = -14 - user.pixel_y = 0 - if(SOUTHEAST) - layer = BELOW_MOB_LAYER - user.pixel_x = -8 - user.pixel_y = 4 - if(SOUTH) - layer = ABOVE_MOB_LAYER - user.pixel_x = 0 - user.pixel_y = 14 - if(SOUTHWEST) - layer = BELOW_MOB_LAYER - user.pixel_x = 8 - user.pixel_y = 4 - if(WEST) - layer = ABOVE_MOB_LAYER - user.pixel_x = 14 - user.pixel_y = 0 - if(NORTHWEST) - layer = BELOW_MOB_LAYER - user.pixel_x = 8 - user.pixel_y = -4 - -/obj/machinery/manned_turret/proc/checkfire(atom/targeted_atom, mob/user) - target = targeted_atom - if(target == user || user.incapacitated() || target == get_turf(src)) - return - if(world.time < cooldown) - if(!warned && world.time > (cooldown - cooldown_duration + rate_of_fire*number_of_shots)) // To capture the window where one is done firing - warned = TRUE - playsound(src, 'sound/weapons/sear.ogg', 100, 1) - return - else - cooldown = world.time + cooldown_duration - warned = FALSE - volley(user) - -/obj/machinery/manned_turret/proc/volley(mob/user) - target_turf = get_turf(target) - for(var/i in 1 to number_of_shots) - addtimer(CALLBACK(src, /obj/machinery/manned_turret/.proc/fire_helper, user), i*rate_of_fire) - -/obj/machinery/manned_turret/proc/fire_helper(mob/user) - if(user.incapacitated()) - return - update_positioning() //REFRESH MOUSE TRACKING!! - var/turf/targets_from = get_turf(src) - if(QDELETED(target)) - target = target_turf - var/obj/item/projectile/P = new projectile_type(targets_from) - P.current = targets_from - P.starting = targets_from - P.firer = user - P.original = target - playsound(src, 'sound/weapons/gunshot_smg.ogg', 75, 1) - P.xo = target.x - targets_from.x - P.yo = target.y - targets_from.y - P.Angle = calculated_projectile_vars[1] + rand(-9, 9) - P.p_x = calculated_projectile_vars[2] - P.p_y = calculated_projectile_vars[3] - P.fire() - -/obj/machinery/manned_turret/ultimate // Admin-only proof of concept for autoclicker automatics - name = "Infinity Gun" - view_range = 12 - projectile_type = /obj/item/projectile/bullet/weakbullet3 - -/obj/machinery/manned_turret/ultimate/checkfire(atom/targeted_atom, mob/user) - target = targeted_atom - if(target == user || target == get_turf(src)) - return - target_turf = get_turf(target) - fire_helper(user) - -/obj/item/gun_control - name = "turret controls" - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "offhand" - w_class = WEIGHT_CLASS_HUGE - flags_1 = ABSTRACT_1 | NODROP_1 | NOBLUDGEON_1 | DROPDEL_1 - resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF - var/obj/machinery/manned_turret/turret - -/obj/item/gun_control/Initialize() - . = ..() - turret = loc - if(!istype(turret)) - return INITIALIZE_HINT_QDEL - -/obj/item/gun_control/Destroy() - turret = null - ..() - -/obj/item/gun_control/CanItemAutoclick() - return TRUE - -/obj/item/gun_control/attack_obj(obj/O, mob/living/user) - user.changeNext_move(CLICK_CD_MELEE) - O.attacked_by(src, user) - -/obj/item/gun_control/attack(mob/living/M, mob/living/user) - user.lastattacked = M - M.lastattacker = user - M.attacked_by(src, user) - add_fingerprint(user) - -/obj/item/gun_control/afterattack(atom/targeted_atom, mob/user, flag, params) - ..() - var/obj/machinery/manned_turret/E = user.buckled - E.calculated_projectile_vars = calculate_projectile_angle_and_pixel_offsets(user, params) - E.direction_track(user, targeted_atom) - E.checkfire(targeted_atom, user) +/////// MANNED TURRET //////// + +/obj/machinery/manned_turret + name = "machine gun turret" + desc = "While the trigger is held down, this gun will redistribute recoil to allow its user to easily shift targets." + icon = 'icons/obj/turrets.dmi' + icon_state = "machinegun" + can_buckle = TRUE + density = TRUE + max_integrity = 100 + buckle_lying = FALSE + layer = ABOVE_MOB_LAYER + var/view_range = 10 + var/cooldown = 0 + var/projectile_type = /obj/item/projectile/bullet/manned_turret + var/rate_of_fire = 1 + var/number_of_shots = 40 + var/cooldown_duration = 90 + var/atom/target + var/turf/target_turf + var/warned = FALSE + var/list/calculated_projectile_vars + +/obj/machinery/manned_turret/Destroy() + target = null + target_turf = null + ..() + +//BUCKLE HOOKS + +/obj/machinery/manned_turret/unbuckle_mob(mob/living/buckled_mob,force = FALSE) + playsound(src,'sound/mecha/mechmove01.ogg', 50, 1) + for(var/obj/item/I in buckled_mob.held_items) + if(istype(I, /obj/item/gun_control)) + qdel(I) + if(istype(buckled_mob)) + buckled_mob.pixel_x = 0 + buckled_mob.pixel_y = 0 + if(buckled_mob.client) + buckled_mob.client.change_view(world.view) + anchored = FALSE + . = ..() + STOP_PROCESSING(SSfastprocess, src) + +/obj/machinery/manned_turret/user_buckle_mob(mob/living/M, mob/living/carbon/user) + if(user.incapacitated() || !istype(user)) + return + M.forceMove(get_turf(src)) + . = ..() + if(!.) + return + for(var/V in M.held_items) + var/obj/item/I = V + if(istype(I)) + if(M.dropItemToGround(I)) + var/obj/item/gun_control/TC = new(src) + M.put_in_hands(TC) + else //Entries in the list should only ever be items or null, so if it's not an item, we can assume it's an empty hand + var/obj/item/gun_control/TC = new(src) + M.put_in_hands(TC) + M.pixel_y = 14 + layer = ABOVE_MOB_LAYER + setDir(SOUTH) + playsound(src,'sound/mecha/mechmove01.ogg', 50, 1) + anchored = TRUE + if(M.client) + M.client.change_view(view_range) + START_PROCESSING(SSfastprocess, src) + +/obj/machinery/manned_turret/process() + if(!LAZYLEN(buckled_mobs)) + return PROCESS_KILL + update_positioning() + +/obj/machinery/manned_turret/proc/update_positioning() + var/mob/living/controller = buckled_mobs[1] + if(!istype(controller)) + return + var/client/C = controller.client + if(C) + var/atom/A = C.mouseObject + var/turf/T = get_turf(A) + if(istype(T)) //They're hovering over something in the map. + direction_track(controller, T) + calculated_projectile_vars = calculate_projectile_angle_and_pixel_offsets(controller, C.mouseParams) + +/obj/machinery/manned_turret/proc/direction_track(mob/user, atom/targeted) + if(user.incapacitated()) + return + setDir(get_dir(src,targeted)) + user.setDir(dir) + switch(dir) + if(NORTH) + layer = BELOW_MOB_LAYER + user.pixel_x = 0 + user.pixel_y = -14 + if(NORTHEAST) + layer = BELOW_MOB_LAYER + user.pixel_x = -8 + user.pixel_y = -4 + if(EAST) + layer = ABOVE_MOB_LAYER + user.pixel_x = -14 + user.pixel_y = 0 + if(SOUTHEAST) + layer = BELOW_MOB_LAYER + user.pixel_x = -8 + user.pixel_y = 4 + if(SOUTH) + layer = ABOVE_MOB_LAYER + user.pixel_x = 0 + user.pixel_y = 14 + if(SOUTHWEST) + layer = BELOW_MOB_LAYER + user.pixel_x = 8 + user.pixel_y = 4 + if(WEST) + layer = ABOVE_MOB_LAYER + user.pixel_x = 14 + user.pixel_y = 0 + if(NORTHWEST) + layer = BELOW_MOB_LAYER + user.pixel_x = 8 + user.pixel_y = -4 + +/obj/machinery/manned_turret/proc/checkfire(atom/targeted_atom, mob/user) + target = targeted_atom + if(target == user || user.incapacitated() || target == get_turf(src)) + return + if(world.time < cooldown) + if(!warned && world.time > (cooldown - cooldown_duration + rate_of_fire*number_of_shots)) // To capture the window where one is done firing + warned = TRUE + playsound(src, 'sound/weapons/sear.ogg', 100, 1) + return + else + cooldown = world.time + cooldown_duration + warned = FALSE + volley(user) + +/obj/machinery/manned_turret/proc/volley(mob/user) + target_turf = get_turf(target) + for(var/i in 1 to number_of_shots) + addtimer(CALLBACK(src, /obj/machinery/manned_turret/.proc/fire_helper, user), i*rate_of_fire) + +/obj/machinery/manned_turret/proc/fire_helper(mob/user) + if(user.incapacitated()) + return + update_positioning() //REFRESH MOUSE TRACKING!! + var/turf/targets_from = get_turf(src) + if(QDELETED(target)) + target = target_turf + var/obj/item/projectile/P = new projectile_type(targets_from) + P.current = targets_from + P.starting = targets_from + P.firer = user + P.original = target + playsound(src, 'sound/weapons/gunshot_smg.ogg', 75, 1) + P.xo = target.x - targets_from.x + P.yo = target.y - targets_from.y + P.Angle = calculated_projectile_vars[1] + rand(-9, 9) + P.p_x = calculated_projectile_vars[2] + P.p_y = calculated_projectile_vars[3] + P.fire() + +/obj/machinery/manned_turret/ultimate // Admin-only proof of concept for autoclicker automatics + name = "Infinity Gun" + view_range = 12 + projectile_type = /obj/item/projectile/bullet/manned_turret + +/obj/machinery/manned_turret/ultimate/checkfire(atom/targeted_atom, mob/user) + target = targeted_atom + if(target == user || target == get_turf(src)) + return + target_turf = get_turf(target) + fire_helper(user) + +/obj/item/gun_control + name = "turret controls" + icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "offhand" + w_class = WEIGHT_CLASS_HUGE + flags_1 = ABSTRACT_1 | NODROP_1 | NOBLUDGEON_1 | DROPDEL_1 + resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF + var/obj/machinery/manned_turret/turret + +/obj/item/gun_control/Initialize() + . = ..() + turret = loc + if(!istype(turret)) + return INITIALIZE_HINT_QDEL + +/obj/item/gun_control/Destroy() + turret = null + ..() + +/obj/item/gun_control/CanItemAutoclick() + return TRUE + +/obj/item/gun_control/attack_obj(obj/O, mob/living/user) + user.changeNext_move(CLICK_CD_MELEE) + O.attacked_by(src, user) + +/obj/item/gun_control/attack(mob/living/M, mob/living/user) + user.lastattacked = M + M.lastattacker = user + M.attacked_by(src, user) + add_fingerprint(user) + +/obj/item/gun_control/afterattack(atom/targeted_atom, mob/user, flag, params) + ..() + var/obj/machinery/manned_turret/E = user.buckled + E.calculated_projectile_vars = calculate_projectile_angle_and_pixel_offsets(user, params) + E.direction_track(user, targeted_atom) + E.checkfire(targeted_atom, user) \ No newline at end of file diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index 217644c4ae..65a78d0ef0 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -204,9 +204,9 @@ category = CAT_WEAPONRY subcategory = CAT_WEAPON -/datum/crafting_recipe/meteorshot - name = "Meteorshot Shell" - result = /obj/item/ammo_casing/shotgun/meteorshot +/datum/crafting_recipe/meteorslug + name = "Meteorslug Shell" + result = /obj/item/ammo_casing/shotgun/meteorslug reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, /obj/item/rcd_ammo = 1, /obj/item/stock_parts/manipulator = 2) @@ -228,7 +228,7 @@ /datum/crafting_recipe/dragonsbreath name = "Dragonsbreath Shell" - result = /obj/item/ammo_casing/shotgun/incendiary/dragonsbreath + result = /obj/item/ammo_casing/shotgun/dragonsbreath reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, /datum/reagent/phosphorus = 5) tools = list(/obj/item/screwdriver) time = 5 @@ -270,17 +270,6 @@ category = CAT_WEAPONRY subcategory = CAT_AMMO -/datum/crafting_recipe/improvisedslugoverload - name = "Overload Improvised Shell" - result = /obj/item/ammo_casing/shotgun/improvised/overload - reqs = list(/obj/item/ammo_casing/shotgun/improvised = 1, - /datum/reagent/blackpowder = 10, - /datum/reagent/toxin/plasma = 20) - tools = list(/obj/item/screwdriver) - time = 5 - category = CAT_WEAPONRY - subcategory = CAT_AMMO - /datum/crafting_recipe/laserslug name = "Laser Slug Shell" result = /obj/item/ammo_casing/shotgun/laserslug diff --git a/code/modules/mob/living/simple_animal/hostile/stickman.dm b/code/modules/mob/living/simple_animal/hostile/stickman.dm index fd66b8d0ae..44a0a06cdc 100644 --- a/code/modules/mob/living/simple_animal/hostile/stickman.dm +++ b/code/modules/mob/living/simple_animal/hostile/stickman.dm @@ -38,7 +38,7 @@ minimum_distance = 5 icon_state = "stickmanranged" icon_living = "stickmanranged" - casingtype = /obj/item/ammo_casing/c45nostamina + casingtype = /obj/item/ammo_casing/c45/nostamina projectilesound = 'sound/misc/bang.ogg' loot = list(/obj/item/gun/ballistic/automatic/pistol/stickman) diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index 7cadba01d9..11331e7ab7 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -95,7 +95,7 @@ minimum_distance = 5 icon_state = "syndicateranged" icon_living = "syndicateranged" - casingtype = /obj/item/ammo_casing/c45nostamina + casingtype = /obj/item/ammo_casing/c45/nostamina projectilesound = 'sound/weapons/gunshot_smg.ogg' loot = list(/obj/effect/gibspawner/human) diff --git a/code/modules/projectiles/ammunition/ammo_casings.dm b/code/modules/projectiles/ammunition/ammo_casings.dm index 65cce2b7c7..848d690853 100644 --- a/code/modules/projectiles/ammunition/ammo_casings.dm +++ b/code/modules/projectiles/ammunition/ammo_casings.dm @@ -1,100 +1,126 @@ +// .357 (Syndie Revolver) + /obj/item/ammo_casing/a357 + name = ".357 bullet casing" desc = "A .357 bullet casing." caliber = "357" - projectile_type = /obj/item/projectile/bullet + projectile_type = /obj/item/projectile/bullet/a357 + +// 7.62 (Nagant Rifle) /obj/item/ammo_casing/a762 + name = "7.62 bullet casing" desc = "A 7.62 bullet casing." icon_state = "762-casing" caliber = "a762" - projectile_type = /obj/item/projectile/bullet + projectile_type = /obj/item/projectile/bullet/a762 /obj/item/ammo_casing/a762/enchanted - projectile_type = /obj/item/projectile/bullet/weakbullet3 + projectile_type = /obj/item/projectile/bullet/a762_enchanted -/obj/item/ammo_casing/a50 - desc = "A .50AE bullet casing." - caliber = ".50" - projectile_type = /obj/item/projectile/bullet - -/obj/item/ammo_casing/c38 - desc = "A .38 bullet casing." - caliber = "38" - projectile_type = /obj/item/projectile/bullet/weakbullet2 - -/obj/item/ammo_casing/c10mm - desc = "A 10mm bullet casing." - caliber = "10mm" - projectile_type = /obj/item/projectile/bullet/midbullet3 - -/obj/item/ammo_casing/c10mm/ap - projectile_type = /obj/item/projectile/bullet/midbullet3/ap - -/obj/item/ammo_casing/c10mm/fire - projectile_type = /obj/item/projectile/bullet/midbullet3/fire - -/obj/item/ammo_casing/c10mm/hp - projectile_type = /obj/item/projectile/bullet/midbullet3/hp - -/obj/item/ammo_casing/c9mm - desc = "A 9mm bullet casing." - caliber = "9mm" - projectile_type = /obj/item/projectile/bullet/weakbullet3 - -/obj/item/ammo_casing/c9mmap - desc = "A 9mm bullet casing." - caliber = "9mm" - projectile_type =/obj/item/projectile/bullet/armourpiercing - -/obj/item/ammo_casing/c9mmtox - desc = "A 9mm bullet casing." - caliber = "9mm" - projectile_type = /obj/item/projectile/bullet/toxinbullet - -/obj/item/ammo_casing/c9mminc - desc = "A 9mm bullet casing." - caliber = "9mm" - projectile_type = /obj/item/projectile/bullet/incendiary/firebullet - -/obj/item/ammo_casing/c46x30mm - desc = "A 4.6x30mm bullet casing." - caliber = "4.6x30mm" - projectile_type = /obj/item/projectile/bullet/weakbullet3 - -/obj/item/ammo_casing/c46x30mmap - desc = "A 4.6x30mm bullet casing." - caliber = "4.6x30mm" - projectile_type =/obj/item/projectile/bullet/armourpiercing - -/obj/item/ammo_casing/c46x30mmtox - desc = "A 4.6x30mm bullet casing." - caliber = "4.6x30mm" - projectile_type = /obj/item/projectile/bullet/toxinbullet - -/obj/item/ammo_casing/c46x30mminc - desc = "A 4.6x30mm bullet casing." - caliber = "4.6x30mm" - projectile_type = /obj/item/projectile/bullet/incendiary/firebullet - -/obj/item/ammo_casing/c45 - desc = "A .45 bullet casing." - caliber = ".45" - projectile_type = /obj/item/projectile/bullet/midbullet - -/obj/item/ammo_casing/c45nostamina - desc = "A .45 bullet casing." - caliber = ".45" - projectile_type = /obj/item/projectile/bullet/midbullet3 +// 7.62x38mmR (Nagant Revolver) /obj/item/ammo_casing/n762 + name = "7.62x38mmR bullet casing" desc = "A 7.62x38mmR bullet casing." caliber = "n762" - projectile_type = /obj/item/projectile/bullet + projectile_type = /obj/item/projectile/bullet/n762 + +// .50AE (Desert Eagle) + +/obj/item/ammo_casing/a50AE + name = ".50AE bullet casing" + desc = "A .50AE bullet casing." + caliber = ".50" + projectile_type = /obj/item/projectile/bullet/a50AE + +// .38 (Detective's Gun) + +/obj/item/ammo_casing/c38 + name = ".38 bullet casing" + desc = "A .38 bullet casing." + caliber = "38" + projectile_type = /obj/item/projectile/bullet/c38 + +// 10mm (Stechkin) + +/obj/item/ammo_casing/c10mm + name = ".10mm bullet casing" + desc = "A 10mm bullet casing." + caliber = "10mm" + projectile_type = /obj/item/projectile/bullet/c10mm + +/obj/item/ammo_casing/c10mm/ap + name = ".10mm armor-piercing bullet casing" + desc = "A 10mm armor-piercing bullet casing." + projectile_type = /obj/item/projectile/bullet/c10mm_ap + +/obj/item/ammo_casing/c10mm/hp + name = ".10mm hollow-point bullet casing" + desc = "A 10mm hollow-point bullet casing." + projectile_type = /obj/item/projectile/bullet/c10mm_hp + +/obj/item/ammo_casing/c10mm/fire + name = ".10mm incendiary bullet casing" + desc = "A 10mm incendiary bullet casing." + projectile_type = /obj/item/projectile/bullet/incendiary/c10mm + +// 9mm (Stechkin APS) + +/obj/item/ammo_casing/c9mm + name = "9mm bullet casing" + desc = "A 9mm bullet casing." + caliber = "9mm" + projectile_type = /obj/item/projectile/bullet/c9mm + +/obj/item/ammo_casing/c9mm/ap + name = "9mm armor-piercing bullet casing" + desc = "A 9mm armor-piercing bullet casing." + projectile_type =/obj/item/projectile/bullet/c9mm_ap + +/obj/item/ammo_casing/c9mm/inc + name = "9mm incendiary bullet casing" + desc = "A 9mm incendiary bullet casing." + projectile_type = /obj/item/projectile/bullet/incendiary/c9mm + +// 4.6x30mm (Autorifles) + +/obj/item/ammo_casing/c46x30mm + name = "4.6x30mm bullet casing" + desc = "A 4.6x30mm bullet casing." + caliber = "4.6x30mm" + projectile_type = /obj/item/projectile/bullet/c46x30mm + +/obj/item/ammo_casing/c46x30mm/ap + name = "4.6x30mm armor-piercing bullet casing" + desc = "A 4.6x30mm armor-piercing bullet casing." + projectile_type = /obj/item/projectile/bullet/c46x30mm_ap + +/obj/item/ammo_casing/c46x30mm/inc + name = "4.6x30mm incendiary bullet casing" + desc = "A 4.6x30mm incendiary bullet casing." + projectile_type = /obj/item/projectile/bullet/incendiary/c46x30mm + +// .45 (M1911) + +/obj/item/ammo_casing/c45 + name = ".45 bullet casing" + desc = "A .45 bullet casing." + caliber = ".45" + projectile_type = /obj/item/projectile/bullet/c45 + +/obj/item/ammo_casing/c45/nostamina + projectile_type = /obj/item/projectile/bullet/c45_nostamina + +// 5.56mm (M-90gl Carbine) /obj/item/ammo_casing/a556 + name = "5.56mm bullet casing" desc = "A 5.56mm bullet casing." caliber = "a556" - projectile_type = /obj/item/projectile/bullet/heavybullet + projectile_type = /obj/item/projectile/bullet/a556 + +// 40mm (Grenade Launcher) /obj/item/ammo_casing/a40mm name = "40mm HE shell" @@ -103,148 +129,93 @@ icon_state = "40mmHE" projectile_type = /obj/item/projectile/bullet/a40mm +// .50 (Sniper) - -/////SNIPER ROUNDS - -/obj/item/ammo_casing/point50 +/obj/item/ammo_casing/p50 + name = ".50 bullet casing" desc = "A .50 bullet casing." caliber = ".50" - projectile_type = /obj/item/projectile/bullet/sniper + projectile_type = /obj/item/projectile/bullet/p50 icon_state = ".50" -/obj/item/ammo_casing/soporific +/obj/item/ammo_casing/p50/soporific + name = ".50 soporific bullet casing" desc = "A .50 bullet casing, specialised in sending the target to sleep, instead of hell." - caliber = ".50" - projectile_type = /obj/item/projectile/bullet/sniper/soporific + projectile_type = /obj/item/projectile/bullet/p50/soporific icon_state = "sleeper" -/obj/item/ammo_casing/haemorrhage - desc = "A .50 bullet casing, specialised in causing massive bloodloss." - caliber = ".50" - projectile_type = /obj/item/projectile/bullet/sniper/haemorrhage - icon_state = ".50" - -/obj/item/ammo_casing/penetrator +/obj/item/ammo_casing/p50/penetrator + name = ".50 penetrator round bullet casing" desc = "A .50 caliber penetrator round casing." - caliber = ".50" - projectile_type = /obj/item/projectile/bullet/sniper/penetrator - icon_state = ".50" + projectile_type = /obj/item/projectile/bullet/p50/penetrator -/obj/item/ammo_casing/point50/gang - desc = "A black market .50 bullet casing." - projectile_type = /obj/item/projectile/bullet/sniper/gang - -/obj/item/ammo_casing/point50/gang/sleeper - desc = "Am illegally modified tranquilizer round." - projectile_type = /obj/item/projectile/bullet/sniper/gang/sleeper - icon_state = "sleeper" - -/// SAW ROUNDS +// 1.95x129mm (SAW) /obj/item/ammo_casing/mm195x129 + name = "1.95x129mm bullet casing" desc = "A 1.95x129mm bullet casing." icon_state = "762-casing" caliber = "mm195129" - projectile_type = /obj/item/projectile/bullet/saw - -/obj/item/ammo_casing/mm195x129/bleeding - desc = "A 1.95x129mm bullet casing with specialized inner-casing, that when it makes contact with a target, releases tiny shrapnel to induce internal bleeding." - icon_state = "762-casing" - projectile_type = /obj/item/projectile/bullet/saw/bleeding - -/obj/item/ammo_casing/mm195x129/hollow - desc = "A 1.95x129mm bullet casing designed to cause more damage to unarmored targets." - projectile_type = /obj/item/projectile/bullet/saw/hollow + projectile_type = /obj/item/projectile/bullet/mm195x129 /obj/item/ammo_casing/mm195x129/ap + name = "1.95x129mm armor-piercing bullet casing" desc = "A 1.95x129mm bullet casing designed with a hardened-tipped core to help penetrate armored targets." - projectile_type = /obj/item/projectile/bullet/saw/ap + projectile_type = /obj/item/projectile/bullet/mm195x129_ap + +/obj/item/ammo_casing/mm195x129/hollow + name = "1.95x129mm hollow-point bullet casing" + desc = "A 1.95x129mm bullet casing designed to cause more damage to unarmored targets." + projectile_type = /obj/item/projectile/bullet/mm195x129_hp /obj/item/ammo_casing/mm195x129/incen + name = "1.95x129mm incendiary bullet casing" desc = "A 1.95x129mm bullet casing designed with a chemical-filled capsule on the tip that when bursted, reacts with the atmosphere to produce a fireball, engulfing the target in flames. " - projectile_type = /obj/item/projectile/bullet/saw/incen + projectile_type = /obj/item/projectile/bullet/incendiary/mm195x129 - - - -//SHOTGUN ROUNDS +// Shotgun /obj/item/ammo_casing/shotgun name = "shotgun slug" desc = "A 12 gauge lead slug." icon_state = "blshell" caliber = "shotgun" - projectile_type = /obj/item/projectile/bullet + projectile_type = /obj/item/projectile/bullet/shotgun_slug materials = list(MAT_METAL=4000) - -/obj/item/ammo_casing/shotgun/buckshot - name = "buckshot shell" - desc = "A 12 gauge buckshot shell." - icon_state = "gshell" - projectile_type = /obj/item/projectile/bullet/pellet - pellets = 6 - variance = 25 - -/obj/item/ammo_casing/shotgun/rubbershot - name = "rubber shot" - desc = "A shotgun casing filled with densely-packed rubber balls, used to incapacitate crowds from a distance." - icon_state = "bshell" - projectile_type = /obj/item/projectile/bullet/rpellet - pellets = 6 - variance = 25 - materials = list(MAT_METAL=4000) - - /obj/item/ammo_casing/shotgun/beanbag name = "beanbag slug" desc = "A weak beanbag slug for riot control." icon_state = "bshell" - projectile_type = /obj/item/projectile/bullet/weakbullet + projectile_type = /obj/item/projectile/bullet/shotgun_beanbag materials = list(MAT_METAL=250) +/obj/item/ammo_casing/shotgun/incendiary + name = "incendiary slug" + desc = "An incendiary-coated shotgun slug." + icon_state = "ishell" + projectile_type = /obj/item/projectile/bullet/incendiary/shotgun -/obj/item/ammo_casing/shotgun/improvised - name = "improvised shell" - desc = "An extremely weak shotgun shell with multiple small pellets made out of metal shards." - icon_state = "improvshell" - projectile_type = /obj/item/projectile/bullet/pellet/weak - materials = list(MAT_METAL=250) - pellets = 10 - variance = 25 - - -/obj/item/ammo_casing/shotgun/improvised/overload - name = "overloaded improvised shell" - desc = "An extremely weak shotgun shell with multiple small pellets made out of metal shards. This one has been packed with even more \ - propellant. It's like playing russian roulette, with a shotgun." - icon_state = "improvshell" - projectile_type = /obj/item/projectile/bullet/pellet/overload - materials = list(MAT_METAL=250) +/obj/item/ammo_casing/shotgun/dragonsbreath + name = "dragonsbreath shell" + desc = "A shotgun shell which fires a spread of incendiary pellets." + icon_state = "ishell2" + projectile_type = /obj/item/projectile/bullet/incendiary/shotgun/dragonsbreath pellets = 4 - variance = 40 - + variance = 35 /obj/item/ammo_casing/shotgun/stunslug name = "taser slug" desc = "A stunning taser slug." icon_state = "stunshell" - projectile_type = /obj/item/projectile/bullet/stunshot + projectile_type = /obj/item/projectile/bullet/shotgun_stunslug materials = list(MAT_METAL=250) - -/obj/item/ammo_casing/shotgun/meteorshot - name = "meteorshot shell" +/obj/item/ammo_casing/shotgun/meteorslug + name = "meteorslug shell" desc = "A shotgun shell rigged with CMC technology, which launches a massive slug when fired." icon_state = "mshell" - projectile_type = /obj/item/projectile/bullet/meteorshot - -/obj/item/ammo_casing/shotgun/breaching - name = "breaching shell" - desc = "An economic version of the meteorshot, utilizing similar technologies. Great for busting down doors." - icon_state = "mshell" - projectile_type = /obj/item/projectile/bullet/meteorshot/weak + projectile_type = /obj/item/projectile/bullet/shotgun_meteorslug /obj/item/ammo_casing/shotgun/pulseslug name = "pulse slug" @@ -252,27 +223,39 @@ energy blast. While the heat and power drain limit it to one use, it can still allow an operator to engage targets that ballistic ammunition \ would have difficulty with." icon_state = "pshell" - projectile_type = /obj/item/projectile/beam/pulse/shot - -/obj/item/ammo_casing/shotgun/incendiary - name = "incendiary slug" - desc = "An incendiary-coated shotgun slug." - icon_state = "ishell" - projectile_type = /obj/item/projectile/bullet/incendiary/shell + projectile_type = /obj/item/projectile/beam/pulse/shotgun /obj/item/ammo_casing/shotgun/frag12 name = "FRAG-12 slug" desc = "A high explosive breaching round for a 12 gauge shotgun." icon_state = "heshell" - projectile_type = /obj/item/projectile/bullet/frag12 + projectile_type = /obj/item/projectile/bullet/shotgun_frag12 -/obj/item/ammo_casing/shotgun/incendiary/dragonsbreath - name = "dragonsbreath shell" - desc = "A shotgun shell which fires a spread of incendiary pellets." - icon_state = "ishell2" - projectile_type = /obj/item/projectile/bullet/incendiary/shell/dragonsbreath - pellets = 4 - variance = 35 +/obj/item/ammo_casing/shotgun/buckshot + name = "buckshot shell" + desc = "A 12 gauge buckshot shell." + icon_state = "gshell" + projectile_type = /obj/item/projectile/bullet/pellet/shotgun_buckshot + pellets = 6 + variance = 25 + +/obj/item/ammo_casing/shotgun/rubbershot + name = "rubber shot" + desc = "A shotgun casing filled with densely-packed rubber balls, used to incapacitate crowds from a distance." + icon_state = "bshell" + projectile_type = /obj/item/projectile/bullet/pellet/shotgun_rubbershot + pellets = 6 + variance = 25 + materials = list(MAT_METAL=4000) + +/obj/item/ammo_casing/shotgun/improvised + name = "improvised shell" + desc = "An extremely weak shotgun shell with multiple small pellets made out of metal shards." + icon_state = "improvshell" + projectile_type = /obj/item/projectile/bullet/pellet/shotgun_improvised + materials = list(MAT_METAL=250) + pellets = 10 + variance = 25 /obj/item/ammo_casing/shotgun/ion name = "ion shell" @@ -319,4 +302,4 @@ reagents.add_reagent("spore", 6) reagents.add_reagent("mutetoxin", 6) //;HELP OPS IN MAINT reagents.add_reagent("coniine", 6) - reagents.add_reagent("sodium_thiopental", 6) + reagents.add_reagent("sodium_thiopental", 6) \ No newline at end of file diff --git a/code/modules/projectiles/ammunition/special.dm b/code/modules/projectiles/ammunition/special.dm index fa9c2ae5b0..11fd12da70 100644 --- a/code/modules/projectiles/ammunition/special.dm +++ b/code/modules/projectiles/ammunition/special.dm @@ -85,7 +85,7 @@ ..() /obj/item/ammo_casing/energy/c3dbullet - projectile_type = /obj/item/projectile/bullet/midbullet3 + projectile_type = /obj/item/projectile/bullet/c3d select_name = "spraydown" fire_sound = 'sound/weapons/gunshot_smg.ogg' e_cost = 20 diff --git a/code/modules/projectiles/boxes_magazines/external_mag.dm b/code/modules/projectiles/boxes_magazines/external_mag.dm index 525466be28..5ffe1b475a 100644 --- a/code/modules/projectiles/boxes_magazines/external_mag.dm +++ b/code/modules/projectiles/boxes_magazines/external_mag.dm @@ -1,6 +1,4 @@ - - ///////////EXTERNAL MAGAZINES//////////////// /obj/item/ammo_box/magazine/m10mm @@ -72,25 +70,16 @@ /obj/item/ammo_box/magazine/wt550m9/wtap name = "wt550 magazine (Armour Piercing 4.6x30mm)" icon_state = "46x30mmtA-20" - ammo_type = /obj/item/ammo_casing/c46x30mmap + ammo_type = /obj/item/ammo_casing/c46x30mm/ap /obj/item/ammo_box/magazine/wt550m9/wtap/update_icon() ..() icon_state = "46x30mmtA-[round(ammo_count(),4)]" -/obj/item/ammo_box/magazine/wt550m9/wttx - name = "wt550 magazine (Toxin Tipped 4.6x30mm)" - icon_state = "46x30mmtT-20" - ammo_type = /obj/item/ammo_casing/c46x30mmtox - -/obj/item/ammo_box/magazine/wt550m9/wttx/update_icon() - ..() - icon_state = "46x30mmtT-[round(ammo_count(),4)]" - /obj/item/ammo_box/magazine/wt550m9/wtic name = "wt550 magazine (Incindiary 4.6x30mm)" icon_state = "46x30mmtI-20" - ammo_type = /obj/item/ammo_casing/c46x30mminc + ammo_type = /obj/item/ammo_casing/c46x30mm/inc /obj/item/ammo_box/magazine/wt550m9/wtic/update_icon() ..() @@ -120,15 +109,11 @@ /obj/item/ammo_box/magazine/smgm9mm/ap name = "SMG magazine (Armour Piercing 9mm)" - ammo_type = /obj/item/ammo_casing/c9mmap - -/obj/item/ammo_box/magazine/smgm9mm/toxin - name = "SMG magazine (Toxin Tipped 9mm)" - ammo_type = /obj/item/ammo_casing/c9mmtox + ammo_type = /obj/item/ammo_casing/c9mm/ap /obj/item/ammo_box/magazine/smgm9mm/fire name = "SMG Magazine (Incindiary 9mm)" - ammo_type = /obj/item/ammo_casing/c9mminc + ammo_type = /obj/item/ammo_casing/c9mm/inc /obj/item/ammo_box/magazine/pistolm9mm name = "pistol magazine (9mm)" @@ -145,7 +130,7 @@ name = "SMG magazine (.45)" icon_state = "c20r45-24" origin_tech = "combat=2" - ammo_type = /obj/item/ammo_casing/c45nostamina + ammo_type = /obj/item/ammo_casing/c45/nostamina caliber = ".45" max_ammo = 24 @@ -164,7 +149,7 @@ name = "handgun magazine (.50ae)" icon_state = "50ae" origin_tech = "combat=2" - ammo_type = /obj/item/ammo_casing/a50 + ammo_type = /obj/item/ammo_casing/a50AE caliber = ".50" max_ammo = 7 multiple_sprites = 1 @@ -212,17 +197,17 @@ /obj/item/ammo_box/magazine/m12g/dragon name = "shotgun magazine (12g dragon's breath)" icon_state = "m12gf" - ammo_type = /obj/item/ammo_casing/shotgun/incendiary/dragonsbreath + ammo_type = /obj/item/ammo_casing/shotgun/dragonsbreath /obj/item/ammo_box/magazine/m12g/bioterror name = "shotgun magazine (12g bioterror)" icon_state = "m12gt" ammo_type = /obj/item/ammo_casing/shotgun/dart/bioterror -/obj/item/ammo_box/magazine/m12g/breach - name = "shotgun magazine (12g breacher slugs)" +/obj/item/ammo_box/magazine/m12g/meteor + name = "shotgun magazine (12g meteor slugs)" icon_state = "m12gbc" - ammo_type = /obj/item/ammo_casing/shotgun/breaching + ammo_type = /obj/item/ammo_casing/shotgun/meteorslug //// SNIPER MAGAZINES @@ -231,7 +216,7 @@ name = "sniper rounds (.50)" icon_state = ".50mag" origin_tech = "combat=6;syndicate=2" - ammo_type = /obj/item/ammo_casing/point50 + ammo_type = /obj/item/ammo_casing/p50 max_ammo = 6 caliber = ".50" @@ -246,37 +231,17 @@ desc = "Soporific sniper rounds, designed for happy days and dead quiet nights..." icon_state = "soporific" origin_tech = "combat=6;syndicate=3" - ammo_type = /obj/item/ammo_casing/soporific + ammo_type = /obj/item/ammo_casing/p50/soporific max_ammo = 3 caliber = ".50" -/obj/item/ammo_box/magazine/sniper_rounds/haemorrhage - name = "sniper rounds (Bleed)" - desc = "Haemorrhage sniper rounds, leaves your target in a pool of crimson pain" - icon_state = "haemorrhage" - ammo_type = /obj/item/ammo_casing/haemorrhage - max_ammo = 5 - caliber = ".50" - /obj/item/ammo_box/magazine/sniper_rounds/penetrator name = "sniper rounds (penetrator)" desc = "An extremely powerful round capable of passing straight through cover and anyone unfortunate enough to be behind it." - ammo_type = /obj/item/ammo_casing/penetrator + ammo_type = /obj/item/ammo_casing/p50/penetrator origin_tech = "combat=6;syndicate=3" max_ammo = 5 -/obj/item/ammo_box/magazine/sniper_rounds/gang - name = "black market sniper rounds (.50)" - icon_state = ".50mag" - origin_tech = "combat=6" - ammo_type = /obj/item/ammo_casing/point50/gang - -/obj/item/ammo_box/magazine/sniper_rounds/gang/sleeper - name = "illegally modified tranquilizer round" - icon_state = "soporific" - origin_tech = "combat=6" - ammo_type = /obj/item/ammo_casing/point50/gang/sleeper - //// SAW MAGAZINES /obj/item/ammo_box/magazine/mm195x129 @@ -287,11 +252,6 @@ caliber = "mm195129" max_ammo = 50 -/obj/item/ammo_box/magazine/mm195x129/bleeding - name = "box magazine (Bleeding 1.95x129mm)" - origin_tech = "combat=3" - ammo_type = /obj/item/ammo_casing/mm195x129/bleeding - /obj/item/ammo_box/magazine/mm195x129/hollow name = "box magazine (Hollow-Point 1.95x129mm)" origin_tech = "combat=3" diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm index 5388bf8e0a..423cd56202 100644 --- a/code/modules/projectiles/guns/ballistic/automatic.dm +++ b/code/modules/projectiles/guns/ballistic/automatic.dm @@ -384,11 +384,6 @@ pin = /obj/item/device/firing_pin/implant/pindicate origin_tech = "combat=7;syndicate=6" -/obj/item/gun/ballistic/automatic/sniper_rifle/gang - name = "black market sniper rifle" - desc = "A long ranged weapon that does significant damage. It is well worn from years of service." - mag_type = /obj/item/ammo_box/magazine/sniper_rounds/gang - // Old Semi-Auto Rifle // /obj/item/gun/ballistic/automatic/surplus diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 844a8a4662..d1d7b50cf5 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -77,7 +77,7 @@ if(isturf(target) || istype(target, /obj/structure/)) target.ex_act(EXPLODE_HEAVY) -/obj/item/projectile/beam/pulse/shot +/obj/item/projectile/beam/pulse/shotgun damage = 40 /obj/item/projectile/beam/pulse/heavy diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index d11fa850c2..6f4ae50243 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -3,105 +3,238 @@ icon_state = "bullet" damage = 60 damage_type = BRUTE - nodamage = 0 + nodamage = FALSE flag = "bullet" hitsound_wall = "ricochet" impact_effect_type = /obj/effect/temp_visual/impact_effect -/obj/item/projectile/bullet/weakbullet //beanbag, heavy stamina damage - damage = 5 - stamina = 80 - -/obj/item/projectile/bullet/weakbullet2 //detective revolver instastuns, but multiple shots are better for keeping punks down - damage = 15 - knockdown = 30 - stamina = 50 - -/obj/item/projectile/bullet/weakbullet3 - damage = 20 - -/obj/item/projectile/bullet/toxinbullet - damage = 15 - damage_type = TOX - -/obj/item/projectile/bullet/incendiary/firebullet - damage = 10 - -/obj/item/projectile/bullet/armourpiercing - damage = 15 - armour_penetration = 40 - -/obj/item/projectile/bullet/pellet - name = "pellet" - damage = 12.5 - /obj/item/projectile/bullet/pellet/Range() ..() damage += -0.75 if(damage < 0) qdel(src) -/obj/item/projectile/bullet/pellet/weak - damage = 6 - -/obj/item/projectile/bullet/pellet/weak/New() - range = rand(1, 8) - ..() - -/obj/item/projectile/bullet/pellet/weak/on_range() - do_sparks(1, TRUE, src) - ..() - -/obj/item/projectile/bullet/pellet/overload - damage = 3 - -/obj/item/projectile/bullet/pellet/overload/New() - range = rand(1, 10) - ..() - -/obj/item/projectile/bullet/pellet/overload/on_hit(atom/target, blocked = FALSE) - ..() - explosion(target, 0, 0, 2) - -/obj/item/projectile/bullet/pellet/overload/on_range() - explosion(src, 0, 0, 2) - do_sparks(3, TRUE, src) - ..() - -/obj/item/projectile/bullet/midbullet +/obj/item/projectile/bullet/incendiary damage = 20 - stamina = 65 //two round bursts from the c20r knocks people down + var/fire_stacks = 4 +/obj/item/projectile/bullet/incendiary/on_hit(atom/target, blocked = FALSE) + . = ..() + if(iscarbon(target)) + var/mob/living/carbon/M = target + M.adjust_fire_stacks(fire_stacks) + M.IgniteMob() -/obj/item/projectile/bullet/midbullet2 - damage = 25 +/obj/item/projectile/bullet/incendiary/Move() + . = ..() + var/turf/location = get_turf(src) + if(location) + new /obj/effect/hotspot(location) + location.hotspot_expose(700, 50, 1) -/obj/item/projectile/bullet/midbullet3 +// .357 (Syndie Revolver) + +/obj/item/projectile/bullet/a357 + name = ".357 bullet" + damage = 60 + +// 7.62 (Nagant Rifle) + +/obj/item/projectile/bullet/a762 + name = "7.62 bullet" + damage = 60 + +/obj/item/projectile/bullet/a762_enchanted + name = "enchanted 7.62 bullet" + damage = 5 + stamina = 80 + +// 7.62x38mmR (Nagant Revolver) + +/obj/item/projectile/bullet/n762 + name = "7.62x38mmR bullet" + damage = 60 + +// .50AE (Desert Eagle) + +/obj/item/projectile/bullet/a50AE + name = ".50AE bullet" + damage = 60 + +// .38 (Detective's Gun) + +/obj/item/projectile/bullet/c38 + name = ".38 bullet" + damage = 15 + knockdown = 30 + stamina = 50 + +// 10mm (Stechkin) + +/obj/item/projectile/bullet/c10mm + name = "10mm bullet" damage = 30 -/obj/item/projectile/bullet/midbullet3/hp - damage = 40 - armour_penetration = -50 - -/obj/item/projectile/bullet/midbullet3/ap +/obj/item/projectile/bullet/c10mm_ap + name = "10mm armor-piercing bullet" damage = 27 armour_penetration = 40 -/obj/item/projectile/bullet/midbullet3/fire/on_hit(atom/target, blocked = FALSE) - if(..(target, blocked)) - var/mob/living/M = target - M.adjust_fire_stacks(1) - M.IgniteMob() +/obj/item/projectile/bullet/c10mm_hp + name = "10mm hollow-point bullet" + damage = 40 + armour_penetration = -50 -/obj/item/projectile/bullet/heavybullet +/obj/item/projectile/bullet/incendiary/c10mm + name = "10mm incendiary bullet" + damage = 15 + fire_stacks = 2 + +// 9mm (Stechkin APS) + +/obj/item/projectile/bullet/c9mm + name = "9mm bullet" + damage = 20 + +/obj/item/projectile/bullet/c9mm_ap + name = "9mm armor-piercing bullet" + damage = 15 + armour_penetration = 40 + +/obj/item/projectile/bullet/incendiary/c9mm + name = "9mm incendiary bullet" + damage = 10 + fire_stacks = 1 + +// 4.6x30mm (Autorifles) + +/obj/item/projectile/bullet/c46x30mm + desc = "4.6x30mm bullet" + damage = 20 + +/obj/item/projectile/bullet/c46x30mm_ap + name = "4.6x30mm armor-piercing bullet" + damage = 15 + armour_penetration = 40 + +/obj/item/projectile/bullet/incendiary/c46x30mm + name = "4.6x30mm incendiary bullet" + damage = 10 + fire_stacks = 1 + +// .45 (M1911) + +/obj/item/projectile/bullet/c45 + name = ".45 bullet" + damage = 20 + stamina = 65 + +/obj/item/projectile/bullet/c45_nostamina + name = ".45 bullet" + damage = 20 + +// 5.56mm (M-90gl Carbine) + +/obj/item/projectile/bullet/a556 + name = "5.56mm bullet" damage = 35 -/obj/item/projectile/bullet/rpellet - damage = 3 - stamina = 25 +// 40mm (Grenade Launcher -/obj/item/projectile/bullet/stunshot //taser slugs for shotguns, nothing special - name = "stunshot" +/obj/item/projectile/bullet/a40mm + name ="40mm grenade" + desc = "USE A WEEL GUN" + icon_state= "bolter" + damage = 60 + +/obj/item/projectile/bullet/a40mm/on_hit(atom/target, blocked = FALSE) + ..() + explosion(target, -1, 0, 2, 1, 0, flame_range = 3) + return TRUE + +// .50 (Sniper) + +/obj/item/projectile/bullet/p50 + name =".50 bullet" + speed = 0 //360 alwaysscope. + damage = 70 + knockdown = 100 + dismemberment = 50 + armour_penetration = 50 + var/breakthings = TRUE + +/obj/item/projectile/bullet/p50/on_hit(atom/target, blocked = 0) + if((blocked != 100) && (!ismob(target) && breakthings)) + target.ex_act(rand(1,2)) + return ..() + +/obj/item/projectile/bullet/p50/soporific + name =".50 soporific bullet" + armour_penetration = 0 + nodamage = TRUE + dismemberment = 0 + knockdown = 0 + breakthings = FALSE + +/obj/item/projectile/bullet/p50/soporific/on_hit(atom/target, blocked = FALSE) + if((blocked != 100) && isliving(target)) + var/mob/living/L = target + L.Sleeping(400) + return ..() + +/obj/item/projectile/bullet/p50/penetrator + name =".50 penetrator bullet" + icon_state = "gauss" + name = "penetrator round" + damage = 60 + forcedodge = TRUE + dismemberment = 0 //It goes through you cleanly. + knockdown = 0 + breakthings = FALSE + +// 1.95x129mm (SAW) + +/obj/item/projectile/bullet/mm195x129 + name = "1.95x129mm bullet" + damage = 45 + armour_penetration = 5 + +/obj/item/projectile/bullet/mm195x129_ap + name = "1.95x129mm armor-piercing bullet" + damage = 40 + armour_penetration = 75 + +/obj/item/projectile/bullet/mm195x129_hp + name = "1.95x129mm hollow-point bullet" + damage = 60 + armour_penetration = -60 + +/obj/item/projectile/bullet/incendiary/mm195x129 + name = "1.95x129mm incendiary bullet" + damage = 15 + fire_stacks = 3 + +// Shotgun + +/obj/item/projectile/bullet/shotgun_slug + name = "12g shotgun slug" + damage = 60 + +/obj/item/projectile/bullet/shotgun_beanbag + name = "beanbag slug" + damage = 5 + stamina = 80 + +/obj/item/projectile/bullet/incendiary/shotgun + name = "incendiary slug" + damage = 20 + +/obj/item/projectile/bullet/incendiary/shotgun/dragonsbreath + name = "dragonsbreath pellet" + damage = 5 + +/obj/item/projectile/bullet/shotgun_stunslug + name = "stunslug" damage = 5 knockdown = 100 stutter = 5 @@ -110,47 +243,90 @@ icon_state = "spark" color = "#FFFF00" -/obj/item/projectile/bullet/incendiary/on_hit(atom/target, blocked = FALSE) - . = ..() - if(iscarbon(target)) - var/mob/living/carbon/M = target - M.adjust_fire_stacks(4) - M.IgniteMob() - - -/obj/item/projectile/bullet/incendiary/shell - name = "incendiary slug" - damage = 20 - -/obj/item/projectile/bullet/incendiary/shell/Move() - ..() - var/turf/location = get_turf(src) - if(location) - new /obj/effect/hotspot(location) - location.hotspot_expose(700, 50, 1) - -/obj/item/projectile/bullet/incendiary/shell/dragonsbreath - name = "dragonsbreath round" - damage = 5 - - -/obj/item/projectile/bullet/meteorshot - name = "meteor" +/obj/item/projectile/bullet/shotgun_meteorslug + name = "meteorslug" icon = 'icons/obj/meteor.dmi' icon_state = "dust" - damage = 30 - knockdown = 160 + damage = 20 + knockdown = 80 hitsound = 'sound/effects/meteorimpact.ogg' -/obj/item/projectile/bullet/meteorshot/weak - damage = 10 - knockdown = 80 +/obj/item/projectile/bullet/shotgun_meteorslug/on_hit(atom/target, blocked = FALSE) + . = ..() + if(ismovableatom(target)) + var/atom/movable/M = target + var/atom/throw_target = get_edge_target_turf(M, get_dir(src, get_step_away(M, src))) + M.throw_at(throw_target, 3, 2) + +/obj/item/projectile/bullet/shotgun_meteorslug/Initialize() + . = ..() + SpinAnimation() + +/obj/item/projectile/bullet/shotgun_frag12 + name ="frag12 slug" + damage = 25 + knockdown = 50 + +/obj/item/projectile/bullet/shotgun_frag12/on_hit(atom/target, blocked = FALSE) + ..() + explosion(target, -1, 0, 1) + return TRUE + +/obj/item/projectile/bullet/pellet/shotgun_buckshot + name = "buckshot pellet" + damage = 12.5 + +/obj/item/projectile/bullet/pellet/shotgun_rubbershot + damage = 3 + stamina = 25 + +/obj/item/projectile/bullet/pellet/shotgun_improvised + damage = 6 + +/obj/item/projectile/bullet/pellet/shotgun_improvised/Initialize() + . = ..() + range = rand(1, 8) + +/obj/item/projectile/bullet/pellet/shotgun_improvised/on_range() + do_sparks(1, TRUE, src) + ..() + +// Scattershot + +/obj/item/projectile/bullet/scattershot + damage = 20 + stamina = 65 + +// LMD (exosuits) + +/obj/item/projectile/bullet/lmg + damage = 20 + +// Turrets + +/obj/item/projectile/bullet/manned_turret + damage = 20 + +/obj/item/projectile/bullet/syndicate_turret + damage = 20 + +// FNX-99 (Mechs) + +/obj/item/projectile/bullet/incendiary/fnx99 + damage = 20 + +// C3D (Borgs) + +/obj/item/projectile/bullet/c3d + damage = 20 + +// Honker /obj/item/projectile/bullet/honker damage = 0 knockdown = 60 - forcedodge = 1 - nodamage = 1 + forcedodge = TRUE + nodamage = TRUE hitsound = 'sound/items/bikehorn.ogg' icon = 'icons/obj/hydroponics/harvest.dmi' icon_state = "banana" @@ -160,17 +336,7 @@ ..() SpinAnimation() -/obj/item/projectile/bullet/meteorshot/on_hit(atom/target, blocked = FALSE) - . = ..() - if(ismovableatom(target)) - var/atom/movable/M = target - var/atom/throw_target = get_edge_target_turf(M, get_dir(src, get_step_away(M, src))) - M.throw_at(throw_target, 3, 2) - -/obj/item/projectile/bullet/meteorshot/New() - ..() - SpinAnimation() - +// Mime /obj/item/projectile/bullet/mime damage = 20 @@ -181,6 +347,7 @@ var/mob/living/carbon/M = target M.silent = max(M.silent, 10) +// Darts /obj/item/projectile/bullet/dart name = "dart" @@ -210,7 +377,7 @@ ..(target, blocked) reagents.set_reacting(TRUE) reagents.handle_reactions() - return 1 + return TRUE /obj/item/projectile/bullet/dart/metalfoam/New() ..() @@ -223,18 +390,7 @@ name = "syringe" icon_state = "syringeproj" -/obj/item/projectile/bullet/neurotoxin - name = "neurotoxin spit" - icon_state = "neurotoxin" - damage = 5 - damage_type = TOX - knockdown = 100 - -/obj/item/projectile/bullet/neurotoxin/on_hit(atom/target, blocked = FALSE) - if(isalien(target)) - knockdown = 0 - nodamage = 1 - . = ..() // Execute the rest of the code. +// DNA injector /obj/item/projectile/bullet/dnainjector name = "\improper DNA injector" @@ -261,121 +417,3 @@ QDEL_NULL(injector) return ..() -//// SNIPER BULLETS - -/obj/item/projectile/bullet/sniper - speed = 0 //360 alwaysscope. - damage = 70 - knockdown = 100 - dismemberment = 50 - armour_penetration = 50 - var/breakthings = TRUE - -/obj/item/projectile/bullet/sniper/on_hit(atom/target, blocked = FALSE) - if((blocked != 100) && (!ismob(target) && breakthings)) - target.ex_act(rand(1,2)) - return ..() - -/obj/item/projectile/bullet/sniper/gang - damage = 55 - knockdown = 20 - dismemberment = 15 - armour_penetration = 25 - -/obj/item/projectile/bullet/sniper/gang/sleeper - nodamage = 1 - knockdown = 0 - dismemberment = 0 - breakthings = FALSE - -/obj/item/projectile/bullet/sniper/gang/sleeper/on_hit(atom/target, blocked = FALSE) - if((blocked != 100) && isliving(target)) - var/mob/living/L = target - L.blur_eyes(8) - if(L.staminaloss >= 40) - L.Sleeping(400) - else - L.adjustStaminaLoss(55) - return 1 - -/obj/item/projectile/bullet/sniper/soporific - armour_penetration = 0 - nodamage = 1 - dismemberment = 0 - knockdown = 0 - breakthings = FALSE - -/obj/item/projectile/bullet/sniper/soporific/on_hit(atom/target, blocked = FALSE) - if((blocked != 100) && isliving(target)) - var/mob/living/L = target - L.Sleeping(400) - return ..() - - -/obj/item/projectile/bullet/sniper/haemorrhage - armour_penetration = 15 - damage = 15 - dismemberment = 0 - knockdown = 0 - breakthings = FALSE - -/obj/item/projectile/bullet/sniper/haemorrhage/on_hit(atom/target, blocked = FALSE) - if((blocked != 100) && iscarbon(target)) - var/mob/living/carbon/C = target - C.bleed(100) - return ..() - - -/obj/item/projectile/bullet/sniper/penetrator - icon_state = "gauss" - name = "penetrator round" - damage = 60 - forcedodge = 1 - dismemberment = 0 //It goes through you cleanly. - knockdown = 0 - breakthings = FALSE - - - -//// SAW BULLETS - - -/obj/item/projectile/bullet/saw - damage = 45 - armour_penetration = 5 - -/obj/item/projectile/bullet/saw/bleeding - damage = 20 - armour_penetration = 0 - -/obj/item/projectile/bullet/saw/bleeding/on_hit(atom/target, blocked = FALSE) - . = ..() - if((blocked != 100) && iscarbon(target)) - var/mob/living/carbon/C = target - C.bleed(35) - -/obj/item/projectile/bullet/saw/hollow - damage = 60 - armour_penetration = -60 - -/obj/item/projectile/bullet/saw/ap - damage = 40 - armour_penetration = 75 - -/obj/item/projectile/bullet/saw/incen - damage = 7 - armour_penetration = 0 - -/obj/item/projectile/bullet/saw/incen/Move() - ..() - var/turf/location = get_turf(src) - if(location) - new /obj/effect/hotspot(location) - location.hotspot_expose(700, 50, 1) - -/obj/item/projectile/bullet/saw/incen/on_hit(atom/target, blocked = FALSE) - . = ..() - if(iscarbon(target)) - var/mob/living/carbon/M = target - M.adjust_fire_stacks(3) - M.IgniteMob() diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index f9f7686a46..79a3d51eec 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -32,17 +32,6 @@ explosion(target, -1, 0, 2) return 1 -/obj/item/projectile/bullet/a40mm - name ="40mm grenade" - desc = "USE A WEEL GUN" - icon_state= "bolter" - damage = 60 - -/obj/item/projectile/bullet/a40mm/on_hit(atom/target, blocked = FALSE) - ..() - explosion(target, -1, 0, 2, 1, 0, flame_range = 3) - return 1 - /obj/item/projectile/bullet/a84mm name ="anti-armour rocket" desc = "USE A WEEL GUN" @@ -184,16 +173,6 @@ qdel(src) gun.create_portal(src, get_turf(src)) -/obj/item/projectile/bullet/frag12 - name ="explosive slug" - damage = 25 - knockdown = 50 - -/obj/item/projectile/bullet/frag12/on_hit(atom/target, blocked = FALSE) - ..() - explosion(target, -1, 0, 1) - return 1 - /obj/item/projectile/plasma name = "plasma blast" icon_state = "plasmacutter" @@ -616,3 +595,19 @@ /obj/item/projectile/hallucination/death/hal_apply_effect() new /datum/hallucination/death(hal_target, TRUE) + +// Neurotoxin + +/obj/item/projectile/bullet/neurotoxin + name = "neurotoxin spit" + icon_state = "neurotoxin" + damage = 5 + damage_type = TOX + knockdown = 100 + +/obj/item/projectile/bullet/neurotoxin/on_hit(atom/target, blocked = FALSE) + if(isalien(target)) + knockdown = 0 + nodamage = TRUE + return ..() + diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index a03b8c8127..89adfe8edc 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -203,13 +203,6 @@ materials = list(MAT_METAL = 6000, MAT_SILVER = 600, MAT_GLASS = 1000) build_path = /obj/item/ammo_box/magazine/wt550m9/wtic -/datum/design/mag_oldsmg/tx_mag - name = "WT-550 Auto Gun Uranium Magazine (4.6x30mm TX)" - desc = "A 20 round uranium tipped magazine for the out of date security WT-550 Auto Rifle" - id = "mag_oldsmg_tx" - materials = list(MAT_METAL = 6000, MAT_SILVER = 600, MAT_URANIUM = 2000) - build_path = /obj/item/ammo_box/magazine/wt550m9/wttx - /datum/design/stunshell name = "Stun Shell" desc = "A stunning shell for a shotgun." diff --git a/code/modules/spells/spell_types/mime.dm b/code/modules/spells/spell_types/mime.dm index 71a0d89f16..4e5c0605e2 100644 --- a/code/modules/spells/spell_types/mime.dm +++ b/code/modules/spells/spell_types/mime.dm @@ -1,140 +1,280 @@ -/obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall - name = "Invisible Wall" - desc = "The mime's performance transmutates into physical reality." - school = "mime" - panel = "Mime" - summon_type = list(/obj/effect/forcefield/mime) - invocation_type = "emote" - invocation_emote_self = "You form a wall in front of yourself." - summon_lifespan = 300 - charge_max = 300 - clothes_req = 0 - range = 0 - cast_sound = null - human_req = 1 - - action_icon_state = "mime" - action_background_icon_state = "bg_mime" - -/obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall/Click() - if(usr && usr.mind) - if(!usr.mind.miming) - to_chat(usr, "You must dedicate yourself to silence first.") - return - invocation = "[usr.real_name] looks as if a wall is in front of [usr.p_them()]." - else - invocation_type ="none" - ..() - - -/obj/effect/proc_holder/spell/targeted/mime/speak - name = "Speech" - desc = "Make or break a vow of silence." - school = "mime" - panel = "Mime" - clothes_req = 0 - human_req = 1 - charge_max = 3000 - range = -1 - include_user = 1 - - action_icon_state = "mime" - action_background_icon_state = "bg_mime" - -/obj/effect/proc_holder/spell/targeted/mime/speak/Click() - if(!usr) - return - if(!ishuman(usr)) - return - var/mob/living/carbon/human/H = usr - if(H.mind.miming) - still_recharging_msg = "You can't break your vow of silence that fast!" - else - still_recharging_msg = "You'll have to wait before you can give your vow of silence again!" - ..() - -/obj/effect/proc_holder/spell/targeted/mime/speak/cast(list/targets,mob/user = usr) - for(var/mob/living/carbon/human/H in targets) - H.mind.miming=!H.mind.miming - if(H.mind.miming) - to_chat(H, "You make a vow of silence.") - else - to_chat(H, "You break your vow of silence.") - -// These spells can only be gotten from the "Guide for Advanced Mimery series" for Mime Traitors. - -/obj/effect/proc_holder/spell/targeted/forcewall/mime - name = "Invisible Blockade" - desc = "Form an invisible three tile wide blockade." - wall_type = /obj/effect/forcefield/mime/advanced - invocation_type = "emote" - invocation_emote_self = "You form a blockade in front of yourself." - charge_max = 600 - sound = null - clothes_req = 0 - range = -1 - include_user = 1 - - action_icon_state = "mime" - action_background_icon_state = "bg_mime" - -/obj/effect/proc_holder/spell/targeted/forcewall/mime/Click() - if(usr && usr.mind) - if(!usr.mind.miming) - to_chat(usr, "You must dedicate yourself to silence first.") - return - invocation = "[usr.real_name] looks as if a blockade is in front of [usr.p_them()]." - else - invocation_type ="none" - ..() - -/obj/effect/proc_holder/spell/aimed/finger_guns - name = "Finger Guns" - desc = "Shoot a mimed bullet from your fingers that stuns and does some damage." - school = "mime" - panel = "Mime" - charge_max = 300 - clothes_req = 0 - invocation_type = "emote" - invocation_emote_self = "You fire your finger gun!" - range = 20 - projectile_type = /obj/item/projectile/bullet/weakbullet2 - projectile_amount = 3 - sound = null - active_msg = "You draw your fingers!" - deactive_msg = "You put your fingers at ease. Another time." - active = FALSE - - action_icon_state = "mime" - action_background_icon_state = "bg_mime" - base_icon_state = "mime" - - -/obj/effect/proc_holder/spell/aimed/finger_guns/Click() - var/mob/living/carbon/human/owner = usr - if(owner.incapacitated()) - to_chat(owner, "You can't properly point your fingers while incapacitated.") - return - if(usr && usr.mind) - if(!usr.mind.miming) - to_chat(usr, "You must dedicate yourself to silence first.") - return - invocation = "[usr.real_name] fires [usr.p_their()] finger gun!" - else - invocation_type ="none" - ..() - - -/obj/item/spellbook/oneuse/mimery_blockade - spell = /obj/effect/proc_holder/spell/targeted/forcewall/mime - spellname = "" - name = "Guide to Advanced Mimery Vol 1" - desc = "The pages don't make any sound when turned." - icon_state ="bookmime" - -/obj/item/spellbook/oneuse/mimery_guns - spell = /obj/effect/proc_holder/spell/aimed/finger_guns - spellname = "" - name = "Guide to Advanced Mimery Vol 2" - desc = "There aren't any words written..." - icon_state ="bookmime" +/obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall + name = "Invisible Wall" + desc = "The mime's performance transmutates into physical reality." + school = "mime" + panel = "Mime" + summon_type = list(/obj/effect/forcefield/mime) + invocation_type = "emote" + invocation_emote_self = "You form a wall in front of yourself." + summon_lifespan = 300 + charge_max = 300 + clothes_req = 0 + range = 0 + cast_sound = null + human_req = 1 + + action_icon_state = "mime" + action_background_icon_state = "bg_mime" + +/obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall/Click() + if(usr && usr.mind) + if(!usr.mind.miming) + to_chat(usr, "You must dedicate yourself to silence first.") + return + invocation = "[usr.real_name] looks as if a wall is in front of [usr.p_them()]." + else + invocation_type ="none" + ..() + + +/obj/effect/proc_holder/spell/targeted/mime/speak + name = "Speech" + desc = "Make or break a vow of silence." + school = "mime" + panel = "Mime" + clothes_req = 0 + human_req = 1 + charge_max = 3000 + range = -1 + include_user = 1 + + action_icon_state = "mime" + action_background_icon_state = "bg_mime" + +/obj/effect/proc_holder/spell/targeted/mime/speak/Click() + if(!usr) + return + if(!ishuman(usr)) + return + var/mob/living/carbon/human/H = usr + if(H.mind.miming) + still_recharging_msg = "You can't break your vow of silence that fast!" + else + still_recharging_msg = "You'll have to wait before you can give your vow of silence again!" + ..() + +/obj/effect/proc_holder/spell/targeted/mime/speak/cast(list/targets,mob/user = usr) + for(var/mob/living/carbon/human/H in targets) + H.mind.miming=!H.mind.miming + if(H.mind.miming) + to_chat(H, "You make a vow of silence.") + else + to_chat(H, "You break your vow of silence.") + +// These spells can only be gotten from the "Guide for Advanced Mimery series" for Mime Traitors. + +/obj/effect/proc_holder/spell/targeted/forcewall/mime + name = "Invisible Blockade" + desc = "Form an invisible three tile wide blockade." + wall_type = /obj/effect/forcefield/mime/advanced + invocation_type = "emote" + invocation_emote_self = "You form a blockade in front of yourself." + charge_max = 600 + sound = null + clothes_req = 0 + range = -1 + include_user = 1 + + action_icon_state = "mime" + action_background_icon_state = "bg_mime" + +/obj/effect/proc_holder/spell/targeted/forcewall/mime/Click() + if(usr && usr.mind) + if(!usr.mind.miming) + to_chat(usr, "You must dedicate yourself to silence first.") + return + invocation = "[usr.real_name] looks as if a blockade is in front of [usr.p_them()]." + else + invocation_type ="none" + ..() + +/obj/effect/proc_holder/spell/aimed/finger_guns + name = "Finger Guns" + desc = "Shoot a mimed bullet from your fingers that stuns and does some damage." + school = "mime" + panel = "Mime" + charge_max = 300 + clothes_req = 0 + invocation_type = "emote" + invocation_emote_self = "You fire your finger gun!" + range = 20 + projectile_type = /obj/item/projectile/bullet/mime + projectile_amount = 3 + sound = null + active_msg = "You draw your fingers!" + deactive_msg = "You put your fingers at ease. Another time." + active = FALSE + + action_icon_state = "mime" + action_background_icon_state = "bg_mime" + base_icon_state = "mime" + + +/obj/effect/proc_holder/spell/aimed/finger_guns/Click() + var/mob/living/carbon/human/owner = usr + if(owner.incapacitated()) + to_chat(owner, "You can't properly point your fingers while incapacitated.") + return + if(usr && usr.mind) + if(!usr.mind.miming) + to_chat(usr, "You must dedicate yourself to silence first.") + return + invocation = "[usr.real_name] fires [usr.p_their()] finger gun!" + else + invocation_type ="none" + ..() + + +/obj/item/spellbook/oneuse/mimery_blockade + spell = /obj/effect/proc_holder/spell/targeted/forcewall/mime + spellname = "" + name = "Guide to Advanced Mimery Vol 1" + desc = "The pages don't make any sound when turned." + icon_state ="bookmime" + +/obj/item/spellbook/oneuse/mimery_guns + spell = /obj/effect/proc_holder/spell/aimed/finger_guns + spellname = "" + name = "Guide to Advanced Mimery Vol 2" + desc = "There aren't any words written..." + icon_state ="bookmime" +/obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall + name = "Invisible Wall" + desc = "The mime's performance transmutates into physical reality." + school = "mime" + panel = "Mime" + summon_type = list(/obj/effect/forcefield/mime) + invocation_type = "emote" + invocation_emote_self = "You form a wall in front of yourself." + summon_lifespan = 300 + charge_max = 300 + clothes_req = 0 + range = 0 + cast_sound = null + human_req = 1 + + action_icon_state = "mime" + action_background_icon_state = "bg_mime" + +/obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall/Click() + if(usr && usr.mind) + if(!usr.mind.miming) + to_chat(usr, "You must dedicate yourself to silence first.") + return + invocation = "[usr.real_name] looks as if a wall is in front of [usr.p_them()]." + else + invocation_type ="none" + ..() + + +/obj/effect/proc_holder/spell/targeted/mime/speak + name = "Speech" + desc = "Make or break a vow of silence." + school = "mime" + panel = "Mime" + clothes_req = 0 + human_req = 1 + charge_max = 3000 + range = -1 + include_user = 1 + + action_icon_state = "mime" + action_background_icon_state = "bg_mime" + +/obj/effect/proc_holder/spell/targeted/mime/speak/Click() + if(!usr) + return + if(!ishuman(usr)) + return + var/mob/living/carbon/human/H = usr + if(H.mind.miming) + still_recharging_msg = "You can't break your vow of silence that fast!" + else + still_recharging_msg = "You'll have to wait before you can give your vow of silence again!" + ..() + +/obj/effect/proc_holder/spell/targeted/mime/speak/cast(list/targets,mob/user = usr) + for(var/mob/living/carbon/human/H in targets) + H.mind.miming=!H.mind.miming + if(H.mind.miming) + to_chat(H, "You make a vow of silence.") + else + to_chat(H, "You break your vow of silence.") + +// These spells can only be gotten from the "Guide for Advanced Mimery series" for Mime Traitors. + +/obj/effect/proc_holder/spell/targeted/forcewall/mime + name = "Invisible Blockade" + desc = "Form an invisible three tile wide blockade." + wall_type = /obj/effect/forcefield/mime/advanced + invocation_type = "emote" + invocation_emote_self = "You form a blockade in front of yourself." + charge_max = 600 + sound = null + clothes_req = 0 + range = -1 + include_user = 1 + + action_icon_state = "mime" + action_background_icon_state = "bg_mime" + +/obj/effect/proc_holder/spell/targeted/forcewall/mime/Click() + if(usr && usr.mind) + if(!usr.mind.miming) + to_chat(usr, "You must dedicate yourself to silence first.") + return + invocation = "[usr.real_name] looks as if a blockade is in front of [usr.p_them()]." + else + invocation_type ="none" + ..() + +/obj/effect/proc_holder/spell/aimed/finger_guns + name = "Finger Guns" + desc = "Shoot a mimed bullet from your fingers that stuns and does some damage." + school = "mime" + panel = "Mime" + charge_max = 300 + clothes_req = 0 + invocation_type = "emote" + invocation_emote_self = "You fire your finger gun!" + range = 20 + projectile_type = /obj/item/projectile/bullet/mime + projectile_amount = 3 + sound = null + active_msg = "You draw your fingers!" + deactive_msg = "You put your fingers at ease. Another time." + active = FALSE + + action_icon_state = "mime" + action_background_icon_state = "bg_mime" + base_icon_state = "mime" + + +/obj/effect/proc_holder/spell/aimed/finger_guns/Click() + var/mob/living/carbon/human/owner = usr + if(owner.incapacitated()) + to_chat(owner, "You can't properly point your fingers while incapacitated.") + return + if(usr && usr.mind) + if(!usr.mind.miming) + to_chat(usr, "You must dedicate yourself to silence first.") + return + invocation = "[usr.real_name] fires [usr.p_their()] finger gun!" + else + invocation_type ="none" + ..() + + +/obj/item/spellbook/oneuse/mimery_blockade + spell = /obj/effect/proc_holder/spell/targeted/forcewall/mime + spellname = "" + name = "Guide to Advanced Mimery Vol 1" + desc = "The pages don't make any sound when turned." + icon_state ="bookmime" + +/obj/item/spellbook/oneuse/mimery_guns + spell = /obj/effect/proc_holder/spell/aimed/finger_guns + spellname = "" + name = "Guide to Advanced Mimery Vol 2" + desc = "There aren't any words written..." + icon_state ="bookmime" diff --git a/code/modules/uplink/uplink_item.dm b/code/modules/uplink/uplink_item.dm index 70f7a76a7a..38720f81a0 100644 --- a/code/modules/uplink/uplink_item.dm +++ b/code/modules/uplink/uplink_item.dm @@ -165,7 +165,7 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. /datum/uplink_item/nukeoffer/sniper name = "Sniper bundle" desc = "Elegant and refined: Contains a collapsed sniper rifle in an expensive carrying case, a hollow-point \ - haemorrhage magazine, a soporific knockout magazine, a free surplus supressor, and a worn out suit and tie." + a soporific knockout magazine, a free surplus supressor, and a worn out suit and tie." item = /obj/item/storage/briefcase/sniperbundle cost = 20 // normally 26 @@ -449,11 +449,11 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. item = /obj/item/ammo_box/magazine/m12g/dragon include_modes = list(/datum/game_mode/nuclear) -/datum/uplink_item/ammo/shotgun/breach - name = "12g Breaching Shells" - desc = "An economic variant of the CMC meteorshot slugs, not as effective for knocking \ - down targets, but still great for blasting airlocks off their frames." - item = /obj/item/ammo_box/magazine/m12g/breach +/datum/uplink_item/ammo/shotgun/meteor + name = "12g Meteorslug Shells" + desc = "An alternative 8-round meteorslug magazine for use in the Bulldog shotgun. \ + Great for blasting airlocks off their frames." + item = /obj/item/ammo_box/magazine/m12g/meteor include_modes = list(/datum/game_mode/nuclear) /datum/uplink_item/ammo/shotgun/bag @@ -488,12 +488,6 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. By the time you need to use this, you'll already be on a pile of corpses." item = /obj/item/ammo_box/magazine/mm195x129 -/datum/uplink_item/ammo/machinegun/bleeding - name = "1.95x129mm (Bleeding) Box Magazine" - desc = "A 50-round magazine of 1.95x129mm ammunition for use in the L6 SAW; equipped with special properties \ - to induce internal bleeding on targets." - item = /obj/item/ammo_box/magazine/mm195x129/bleeding - /datum/uplink_item/ammo/machinegun/hollow name = "1.95x129mm (Hollow-Point) Box Magazine" desc = "A 50-round magazine of 1.95x129mm ammunition for use in the L6 SAW; equipped with hollow-point tips to help \ @@ -527,12 +521,6 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. item = /obj/item/ammo_box/magazine/sniper_rounds/soporific cost = 6 -/datum/uplink_item/ammo/sniper/haemorrhage - name = ".50 Haemorrhage Magazine" - desc = "A 5-round magazine of haemorrhage ammo designed for use with .50 sniper rifles; causes heavy bleeding \ - in the target." - item = /obj/item/ammo_box/magazine/sniper_rounds/haemorrhage - /datum/uplink_item/ammo/sniper/penetrator name = ".50 Penetrator Magazine" desc = "A 5-round magazine of penetrator ammo designed for use with .50 sniper rifles. \ From 2c78f7122c0804717700b9be0814e77b80934fed Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 22:31:07 -0500 Subject: [PATCH 62/80] [MIRROR] Adds some new plushies (#2866) * Adds some new plushies * Update packs.dm --- code/game/objects/items/plushes.dm | 34 +- code/game/objects/items/toys.dm | 2 +- code/modules/cargo/packs.dm | 4 + .../living/silicon/ai/freelook/cameranet.dm | 322 +++++++++--------- icons/obj/plushes.dmi | Bin 3736 -> 5362 bytes 5 files changed, 199 insertions(+), 163 deletions(-) diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm index 778655d4b0..b22383ad58 100644 --- a/code/game/objects/items/plushes.dm +++ b/code/game/objects/items/plushes.dm @@ -39,4 +39,36 @@ /obj/item/toy/plush/narplush name = "nar'sie plushie" desc = "A small stuffed doll of the elder god nar'sie. Who thought this was a good children's toy?" - icon_state = "narplush" \ No newline at end of file + icon_state = "narplush" + +/obj/item/toy/plush/lizardplushie + name = "lizard plushie" + desc = "An adorable stuffed toy that resembles a lizardperson." + icon_state = "plushie_lizard" + item_state = "plushie_lizard" + attack_verb = list("clawed", "hissed", "tail slapped") + squeak_override = list('sound/weapons/slash.ogg' = 1) + +/obj/item/toy/plush/snakeplushie + name = "snake plushie" + desc = "An adorable stuffed toy that resembles a snake. Not to be mistaken for the real thing." + icon_state = "plushie_snake" + item_state = "plushie_snake" + attack_verb = list("bitten", "hissed", "tail slapped") + squeak_override = list('sound/weapons/bite.ogg' = 1) + +/obj/item/toy/plush/nukeplushie + name = "operative plushie" + desc = "An stuffed toy that resembles a syndicate nuclear operative. The tag claims operatives to be purely fictitious." + icon_state = "plushie_nuke" + item_state = "plushie_nuke" + attack_verb = list("shot", "nuked", "detonated") + squeak_override = list('sound/effects/hit_punch.ogg' = 1) + +/obj/item/toy/plush/slimeplushie + name = "slime plushie" + desc = "An adorable stuffed toy that resembles a slime. It is practically just a hacky sack." + icon_state = "plushie_slime" + item_state = "plushie_slime" + attack_verb = list("blorbled", "slimed", "absorbed") + squeak_override = list('sound/effects/blobattack.ogg' = 1) \ No newline at end of file diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index a918fe494a..a683902a6c 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -39,7 +39,7 @@ icon = 'icons/obj/toy.dmi' icon_state = "waterballoon-e" item_state = "balloon-empty" - + /obj/item/toy/balloon/New() create_reagents(10) diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index bfe0c8e776..c5b180d8a1 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -1644,6 +1644,10 @@ /obj/item/toy/nuke, /obj/item/toy/minimeteor, /obj/item/toy/plush/carpplushie, + /obj/item/toy/plush/lizardplushie, + /obj/item/toy/plush/snakeplushie, + /obj/item/toy/plush/nukeplushie, + /obj/item/toy/plush/slimeplushie, /obj/item/coin/antagtoken, /obj/item/stack/tile/fakespace/loaded, /obj/item/gun/ballistic/shotgun/toy/crossbow, diff --git a/code/modules/mob/living/silicon/ai/freelook/cameranet.dm b/code/modules/mob/living/silicon/ai/freelook/cameranet.dm index 6624b75fd5..812e207249 100644 --- a/code/modules/mob/living/silicon/ai/freelook/cameranet.dm +++ b/code/modules/mob/living/silicon/ai/freelook/cameranet.dm @@ -1,161 +1,161 @@ -// CAMERA NET -// -// The datum containing all the chunks. - -#define CHUNK_SIZE 16 // Only chunk sizes that are to the power of 2. E.g: 2, 4, 8, 16, etc.. - -GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new) - -/datum/cameranet - var/name = "Camera Net" // Name to show for VV and stat() - - // The cameras on the map, no matter if they work or not. Updated in obj/machinery/camera.dm by New() and Del(). - var/list/cameras = list() - // The chunks of the map, mapping the areas that the cameras can see. - var/list/chunks = list() - var/ready = 0 - - // The object used for the clickable stat() button. - var/obj/effect/statclick/statclick - -// Checks if a chunk has been Generated in x, y, z. -/datum/cameranet/proc/chunkGenerated(x, y, z) - x &= ~(CHUNK_SIZE - 1) - y &= ~(CHUNK_SIZE - 1) - var/key = "[x],[y],[z]" - return (chunks[key]) - -// Returns the chunk in the x, y, z. -// If there is no chunk, it creates a new chunk and returns that. -/datum/cameranet/proc/getCameraChunk(x, y, z) - x &= ~(CHUNK_SIZE - 1) - y &= ~(CHUNK_SIZE - 1) - var/key = "[x],[y],[z]" - if(!chunks[key]) - chunks[key] = new /datum/camerachunk(null, x, y, z) - - return chunks[key] - -// Updates what the aiEye can see. It is recommended you use this when the aiEye moves or it's location is set. - -/datum/cameranet/proc/visibility(mob/camera/aiEye/ai) - // 0xf = 15 - var/x1 = max(0, ai.x - 16) & ~(CHUNK_SIZE - 1) - var/y1 = max(0, ai.y - 16) & ~(CHUNK_SIZE - 1) - var/x2 = min(world.maxx, ai.x + 16) & ~(CHUNK_SIZE - 1) - var/y2 = min(world.maxy, ai.y + 16) & ~(CHUNK_SIZE - 1) - - var/list/visibleChunks = list() - - for(var/x = x1; x <= x2; x += CHUNK_SIZE) - for(var/y = y1; y <= y2; y += CHUNK_SIZE) - visibleChunks |= getCameraChunk(x, y, ai.z) - - var/list/remove = ai.visibleCameraChunks - visibleChunks - var/list/add = visibleChunks - ai.visibleCameraChunks - - for(var/chunk in remove) - var/datum/camerachunk/c = chunk - c.remove(ai) - - for(var/chunk in add) - var/datum/camerachunk/c = chunk - c.add(ai) - -// Updates the chunks that the turf is located in. Use this when obstacles are destroyed or when doors open. - -/datum/cameranet/proc/updateVisibility(atom/A, opacity_check = 1) - - if(!SSticker || (opacity_check && !A.opacity)) - return - majorChunkChange(A, 2) - -/datum/cameranet/proc/updateChunk(x, y, z) - // 0xf = 15 - if(!chunkGenerated(x, y, z)) - return - var/datum/camerachunk/chunk = getCameraChunk(x, y, z) - chunk.hasChanged() - -// Removes a camera from a chunk. - -/datum/cameranet/proc/removeCamera(obj/machinery/camera/c) - if(c.can_use()) - majorChunkChange(c, 0) - -// Add a camera to a chunk. - -/datum/cameranet/proc/addCamera(obj/machinery/camera/c) - if(c.can_use()) - majorChunkChange(c, 1) - -// Used for Cyborg cameras. Since portable cameras can be in ANY chunk. - -/datum/cameranet/proc/updatePortableCamera(obj/machinery/camera/c) - if(c.can_use()) - majorChunkChange(c, 1) - //else - // majorChunkChange(c, 0) - -// Never access this proc directly!!!! -// This will update the chunk and all the surrounding chunks. -// It will also add the atom to the cameras list if you set the choice to 1. -// Setting the choice to 0 will remove the camera from the chunks. -// If you want to update the chunks around an object, without adding/removing a camera, use choice 2. - -/datum/cameranet/proc/majorChunkChange(atom/c, choice) - // 0xf = 15 - if(!c) - return - - var/turf/T = get_turf(c) - if(T) - var/x1 = max(0, T.x - (CHUNK_SIZE / 2)) & ~(CHUNK_SIZE - 1) - var/y1 = max(0, T.y - (CHUNK_SIZE / 2)) & ~(CHUNK_SIZE - 1) - var/x2 = min(world.maxx, T.x + (CHUNK_SIZE / 2)) & ~(CHUNK_SIZE - 1) - var/y2 = min(world.maxy, T.y + (CHUNK_SIZE / 2)) & ~(CHUNK_SIZE - 1) - for(var/x = x1; x <= x2; x += CHUNK_SIZE) - for(var/y = y1; y <= y2; y += CHUNK_SIZE) - if(chunkGenerated(x, y, T.z)) - var/datum/camerachunk/chunk = getCameraChunk(x, y, T.z) - if(choice == 0) - // Remove the camera. - chunk.cameras -= c - else if(choice == 1) - // You can't have the same camera in the list twice. - chunk.cameras |= c - chunk.hasChanged() - -// Will check if a mob is on a viewable turf. Returns 1 if it is, otherwise returns 0. - -/datum/cameranet/proc/checkCameraVis(mob/living/target) - - // 0xf = 15 - var/turf/position = get_turf(target) - return checkTurfVis(position) - - -/datum/cameranet/proc/checkTurfVis(turf/position) - var/datum/camerachunk/chunk = getCameraChunk(position.x, position.y, position.z) - if(chunk) - if(chunk.changed) - chunk.hasChanged(1) // Update now, no matter if it's visible or not. - if(chunk.visibleTurfs[position]) - return 1 - return 0 - -/datum/cameranet/proc/stat_entry() - if(!statclick) - statclick = new/obj/effect/statclick/debug(null, "Initializing...", src) - - stat(name, statclick.update("Cameras: [GLOB.cameranet.cameras.len] | Chunks: [GLOB.cameranet.chunks.len]")) - -// Debug verb for VVing the chunk that the turf is in. -/* -/turf/verb/view_chunk() - set src in world - - if(cameranet.chunkGenerated(x, y, z)) - var/datum/camerachunk/chunk = cameranet.getCameraChunk(x, y, z) - usr.client.debug_variables(chunk) -*/ +// CAMERA NET +// +// The datum containing all the chunks. + +#define CHUNK_SIZE 16 // Only chunk sizes that are to the power of 2. E.g: 2, 4, 8, 16, etc.. + +GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new) + +/datum/cameranet + var/name = "Camera Net" // Name to show for VV and stat() + + // The cameras on the map, no matter if they work or not. Updated in obj/machinery/camera.dm by New() and Del(). + var/list/cameras = list() + // The chunks of the map, mapping the areas that the cameras can see. + var/list/chunks = list() + var/ready = 0 + + // The object used for the clickable stat() button. + var/obj/effect/statclick/statclick + +// Checks if a chunk has been Generated in x, y, z. +/datum/cameranet/proc/chunkGenerated(x, y, z) + x &= ~(CHUNK_SIZE - 1) + y &= ~(CHUNK_SIZE - 1) + var/key = "[x],[y],[z]" + return (chunks[key]) + +// Returns the chunk in the x, y, z. +// If there is no chunk, it creates a new chunk and returns that. +/datum/cameranet/proc/getCameraChunk(x, y, z) + x &= ~(CHUNK_SIZE - 1) + y &= ~(CHUNK_SIZE - 1) + var/key = "[x],[y],[z]" + if(!chunks[key]) + chunks[key] = new /datum/camerachunk(null, x, y, z) + + return chunks[key] + +// Updates what the aiEye can see. It is recommended you use this when the aiEye moves or it's location is set. + +/datum/cameranet/proc/visibility(mob/camera/aiEye/ai) + // 0xf = 15 + var/x1 = max(0, ai.x - 16) & ~(CHUNK_SIZE - 1) + var/y1 = max(0, ai.y - 16) & ~(CHUNK_SIZE - 1) + var/x2 = min(world.maxx, ai.x + 16) & ~(CHUNK_SIZE - 1) + var/y2 = min(world.maxy, ai.y + 16) & ~(CHUNK_SIZE - 1) + + var/list/visibleChunks = list() + + for(var/x = x1; x <= x2; x += CHUNK_SIZE) + for(var/y = y1; y <= y2; y += CHUNK_SIZE) + visibleChunks |= getCameraChunk(x, y, ai.z) + + var/list/remove = ai.visibleCameraChunks - visibleChunks + var/list/add = visibleChunks - ai.visibleCameraChunks + + for(var/chunk in remove) + var/datum/camerachunk/c = chunk + c.remove(ai) + + for(var/chunk in add) + var/datum/camerachunk/c = chunk + c.add(ai) + +// Updates the chunks that the turf is located in. Use this when obstacles are destroyed or when doors open. + +/datum/cameranet/proc/updateVisibility(atom/A, opacity_check = 1) + + if(!SSticker || (opacity_check && !A.opacity)) + return + majorChunkChange(A, 2) + +/datum/cameranet/proc/updateChunk(x, y, z) + // 0xf = 15 + if(!chunkGenerated(x, y, z)) + return + var/datum/camerachunk/chunk = getCameraChunk(x, y, z) + chunk.hasChanged() + +// Removes a camera from a chunk. + +/datum/cameranet/proc/removeCamera(obj/machinery/camera/c) + if(c.can_use()) + majorChunkChange(c, 0) + +// Add a camera to a chunk. + +/datum/cameranet/proc/addCamera(obj/machinery/camera/c) + if(c.can_use()) + majorChunkChange(c, 1) + +// Used for Cyborg cameras. Since portable cameras can be in ANY chunk. + +/datum/cameranet/proc/updatePortableCamera(obj/machinery/camera/c) + if(c.can_use()) + majorChunkChange(c, 1) + //else + // majorChunkChange(c, 0) + +// Never access this proc directly!!!! +// This will update the chunk and all the surrounding chunks. +// It will also add the atom to the cameras list if you set the choice to 1. +// Setting the choice to 0 will remove the camera from the chunks. +// If you want to update the chunks around an object, without adding/removing a camera, use choice 2. + +/datum/cameranet/proc/majorChunkChange(atom/c, choice) + // 0xf = 15 + if(!c) + return + + var/turf/T = get_turf(c) + if(T) + var/x1 = max(0, T.x - (CHUNK_SIZE / 2)) & ~(CHUNK_SIZE - 1) + var/y1 = max(0, T.y - (CHUNK_SIZE / 2)) & ~(CHUNK_SIZE - 1) + var/x2 = min(world.maxx, T.x + (CHUNK_SIZE / 2)) & ~(CHUNK_SIZE - 1) + var/y2 = min(world.maxy, T.y + (CHUNK_SIZE / 2)) & ~(CHUNK_SIZE - 1) + for(var/x = x1; x <= x2; x += CHUNK_SIZE) + for(var/y = y1; y <= y2; y += CHUNK_SIZE) + if(chunkGenerated(x, y, T.z)) + var/datum/camerachunk/chunk = getCameraChunk(x, y, T.z) + if(choice == 0) + // Remove the camera. + chunk.cameras -= c + else if(choice == 1) + // You can't have the same camera in the list twice. + chunk.cameras |= c + chunk.hasChanged() + +// Will check if a mob is on a viewable turf. Returns 1 if it is, otherwise returns 0. + +/datum/cameranet/proc/checkCameraVis(mob/living/target) + + // 0xf = 15 + var/turf/position = get_turf(target) + return checkTurfVis(position) + + +/datum/cameranet/proc/checkTurfVis(turf/position) + var/datum/camerachunk/chunk = getCameraChunk(position.x, position.y, position.z) + if(chunk) + if(chunk.changed) + chunk.hasChanged(1) // Update now, no matter if it's visible or not. + if(chunk.visibleTurfs[position]) + return 1 + return 0 + +/datum/cameranet/proc/stat_entry() + if(!statclick) + statclick = new/obj/effect/statclick/debug(null, "Initializing...", src) + + stat(name, statclick.update("Cameras: [GLOB.cameranet.cameras.len] | Chunks: [GLOB.cameranet.chunks.len]")) + +// Debug verb for VVing the chunk that the turf is in. +/* +/turf/verb/view_chunk() + set src in world + + if(cameranet.chunkGenerated(x, y, z)) + var/datum/camerachunk/chunk = cameranet.getCameraChunk(x, y, z) + usr.client.debug_variables(chunk) +*/ diff --git a/icons/obj/plushes.dmi b/icons/obj/plushes.dmi index 6a7b21efec060a084f049312277207777835d421..f0eb8175497e73f02a005bfd6b4ac1994a187c73 100644 GIT binary patch literal 5362 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 EKfCB~!vFvP literal 3736 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 Date: Fri, 22 Sep 2017 22:31:08 -0500 Subject: [PATCH 63/80] Automatic changelog generation for PR #2866 [ci skip] --- html/changelogs/AutoChangeLog-pr-2866.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2866.yml diff --git a/html/changelogs/AutoChangeLog-pr-2866.yml b/html/changelogs/AutoChangeLog-pr-2866.yml new file mode 100644 index 0000000000..5561bc972a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2866.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - rscadd: "Several new plushie dolls are now available in toy crates." From 117c8bf04d94095614b5553c3d161383119e28b0 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 22:31:27 -0500 Subject: [PATCH 64/80] [MIRROR] Adds bioclosets to omega medbay, sci, and sec (#2889) * Merge pull request #30903 from ShizCalev/omega-bio-closets Adds bioclosets to omega medbay, sci, and sec * Adds bioclosets to omega medbay, sci, and sec --- _maps/map_files/OmegaStation/OmegaStation.dmm | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index 1423cc331d..13bd789d72 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -10502,6 +10502,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, +/obj/structure/closet/l3closet/security, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -27150,6 +27151,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, +/obj/structure/closet/l3closet, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -34632,6 +34634,7 @@ /turf/open/floor/plasteel/whitepurple/side, /area/science/xenobiology) "bjG" = ( +/obj/structure/closet/l3closet/scientist, /turf/open/floor/plasteel/whitepurple/side{ dir = 6 }, @@ -80681,13 +80684,13 @@ aDc aYc aYW byo -byt +byo bbx bcm bdd beb -byy -byA +byo +bys bfK aQd bgT @@ -80937,14 +80940,14 @@ aWQ abt aYc aYW -byp +byo baI bby bcn bde bec beH -byB +byo bfK aQd bgU @@ -81451,14 +81454,14 @@ aWS abt aYe aYW -byr +byo baK bbA bcp bdg bee beJ -byC +byo bfK avV bgU @@ -81709,13 +81712,13 @@ aIZ aYc aYW bys -byu -byv -byw +byo +byo +byo bdh -byx -byz -byD +byo +byo +byo bfM avV bgV From 2757fae7e24221fea3719c792f65551af4bb5d16 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 22:31:54 -0500 Subject: [PATCH 65/80] [MIRROR] Fixes shaving headless mobs (#2890) * Fixes shaving headless mobs * Update cosmetics.dm --- code/game/objects/items/cosmetics.dm | 375 ++++++++++++++------------- 1 file changed, 189 insertions(+), 186 deletions(-) diff --git a/code/game/objects/items/cosmetics.dm b/code/game/objects/items/cosmetics.dm index 4f2c1a620a..8ec32f088e 100644 --- a/code/game/objects/items/cosmetics.dm +++ b/code/game/objects/items/cosmetics.dm @@ -1,186 +1,189 @@ -/obj/item/lipstick - gender = PLURAL - name = "red lipstick" - desc = "A generic brand of lipstick." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "lipstick" - w_class = WEIGHT_CLASS_TINY - var/colour = "red" - var/open = FALSE - - -/obj/item/lipstick/purple - name = "purple lipstick" - colour = "purple" - -/obj/item/lipstick/jade - //It's still called Jade, but theres no HTML color for jade, so we use lime. - name = "jade lipstick" - colour = "lime" - -/obj/item/lipstick/black - name = "black lipstick" - colour = "black" - - -/obj/item/lipstick/random - name = "lipstick" - -/obj/item/lipstick/random/New() - ..() - colour = pick("red","purple","lime","black","green","blue","white") - name = "[colour] lipstick" - - - -/obj/item/lipstick/attack_self(mob/user) - cut_overlays() - to_chat(user, "You twist \the [src] [open ? "closed" : "open"].") - open = !open - if(open) - var/mutable_appearance/colored_overlay = mutable_appearance(icon, "lipstick_uncap_color") - colored_overlay.color = colour - icon_state = "lipstick_uncap" - add_overlay(colored_overlay) - else - icon_state = "lipstick" - -/obj/item/lipstick/attack(mob/M, mob/user) - if(!open) - return - - if(!ismob(M)) - return - - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(H.is_mouth_covered()) - to_chat(user, "Remove [ H == user ? "your" : "their" ] mask!") - return - if(H.lip_style) //if they already have lipstick on - to_chat(user, "You need to wipe off the old lipstick first!") - return - if(H == user) - user.visible_message("[user] does their lips with \the [src].", \ - "You take a moment to apply \the [src]. Perfect!") - H.lip_style = "lipstick" - H.lip_color = colour - H.update_body() - else - user.visible_message("[user] begins to do [H]'s lips with \the [src].", \ - "You begin to apply \the [src] on [H]'s lips...") - if(do_after(user, 20, target = H)) - user.visible_message("[user] does [H]'s lips with \the [src].", \ - "You apply \the [src] on [H]'s lips.") - H.lip_style = "lipstick" - H.lip_color = colour - H.update_body() - else - to_chat(user, "Where are the lips on that?") - -//you can wipe off lipstick with paper! -/obj/item/paper/attack(mob/M, mob/user) - if(user.zone_selected == "mouth") - if(!ismob(M)) - return - - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(H == user) - to_chat(user, "You wipe off the lipstick with [src].") - H.lip_style = null - H.update_body() - else - user.visible_message("[user] begins to wipe [H]'s lipstick off with \the [src].", \ - "You begin to wipe off [H]'s lipstick...") - if(do_after(user, 10, target = H)) - user.visible_message("[user] wipes [H]'s lipstick off with \the [src].", \ - "You wipe off [H]'s lipstick.") - H.lip_style = null - H.update_body() - else - ..() - - -/obj/item/razor - name = "electric razor" - desc = "The latest and greatest power razor born from the science of shaving." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "razor" - flags_1 = CONDUCT_1 - w_class = WEIGHT_CLASS_TINY - - -/obj/item/razor/proc/shave(mob/living/carbon/human/H, location = "mouth") - if(location == "mouth") - H.facial_hair_style = "Shaved" - else - H.hair_style = "Skinhead" - - H.update_hair() - playsound(loc, 'sound/items/welder2.ogg', 20, 1) - - -/obj/item/razor/attack(mob/M, mob/user) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - var/location = user.zone_selected - if(location == "mouth") - if(!(FACEHAIR in H.dna.species.species_traits)) - to_chat(user, "There is no facial hair to shave!") - return - if(!get_location_accessible(H, location)) - to_chat(user, "The mask is in the way!") - return - if(H.facial_hair_style == "Shaved") - to_chat(user, "Already clean-shaven!") - return - - if(H == user) //shaving yourself - user.visible_message("[user] starts to shave their facial hair with [src].", \ - "You take a moment to shave your facial hair with [src]...") - if(do_after(user, 50, target = H)) - user.visible_message("[user] shaves his facial hair clean with [src].", \ - "You finish shaving with [src]. Fast and clean!") - shave(H, location) - else - var/turf/H_loc = H.loc - user.visible_message("[user] tries to shave [H]'s facial hair with [src].", \ - "You start shaving [H]'s facial hair...") - if(do_after(user, 50, target = H)) - if(H_loc == H.loc) - user.visible_message("[user] shaves off [H]'s facial hair with [src].", \ - "You shave [H]'s facial hair clean off.") - shave(H, location) - - else if(location == "head") - if(!(HAIR in H.dna.species.species_traits)) - to_chat(user, "There is no hair to shave!") - return - if(!get_location_accessible(H, location)) - to_chat(user, "The headgear is in the way!") - return - if(H.hair_style == "Bald" || H.hair_style == "Balding Hair" || H.hair_style == "Skinhead") - to_chat(user, "There is not enough hair left to shave!") - return - - if(H == user) //shaving yourself - user.visible_message("[user] starts to shave their head with [src].", \ - "You start to shave your head with [src]...") - if(do_after(user, 5, target = H)) - user.visible_message("[user] shaves his head with [src].", \ - "You finish shaving with [src].") - shave(H, location) - else - var/turf/H_loc = H.loc - user.visible_message("[user] tries to shave [H]'s head with [src]!", \ - "You start shaving [H]'s head...") - if(do_after(user, 50, target = H)) - if(H_loc == H.loc) - user.visible_message("[user] shaves [H]'s head bald with [src]!", \ - "You shave [H]'s head bald.") - shave(H, location) - else - ..() - else - ..() \ No newline at end of file +/obj/item/lipstick + gender = PLURAL + name = "red lipstick" + desc = "A generic brand of lipstick." + icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "lipstick" + w_class = WEIGHT_CLASS_TINY + var/colour = "red" + var/open = FALSE + + +/obj/item/lipstick/purple + name = "purple lipstick" + colour = "purple" + +/obj/item/lipstick/jade + //It's still called Jade, but theres no HTML color for jade, so we use lime. + name = "jade lipstick" + colour = "lime" + +/obj/item/lipstick/black + name = "black lipstick" + colour = "black" + + +/obj/item/lipstick/random + name = "lipstick" + +/obj/item/lipstick/random/New() + ..() + colour = pick("red","purple","lime","black","green","blue","white") + name = "[colour] lipstick" + + + +/obj/item/lipstick/attack_self(mob/user) + cut_overlays() + to_chat(user, "You twist \the [src] [open ? "closed" : "open"].") + open = !open + if(open) + var/mutable_appearance/colored_overlay = mutable_appearance(icon, "lipstick_uncap_color") + colored_overlay.color = colour + icon_state = "lipstick_uncap" + add_overlay(colored_overlay) + else + icon_state = "lipstick" + +/obj/item/lipstick/attack(mob/M, mob/user) + if(!open) + return + + if(!ismob(M)) + return + + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.is_mouth_covered()) + to_chat(user, "Remove [ H == user ? "your" : "their" ] mask!") + return + if(H.lip_style) //if they already have lipstick on + to_chat(user, "You need to wipe off the old lipstick first!") + return + if(H == user) + user.visible_message("[user] does their lips with \the [src].", \ + "You take a moment to apply \the [src]. Perfect!") + H.lip_style = "lipstick" + H.lip_color = colour + H.update_body() + else + user.visible_message("[user] begins to do [H]'s lips with \the [src].", \ + "You begin to apply \the [src] on [H]'s lips...") + if(do_after(user, 20, target = H)) + user.visible_message("[user] does [H]'s lips with \the [src].", \ + "You apply \the [src] on [H]'s lips.") + H.lip_style = "lipstick" + H.lip_color = colour + H.update_body() + else + to_chat(user, "Where are the lips on that?") + +//you can wipe off lipstick with paper! +/obj/item/paper/attack(mob/M, mob/user) + if(user.zone_selected == "mouth") + if(!ismob(M)) + return + + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H == user) + to_chat(user, "You wipe off the lipstick with [src].") + H.lip_style = null + H.update_body() + else + user.visible_message("[user] begins to wipe [H]'s lipstick off with \the [src].", \ + "You begin to wipe off [H]'s lipstick...") + if(do_after(user, 10, target = H)) + user.visible_message("[user] wipes [H]'s lipstick off with \the [src].", \ + "You wipe off [H]'s lipstick.") + H.lip_style = null + H.update_body() + else + ..() + + +/obj/item/razor + name = "electric razor" + desc = "The latest and greatest power razor born from the science of shaving." + icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "razor" + flags_1 = CONDUCT_1 + w_class = WEIGHT_CLASS_TINY + + +/obj/item/razor/proc/shave(mob/living/carbon/human/H, location = "mouth") + if(location == "mouth") + H.facial_hair_style = "Shaved" + else + H.hair_style = "Skinhead" + + H.update_hair() + playsound(loc, 'sound/items/welder2.ogg', 20, 1) + + +/obj/item/razor/attack(mob/M, mob/user) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + var/location = user.zone_selected + if((location in list("eyes", "mouth", "head")) && !H.get_bodypart("head")) + to_chat(user, "[H] doesn't have a head!") + return + if(location == "mouth") + if(!(FACEHAIR in H.dna.species.species_traits)) + to_chat(user, "There is no facial hair to shave!") + return + if(!get_location_accessible(H, location)) + to_chat(user, "The mask is in the way!") + return + if(H.facial_hair_style == "Shaved") + to_chat(user, "Already clean-shaven!") + return + + if(H == user) //shaving yourself + user.visible_message("[user] starts to shave their facial hair with [src].", \ + "You take a moment to shave your facial hair with [src]...") + if(do_after(user, 50, target = H)) + user.visible_message("[user] shaves his facial hair clean with [src].", \ + "You finish shaving with [src]. Fast and clean!") + shave(H, location) + else + var/turf/H_loc = H.loc + user.visible_message("[user] tries to shave [H]'s facial hair with [src].", \ + "You start shaving [H]'s facial hair...") + if(do_after(user, 50, target = H)) + if(H_loc == H.loc) + user.visible_message("[user] shaves off [H]'s facial hair with [src].", \ + "You shave [H]'s facial hair clean off.") + shave(H, location) + + else if(location == "head") + if(!(HAIR in H.dna.species.species_traits)) + to_chat(user, "There is no hair to shave!") + return + if(!get_location_accessible(H, location)) + to_chat(user, "The headgear is in the way!") + return + if(H.hair_style == "Bald" || H.hair_style == "Balding Hair" || H.hair_style == "Skinhead") + to_chat(user, "There is not enough hair left to shave!") + return + + if(H == user) //shaving yourself + user.visible_message("[user] starts to shave their head with [src].", \ + "You start to shave your head with [src]...") + if(do_after(user, 5, target = H)) + user.visible_message("[user] shaves his head with [src].", \ + "You finish shaving with [src].") + shave(H, location) + else + var/turf/H_loc = H.loc + user.visible_message("[user] tries to shave [H]'s head with [src]!", \ + "You start shaving [H]'s head...") + if(do_after(user, 50, target = H)) + if(H_loc == H.loc) + user.visible_message("[user] shaves [H]'s head bald with [src]!", \ + "You shave [H]'s head bald.") + shave(H, location) + else + ..() + else + ..() From 7b7ddccbbc0034985e388303d7167ba947caedce Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 22:32:22 -0500 Subject: [PATCH 66/80] [MIRROR] Zombies cease healing for 6 seconds after taking damage (#2897) * Zombies cease healing for 6 seconds after taking damage (#30885) * Automatic changelog generation for PR #30056 [ci skip] * Delete AutoChangeLog-pr-30056.yml * Organic var for Organs * Update liver.dm * Zombie healing ceases in combat * Update zombies.dm * Update liver.dm * Update organ_internal.dm * TIMER_OVERRIDE * 2 equal signs * New condition structure * UNIQUE and OVERRIDE * Removes timer * Zombies cease healing for 6 seconds after taking damage --- .../living/carbon/human/species_types/zombies.dm | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm index 7c25b4d3cb..04123102c0 100644 --- a/code/modules/mob/living/carbon/human/species_types/zombies.dm +++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm @@ -1,3 +1,5 @@ +#define REGENERATION_DELAY 60 // After taking damage, how long it takes for automatic regeneration to begin + /datum/species/zombie // 1spooky name = "High Functioning Zombie" @@ -20,14 +22,21 @@ armor = 20 // 120 damage to KO a zombie, which kills it speedmod = 2 mutanteyes = /obj/item/organ/eyes/night_vision/zombie + var/regen_cooldown = 0 /datum/species/zombie/infectious/spec_stun(mob/living/carbon/human/H,amount) . = min(2, amount) +/datum/species/zombie/infectious/apply_damage(damage, damagetype = BRUTE, def_zone = null, blocked, mob/living/carbon/human/H) + . = ..() + if(.) + regen_cooldown = world.time + REGENERATION_DELAY + /datum/species/zombie/infectious/spec_life(mob/living/carbon/C) . = ..() C.a_intent = INTENT_HARM // THE SUFFERING MUST FLOW - C.heal_overall_damage(4,4) + if(regen_cooldown < world.time) + C.heal_overall_damage(4,4) if(prob(4)) playsound(C, pick(spooks), 50, TRUE, 10) if(C.InCritical()) @@ -56,3 +65,5 @@ sexes = 0 meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/zombie mutant_organs = list(/obj/item/organ/tongue/zombie) + +#undef REGENERATION_DELAY From f434049c37a9cc8aca5fec159ce1c134ffa8d470 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 22:32:24 -0500 Subject: [PATCH 67/80] Automatic changelog generation for PR #2897 [ci skip] --- html/changelogs/AutoChangeLog-pr-2897.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2897.yml diff --git a/html/changelogs/AutoChangeLog-pr-2897.yml b/html/changelogs/AutoChangeLog-pr-2897.yml new file mode 100644 index 0000000000..9cce393643 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2897.yml @@ -0,0 +1,4 @@ +author: "Robustin" +delete-after: True +changes: + - balance: "A zombie's automatic self-healing is stopped for 6 seconds after taking damage." From e9e80e3ce68783188cfa6393cda1dc478b5d2bf7 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 22:36:16 -0500 Subject: [PATCH 68/80] [MIRROR] Stops restraint removal progress bar spam (#2899) * Stops restraint removal progress bar spam * Stops restraint removal progress bar spam --- code/game/objects/items.dm | 1 + code/modules/mob/living/carbon/carbon.dm | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index efa8a1db44..072896ac01 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -61,6 +61,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) var/equip_delay_other = 20 //In deciseconds, how long an item takes to put on another person var/strip_delay = 40 //In deciseconds, how long an item takes to remove from another person var/breakouttime = 0 + var/being_removed = FALSE var/list/materials var/origin_tech = null //Used by R&D to determine what research bonuses it grants. var/needs_permit = 0 //Used by security bots to determine if this item is safe for public use. diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 717c5478a5..4109166ebd 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -297,6 +297,10 @@ /mob/living/carbon/proc/cuff_resist(obj/item/I, breakouttime = 600, cuff_break = 0) + if(I.being_removed) + to_chat(src, "You're already attempting to remove [I]!") + return + I.being_removed = TRUE breakouttime = I.breakouttime var/displaytime = breakouttime / 600 if(!cuff_break) @@ -318,6 +322,7 @@ else if(cuff_break == INSTANT_CUFFBREAK) clear_cuffs(I, cuff_break) + I.being_removed = FALSE /mob/living/carbon/proc/uncuff() if (handcuffed) From 11ebba05e4bf709e8a27853caf98b937915e541b Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 22:36:41 -0500 Subject: [PATCH 69/80] [MIRROR] Travis improvements for tools and trusty environment bump (#2900) * Travis improvements for tools and trusty environment bump We now run a php linter on the webhook We now combine and build all maps in the right build script Because only the byond build will use the maps this shouldn't run in the tools script file, this is only working because of the order the build scripts are run in the travis yml * Travis improvements for tools and trusty environment bump --- .travis.yml | 5 +++-- tools/travis/before_build_byond.sh | 4 ++++ tools/travis/before_build_tools.sh | 3 --- tools/travis/build_tools.sh | 1 + 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index ba11b40c97..b353761b2d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,5 @@ language: generic sudo: false -dist: precise - env: global: - BYOND_MAJOR="511" @@ -23,12 +21,15 @@ cache: addons: apt: + sources: + - sourceline: 'ppa:ondrej/php' packages: - libc6-i386 - libgcc1:i386 - libstdc++6:i386 - python - python-pip + - php5.6 install: - tools/travis/install_build_tools.sh diff --git a/tools/travis/before_build_byond.sh b/tools/travis/before_build_byond.sh index af7dc3cc66..8cfe0a1cf6 100755 --- a/tools/travis/before_build_byond.sh +++ b/tools/travis/before_build_byond.sh @@ -5,6 +5,10 @@ set -e if [ "$BUILD_TOOLS" = true ]; then exit 0 fi; +echo "Combining maps for building" +if [ "$DM_MAPFILE" = "loadallmaps" ]; then + python tools/travis/template_dm_generator.py +fi; if [ -d "$HOME/BYOND-${BYOND_MAJOR}.${BYOND_MINOR}/byond/bin" ]; then diff --git a/tools/travis/before_build_tools.sh b/tools/travis/before_build_tools.sh index 50167e1262..2329de82b2 100755 --- a/tools/travis/before_build_tools.sh +++ b/tools/travis/before_build_tools.sh @@ -5,6 +5,3 @@ if [ "$BUILD_TOOLS" = true ]; then cd tgui && source ~/.nvm/nvm.sh && npm install && cd .. fi; -if [ "$DM_MAPFILE" = "loadallmaps" ]; then - python tools/travis/template_dm_generator.py -fi; diff --git a/tools/travis/build_tools.sh b/tools/travis/build_tools.sh index 6aba5da538..2e9810b470 100755 --- a/tools/travis/build_tools.sh +++ b/tools/travis/build_tools.sh @@ -7,5 +7,6 @@ if [ "$BUILD_TOOLS" = true ]; then md5sum -c - <<< "49bc6b1b9ed56c83cceb6674bd97cb34 *html/changelogs/example.yml"; cd tgui && source ~/.nvm/nvm.sh && gulp && cd ..; + php5.6 -l tools/WebhookProcessor/github_webhook_processor.php; python tools/ss13_genchangelog.py html/changelog.html html/changelogs; fi; From e0b3e861c011789da1282015dcf3e33ead211c39 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 22:37:07 -0500 Subject: [PATCH 70/80] [MIRROR] Removes spawn()s in securitrons (#2901) * Removes spawn()s in securitrons (#30945) * Removes spawns in securitrons * Update sound.dm * Update secbot.dm * Removes spawn()s in securitrons --- code/game/sound.dm | 2 + .../mob/living/simple_animal/bot/secbot.dm | 40 +++++++++---------- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/code/game/sound.dm b/code/game/sound.dm index cf6d4707a7..13a3343e06 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -178,4 +178,6 @@ 'sound/vore/prey/death_10.ogg') if("bullet_miss") soundin = pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg') + if("law") + soundin = pick('sound/voice/bgod.ogg', 'sound/voice/biamthelaw.ogg', 'sound/voice/bsecureday.ogg', 'sound/voice/bradio.ogg', 'sound/voice/binsult.ogg', 'sound/voice/bcreep.ogg') return soundin diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index 2c50c98816..772604a527 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -65,10 +65,9 @@ /mob/living/simple_animal/bot/secbot/Initialize() . = ..() icon_state = "secbot[on]" - spawn(3) - var/datum/job/detective/J = new/datum/job/detective - access_card.access += J.get_access() - prev_access = access_card.access + var/datum/job/detective/J = new/datum/job/detective + access_card.access += J.get_access() + prev_access = access_card.access //SECHUD var/datum/atom_hud/secsensor = GLOB.huds[DATA_HUD_SECURITY_ADVANCED] @@ -225,21 +224,25 @@ Auto Patrol: []"}, playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2) C.visible_message("[src] is trying to put zipties on [C]!",\ "[src] is trying to put zipties on you!") - spawn(60) - if( !Adjacent(C) || !isturf(C.loc) ) //if he's in a closet or not adjacent, we cancel cuffing. - return - if(!C.handcuffed) - C.handcuffed = new /obj/item/restraints/handcuffs/cable/zipties/used(C) - C.update_handcuffed() - playsound(loc, pick('sound/voice/bgod.ogg', 'sound/voice/biamthelaw.ogg', 'sound/voice/bsecureday.ogg', 'sound/voice/bradio.ogg', 'sound/voice/binsult.ogg', 'sound/voice/bcreep.ogg'), 50, 0) - back_to_idle() + addtimer(CALLBACK(src, .proc/attempt_handcuff, C), 60) + +/mob/living/simple_animal/bot/secbot/proc/attempt_handcuff(mob/living/carbon/C) + if( !Adjacent(C) || !isturf(C.loc) ) //if he's in a closet or not adjacent, we cancel cuffing. + return + if(!C.handcuffed) + C.handcuffed = new /obj/item/restraints/handcuffs/cable/zipties/used(C) + C.update_handcuffed() + playsound(src, "law", 50, 0) + back_to_idle() + +/mob/living/simple_animal/bot/secbot/proc/update_onsprite() + icon_state = "secbot[on]" /mob/living/simple_animal/bot/secbot/proc/stun_attack(mob/living/carbon/C) var/judgement_criteria = judgement_criteria() playsound(loc, 'sound/weapons/egloves.ogg', 50, 1, -1) icon_state = "secbot-c" - spawn(2) - icon_state = "secbot[on]" + addtimer(CALLBACK(src, .proc/update_onsprite), 2) var/threat = 5 if(ishuman(C)) C.stuttering = 5 @@ -352,15 +355,13 @@ Auto Patrol: []"}, target = null last_found = world.time frustration = 0 - spawn(0) - handle_automated_action() //ensure bot quickly responds + INVOKE_ASYNC(src, .proc/handle_automated_action) /mob/living/simple_animal/bot/secbot/proc/back_to_hunt() anchored = FALSE frustration = 0 mode = BOT_HUNT - spawn(0) - handle_automated_action() //ensure bot quickly responds + INVOKE_ASYNC(src, .proc/handle_automated_action) // look for a criminal in view of the bot /mob/living/simple_animal/bot/secbot/proc/look_for_perp() @@ -385,8 +386,7 @@ Auto Patrol: []"}, playsound(loc, pick('sound/voice/bcriminal.ogg', 'sound/voice/bjustice.ogg', 'sound/voice/bfreeze.ogg'), 50, 0) visible_message("[src] points at [C.name]!") mode = BOT_HUNT - spawn(0) - handle_automated_action() // ensure bot quickly responds to a perp + INVOKE_ASYNC(src, .proc/handle_automated_action) break else continue From 3aafe338af781cffc57e23e524f3f2d64c0c4541 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 23:02:09 -0500 Subject: [PATCH 71/80] [MIRROR] Fixes adjust config (#2723) * Fixes adjust config * Update configuration.dm * Update game_options.txt * fixes persistance --- code/controllers/configuration.dm | 22 +++++- code/controllers/subsystem/persistence.dm | 33 ++++++-- .../modules/awaymissions/super_secret_room.dm | 13 ++-- .../mob/living/carbon/human/interactive.dm | 18 +++-- .../mob/living/carbon/monkey/punpun.dm | 52 +++++++------ .../mob/living/simple_animal/friendly/cat.dm | 26 ++++--- .../mob/living/simple_animal/friendly/dog.dm | 39 ++++++---- .../hostile/megafauna/colossus.dm | 22 +++--- .../mob/living/simple_animal/parrot.dm | 76 +++++++++++-------- config/game_options.txt | 3 + 10 files changed, 192 insertions(+), 112 deletions(-) diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 676172162d..0c0baccc56 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -136,7 +136,7 @@ GLOBAL_PROTECT(config_dir) var/list/probabilities = list() // relative probability of each mode var/list/min_pop = list() // overrides for acceptible player counts in a mode var/list/max_pop = list() - + var/list/repeated_mode_adjust = list() // weight adjustments for recent modes var/humans_need_surnames = 0 var/allow_ai = 0 // allow ai job var/forbid_secborg = 0 // disallow secborg module to be chosen. @@ -723,7 +723,14 @@ GLOBAL_PROTECT(config_dir) WRITE_FILE(GLOB.config_error_log, "Unknown game mode probability configuration definition: [prob_name].") else WRITE_FILE(GLOB.config_error_log, "Incorrect probability configuration definition: [prob_name] [prob_value].") - + if("repeated_mode_adjust") + if(value) + repeated_mode_adjust.Cut() + var/values = splittext(value," ") + for(var/v in values) + repeated_mode_adjust += text2num(v) + else + WRITE_FILE(GLOB.config_error_log, "Incorrect round weight adjustment configuration definition for [value].") if("protect_roles_from_antagonist") protect_roles_from_antagonist = 1 if("protect_assistant_from_antagonist") @@ -976,8 +983,15 @@ GLOBAL_PROTECT(config_dir) if(max_pop[M.config_tag]) M.maximum_players = max_pop[M.config_tag] if(M.can_start()) - runnable_modes[M] = probabilities[M.config_tag] - //to_chat(world, "DEBUG: runnable_mode\[[runnable_modes.len]\] = [M.config_tag]") + var/final_weight = probabilities[M.config_tag] + if(SSpersistence.saved_modes.len == 3 && repeated_mode_adjust.len == 3) + var/recent_round = min(SSpersistence.saved_modes.Find(M.config_tag),3) + var/adjustment = 0 + while(recent_round) + adjustment += repeated_mode_adjust[recent_round] + recent_round = SSpersistence.saved_modes.Find(M.config_tag,recent_round+1,0) + final_weight *= ((100-adjustment)/100) + runnable_modes[M] = final_weight return runnable_modes /datum/configuration/proc/get_runnable_midround_modes(crew) diff --git a/code/controllers/subsystem/persistence.dm b/code/controllers/subsystem/persistence.dm index 13762b83f9..df7121455c 100644 --- a/code/controllers/subsystem/persistence.dm +++ b/code/controllers/subsystem/persistence.dm @@ -8,7 +8,7 @@ SUBSYSTEM_DEF(persistence) var/list/obj/structure/chisel_message/chisel_messages = list() var/list/saved_messages = list() - + var/list/saved_modes = list(1,2,3) var/list/saved_trophies = list() /datum/controller/subsystem/persistence/Initialize() @@ -16,6 +16,7 @@ SUBSYSTEM_DEF(persistence) LoadPoly() LoadChiselMessages() LoadTrophies() + LoadRecentModes() ..() /datum/controller/subsystem/persistence/proc/LoadSatchels() @@ -41,8 +42,7 @@ SUBSYSTEM_DEF(persistence) var/json_file = file("data/npc_saves/SecretSatchels[SSmapping.config.map_name].json") if(!fexists(json_file)) return - var/list/json = list() - json = json_decode(file2text(json_file)) + var/list/json = json_decode(file2text(json_file)) old_secret_satchels = json["data"] if(old_secret_satchels.len) if(old_secret_satchels.len >= 20) //guards against low drop pools assuring that one player cannot reliably find his own gear. @@ -84,8 +84,7 @@ SUBSYSTEM_DEF(persistence) var/json_file = file("data/npc_saves/ChiselMessages[SSmapping.config.map_name].json") if(!fexists(json_file)) return - var/list/json - json = json_decode(file2text(json_file)) + var/list/json = json_decode(file2text(json_file)) if(!json) return @@ -129,13 +128,22 @@ SUBSYSTEM_DEF(persistence) var/json_file = file("data/npc_saves/TrophyItems.json") if(!fexists(json_file)) return - var/list/json = list() - json = json_decode(file2text(json_file)) + var/list/json = json_decode(file2text(json_file)) if(!json) return saved_trophies = json["data"] SetUpTrophies(saved_trophies.Copy()) +/datum/controller/subsystem/persistence/proc/LoadRecentModes() + var/json_file = file("data/RecentModes.json") + if(!fexists(json_file)) + return + var/list/json = json_decode(file2text(json_file)) + if(!json) + return + saved_modes = json["data"] + + /datum/controller/subsystem/persistence/proc/SetUpTrophies(list/trophy_items) for(var/A in GLOB.trophy_cases) var/obj/structure/displaycase/trophy/T = A @@ -165,6 +173,7 @@ SUBSYSTEM_DEF(persistence) CollectChiselMessages() CollectSecretSatchels() CollectTrophies() + CollectRoundtype() /datum/controller/subsystem/persistence/proc/CollectSecretSatchels() var/list/satchels = list() @@ -224,3 +233,13 @@ SUBSYSTEM_DEF(persistence) data["message"] = T.trophy_message data["placer_key"] = T.placer_key saved_trophies += list(data) + +/datum/controller/subsystem/persistence/proc/CollectRoundtype() + saved_modes[3] = saved_modes[2] + saved_modes[2] = saved_modes[1] + saved_modes[1] = SSticker.mode.config_tag + var/json_file = file("data/RecentModes.json") + var/list/file_data = list() + file_data["data"] = saved_modes + fdel(json_file) + WRITE_FILE(json_file, json_encode(file_data)) \ No newline at end of file diff --git a/code/modules/awaymissions/super_secret_room.dm b/code/modules/awaymissions/super_secret_room.dm index 5d26e34054..fa9aff7f43 100644 --- a/code/modules/awaymissions/super_secret_room.dm +++ b/code/modules/awaymissions/super_secret_room.dm @@ -9,10 +9,13 @@ var/times_spoken_to = 0 var/list/shenanigans = list() -/obj/structure/speaking_tile/New() - var/savefile/S = new /savefile("data/npc_saves/Poly.sav") - S["phrases"] >> shenanigans - ..() +/obj/structure/speaking_tile/Initialize() + . = ..() + var/json_file = file("data/npc_saves/Poly.json") + if(!fexists(json_file)) + return + var/list/json = json_decode(file2text(json_file)) + shenanigans = json["phrases"] /obj/structure/speaking_tile/interact(mob/user) if(!isliving(user) || speaking) @@ -118,4 +121,4 @@ ..() /obj/effect/landmark/error - name = "error" + name = "error" \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/interactive.dm b/code/modules/mob/living/carbon/human/interactive.dm index 6add1cb80c..91921f386d 100644 --- a/code/modules/mob/living/carbon/human/interactive.dm +++ b/code/modules/mob/living/carbon/human/interactive.dm @@ -87,12 +87,16 @@ /// SNPC voice handling /mob/living/carbon/human/interactive/proc/loadVoice() - var/json_file = file("data/npc_saves/snpc.json") - if(!fexists(json_file)) - return - var/list/json = list() - json = json_decode(file2text(json_file)) - knownStrings = json["knownStrings"] + if(fexists("data/npc_saves/snpc.sav")) + var/savefile/S = new /savefile("data/npc_saves/snpc.sav") + S["knownStrings"] >> knownStrings + fdel(S) + else + var/json_file = file("data/npc_saves/snpc.json") + if(!fexists(json_file)) + return + var/list/json = json_decode(file2text(json_file)) + knownStrings = json["knownStrings"] if(isnull(knownStrings)) knownStrings = list() @@ -1618,4 +1622,4 @@ TRAITS |= TRAIT_ROBUST TRAITS |= TRAIT_SMART faction += "bot_power" - . = ..() + . = ..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/monkey/punpun.dm b/code/modules/mob/living/carbon/monkey/punpun.dm index be716e26ba..767268f8dc 100644 --- a/code/modules/mob/living/carbon/monkey/punpun.dm +++ b/code/modules/mob/living/carbon/monkey/punpun.dm @@ -5,7 +5,7 @@ var/ancestor_chain = 1 var/relic_hat //Note: these two are paths var/relic_mask - var/memory_saved = 0 + var/memory_saved = FALSE var/list/pet_monkey_names = list("Pun Pun", "Bubbles", "Mojo", "George", "Darwin", "Aldo", "Caeser", "Kanzi", "Kong", "Terk", "Grodd", "Mala", "Bojangles", "Coco", "Able", "Baker", "Scatter", "Norbit", "Travis") var/list/rare_pet_monkey_names = list("Professor Bobo", "Deempisi's Revenge", "Furious George", "King Louie", "Dr. Zaius", "Jimmy Rustles", "Dinner", "Lanky") @@ -32,25 +32,33 @@ equip_to_slot_or_del(new relic_mask, slot_wear_mask) /mob/living/carbon/monkey/punpun/Life() - if(SSticker.current_state == GAME_STATE_FINISHED && !memory_saved) - Write_Memory(0) + if(!stat && SSticker.current_state == GAME_STATE_FINISHED && !memory_saved) + Write_Memory(FALSE, FALSE) + memory_saved = TRUE ..() /mob/living/carbon/monkey/punpun/death(gibbed) - if(!memory_saved || gibbed) - Write_Memory(1,gibbed) + if(!memory_saved) + Write_Memory(TRUE, gibbed) ..() /mob/living/carbon/monkey/punpun/proc/Read_Memory() - var/json_file = file("data/npc_saves/Punpun.json") - if(!fexists(json_file)) - return - var/list/json = list() - json = json_decode(file2text(json_file)) - ancestor_name = json["ancestor_name"] - ancestor_chain = json["ancestor_chain"] - relic_hat = json["relic_hat"] - relic_mask = json["relic_hat"] + if(fexists("data/npc_saves/Punpun.sav")) //legacy compatability to convert old format to new + var/savefile/S = new /savefile("data/npc_saves/Punpun.sav") + S["ancestor_name"] >> ancestor_name + S["ancestor_chain"] >> ancestor_chain + S["relic_hat"] >> relic_hat + S["relic_mask"] >> relic_mask + fdel("data/npc_saves/Punpun.sav") + else + var/json_file = file("data/npc_saves/Punpun.json") + if(!fexists(json_file)) + return + var/list/json = json_decode(file2text(json_file)) + ancestor_name = json["ancestor_name"] + ancestor_chain = json["ancestor_chain"] + relic_hat = json["relic_hat"] + relic_mask = json["relic_hat"] /mob/living/carbon/monkey/punpun/proc/Write_Memory(dead, gibbed) var/json_file = file("data/npc_saves/Punpun.json") @@ -60,14 +68,10 @@ file_data["ancestor_chain"] = null file_data["relic_hat"] = null file_data["relic_mask"] = null - if(dead) - file_data["ancestor_name"] = ancestor_name - file_data["ancestor_chain"] = ancestor_chain + 1 - file_data["relic_hat"] = head ? head.type : null - file_data["relic_mask"] = wear_mask ? wear_mask.type : null - if(!ancestor_name) - file_data["ancestor_name"] = name + else + file_data["ancestor_name"] = ancestor_name ? ancestor_name : name + file_data["ancestor_chain"] = dead ? ancestor_chain + 1 : ancestor_chain + file_data["relic_hat"] = head ? head.type : null + file_data["relic_mask"] = wear_mask ? wear_mask.type : null fdel(json_file) - WRITE_FILE(json_file, json_encode(file_data)) - if(!dead) - memory_saved = 1 \ No newline at end of file + WRITE_FILE(json_file, json_encode(file_data)) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 495e31d428..feb581e03b 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -85,7 +85,7 @@ var/list/family = list()//var restored from savefile, has count of each child type var/list/children = list()//Actual mob instances of children var/cats_deployed = 0 - var/memory_saved = 0 + var/memory_saved = FALSE /mob/living/simple_animal/pet/cat/Runtime/Initialize() if(prob(5)) @@ -100,6 +100,7 @@ Deploy_The_Cats() if(!stat && SSticker.current_state == GAME_STATE_FINISHED && !memory_saved) Write_Memory() + memory_saved = TRUE ..() /mob/living/simple_animal/pet/cat/Runtime/make_babies() @@ -110,21 +111,26 @@ /mob/living/simple_animal/pet/cat/Runtime/death() if(!memory_saved) - Write_Memory(1) + Write_Memory(TRUE) ..() /mob/living/simple_animal/pet/cat/Runtime/proc/Read_Memory() - var/json_file = file("data/npc_saves/Runtime.json") - if(!fexists(json_file)) - return - var/list/json = list() - json = json_decode(file2text(json_file)) - family = json["family"] + if(fexists("data/npc_saves/Runtime.sav")) //legacy compatability to convert old format to new + var/savefile/S = new /savefile("data/npc_saves/Runtime.sav") + S["family"] >> family + fdel("data/npc_saves/Runtime.sav") + else + var/json_file = file("data/npc_saves/Runtime.json") + if(!fexists(json_file)) + return + var/list/json = json_decode(file2text(json_file)) + family = json["family"] if(isnull(family)) family = list() /mob/living/simple_animal/pet/cat/Runtime/proc/Write_Memory(dead) var/json_file = file("data/npc_saves/Runtime.json") + var/list/file_data = list() family = list() if(!dead) for(var/mob/living/simple_animal/pet/cat/kitten/C in children) @@ -134,9 +140,9 @@ family[C.type] += 1 else family[C.type] = 1 + file_data["family"] = family fdel(json_file) - WRITE_FILE(json_file, json_encode(family)) - memory_saved = 1 + WRITE_FILE(json_file, json_encode(file_data)) /mob/living/simple_animal/pet/cat/Runtime/proc/Deploy_The_Cats() cats_deployed = 1 diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index 388a658e76..b9b526514b 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -292,7 +292,7 @@ gold_core_spawnable = 0 var/age = 0 var/record_age = 1 - var/memory_saved = 0 + var/memory_saved = FALSE var/saved_head //path /mob/living/simple_animal/pet/dog/corgi/Ian/Initialize() @@ -308,7 +308,7 @@ P.real_name = "Ian" P.gender = MALE P.desc = "It's the HoP's beloved corgi puppy." - Write_Memory(0) + Write_Memory(FALSE) qdel(src) else if(age == record_age) icon_state = "old_corgi" @@ -318,24 +318,31 @@ turns_per_move = 20 /mob/living/simple_animal/pet/dog/corgi/Ian/Life() - if(SSticker.current_state == GAME_STATE_FINISHED && !memory_saved) - Write_Memory(0) + if(!stat && SSticker.current_state == GAME_STATE_FINISHED && !memory_saved) + Write_Memory(FALSE) + memory_saved = TRUE ..() /mob/living/simple_animal/pet/dog/corgi/Ian/death() if(!memory_saved) - Write_Memory(1) + Write_Memory(TRUE) ..() /mob/living/simple_animal/pet/dog/corgi/Ian/proc/Read_Memory() - var/json_file = file("data/npc_saves/Ian.json") - if(!fexists(json_file)) - return - var/list/json = list() - json = json_decode(file2text(json_file)) - age = json["age"] - record_age = json["record_age"] - saved_head = json["saved_head"] + if(fexists("data/npc_saves/Ian.sav")) //legacy compatability to convert old format to new + var/savefile/S = new /savefile("data/npc_saves/Ian.sav") + S["age"] >> age + S["record_age"] >> record_age + S["saved_head"] >> saved_head + fdel("data/npc_saves/Ian.sav") + else + var/json_file = file("data/npc_saves/Ian.json") + if(!fexists(json_file)) + return + var/list/json = json_decode(file2text(json_file)) + age = json["age"] + record_age = json["record_age"] + saved_head = json["saved_head"] if(isnull(age)) age = 0 if(isnull(record_age)) @@ -350,14 +357,18 @@ file_data["age"] = age + 1 if((age + 1) > record_age) file_data["record_age"] = record_age + 1 + else + file_data["record_age"] = record_age if(inventory_head) file_data["saved_head"] = inventory_head.type + else + file_data["saved_head"] = null else file_data["age"] = 0 + file_data["record_age"] = record_age file_data["saved_head"] = null fdel(json_file) WRITE_FILE(json_file, json_encode(file_data)) - memory_saved = 1 /mob/living/simple_animal/pet/dog/corgi/Ian/Life() ..() diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index 1c7c5331d0..f3a398d5d9 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -250,7 +250,7 @@ Difficulty: Very Hard use_power = NO_POWER_USE var/memory_saved = FALSE var/list/stored_items = list() - var/static/list/blacklist = typecacheof(list(/obj/item/spellbook)) + var/list/blacklist = list() /obj/machinery/smartfridge/black_box/update_icon() return @@ -276,6 +276,7 @@ Difficulty: Very Hard ..() if(!memory_saved && SSticker.current_state == GAME_STATE_FINISHED) WriteMemory() + memory_saved = TRUE /obj/machinery/smartfridge/black_box/proc/WriteMemory() var/json_file = file("data/npc_saves/Blackbox.json") @@ -287,15 +288,18 @@ Difficulty: Very Hard file_data["data"] = stored_items fdel(json_file) WRITE_FILE(json_file, json_encode(file_data)) - memory_saved = TRUE /obj/machinery/smartfridge/black_box/proc/ReadMemory() - var/json_file = file("data/npc_saves/Blackbox.json") - if(!fexists(json_file)) - return - var/list/json = list() - json = json_decode(file2text(json_file)) - stored_items = json["data"] + if(fexists("data/npc_saves/Blackbox.sav")) //legacy compatability to convert old format to new + var/savefile/S = new /savefile("data/npc_saves/Blackbox.sav") + S["stored_items"] >> stored_items + fdel("data/npc_saves/Blackbox.sav") + else + var/json_file = file("data/npc_saves/Blackbox.json") + if(!fexists(json_file)) + return + var/list/json = json_decode(file2text(json_file)) + stored_items = json["data"] if(isnull(stored_items)) stored_items = list() @@ -789,4 +793,4 @@ Difficulty: Very Hard #undef ACTIVATE_WEAPON #undef ACTIVATE_MAGIC -#undef MEDAL_PREFIX +#undef MEDAL_PREFIX \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 2154d198bb..8f08742f78 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -297,7 +297,7 @@ else parrot_state |= PARROT_FLEE //Otherwise, fly like a bat out of hell! drop_held_item(0) - if(!stat && M.a_intent == INTENT_HELP) + if(stat != DEAD && M.a_intent == INTENT_HELP) handle_automated_speech(1) //assured speak/emote return @@ -873,7 +873,7 @@ speak = list("Poly wanna cracker!", ":e Check the crystal, you chucklefucks!",":e Wire the solars, you lazy bums!",":e WHO TOOK THE DAMN HARDSUITS?",":e OH GOD ITS ABOUT TO DELAMINATE CALL THE SHUTTLE") gold_core_spawnable = 0 speak_chance = 3 - var/memory_saved = 0 + var/memory_saved = FALSE var/rounds_survived = 0 var/longest_survival = 0 var/longest_deathstreak = 0 @@ -904,50 +904,62 @@ rounds_survived = max(++rounds_survived,1) if(rounds_survived > longest_survival) longest_survival = rounds_survived - Write_Memory() + Write_Memory(FALSE) + memory_saved = TRUE ..() /mob/living/simple_animal/parrot/Poly/death(gibbed) if(!memory_saved) - var/go_ghost = 0 - if(rounds_survived == longest_survival || rounds_survived == longest_deathstreak || prob(0.666)) - go_ghost = 1 - rounds_survived = min(--rounds_survived,0) - if(rounds_survived < longest_deathstreak) - longest_deathstreak = rounds_survived - Write_Memory() - if(go_ghost) - var/mob/living/simple_animal/parrot/Poly/ghost/G = new(loc) - if(mind) - mind.transfer_to(G) - else - G.key = key + Write_Memory(TRUE) + if(rounds_survived == longest_survival || rounds_survived == longest_deathstreak || prob(0.666)) + var/mob/living/simple_animal/parrot/Poly/ghost/G = new(loc) + if(mind) + mind.transfer_to(G) + else + G.key = key ..(gibbed) /mob/living/simple_animal/parrot/Poly/proc/Read_Memory() - var/json_file = file("data/npc_saves/Poly.json") - if(!fexists(json_file)) - return - var/list/json = list() - json = json_decode(file2text(json_file)) - speech_buffer = json["phrases"] - rounds_survived = json["roundssurvived"] - longest_survival = json["longestsurvival"] - longest_deathstreak = json["longestdeathstreak"] + if(fexists("data/npc_saves/Poly.sav")) //legacy compatability to convert old format to new + var/savefile/S = new /savefile("data/npc_saves/Poly.sav") + S["phrases"] >> speech_buffer + S["roundssurvived"] >> rounds_survived + S["longestsurvival"] >> longest_survival + S["longestdeathstreak"] >> longest_deathstreak + fdel("data/npc_saves/Poly.sav") + else + var/json_file = file("data/npc_saves/Poly.json") + if(!fexists(json_file)) + return + var/list/json = json_decode(file2text(json_file)) + speech_buffer = json["phrases"] + rounds_survived = json["roundssurvived"] + longest_survival = json["longestsurvival"] + longest_deathstreak = json["longestdeathstreak"] if(!islist(speech_buffer)) speech_buffer = list() -/mob/living/simple_animal/parrot/Poly/proc/Write_Memory() +/mob/living/simple_animal/parrot/Poly/proc/Write_Memory(dead) var/json_file = file("data/npc_saves/Poly.json") var/list/file_data = list() if(islist(speech_buffer)) file_data["phrases"] = speech_buffer - file_data["roundssurvived"] = rounds_survived - file_data["longestsurvival"] = longest_survival - file_data["longestdeathstreak"] = longest_deathstreak + if(dead) + file_data["roundssurvived"] = min(rounds_survived - 1, 0) + file_data["longestsurvival"] = longest_survival + if(rounds_survived - 1 < longest_deathstreak) + file_data["longestdeathstreak"] = rounds_survived - 1 + else + file_data["longestdeathstreak"] = longest_deathstreak + else + file_data["roundssurvived"] = rounds_survived + 1 + if(rounds_survived + 1 > longest_survival) + file_data["longestsurvival"] = rounds_survived + 1 + else + file_data["longestsurvival"] = longest_survival + file_data["longestdeathstreak"] = longest_deathstreak fdel(json_file) WRITE_FILE(json_file, json_encode(file_data)) - memory_saved = 1 /mob/living/simple_animal/parrot/Poly/ghost name = "The Ghost of Poly" @@ -959,7 +971,7 @@ butcher_results = list(/obj/item/ectoplasm = 1) /mob/living/simple_animal/parrot/Poly/ghost/Initialize() - memory_saved = 1 //At this point nothing is saved + memory_saved = TRUE //At this point nothing is saved ..() /mob/living/simple_animal/parrot/Poly/ghost/handle_automated_speech() @@ -984,4 +996,4 @@ loc = H H.ContractDisease(P) parrot_interest = null - H.visible_message("[src] dive bombs into [H]'s chest and vanishes!", "[src] dive bombs into your chest, vanishing! This can't be good!") + H.visible_message("[src] dive bombs into [H]'s chest and vanishes!", "[src] dive bombs into your chest, vanishing! This can't be good!") \ No newline at end of file diff --git a/config/game_options.txt b/config/game_options.txt index c580cd4ea7..b609f8b582 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -98,6 +98,9 @@ PROBABILITY DEVIL_AGENTS 0 ## You probably want to keep sandbox off by default for secret and random. PROBABILITY SANDBOX 0 +## Percent weight reductions for three of the most recent modes + +REPEATED_MODE_ADJUST 45 30 10 ## Toggles for continuous modes. ## Modes that aren't continuous will end the instant all antagonists are dead. From 671772035688969fba7bffe184aff9efc7ec698f Mon Sep 17 00:00:00 2001 From: Poojawa Date: Fri, 22 Sep 2017 23:34:41 -0500 Subject: [PATCH 72/80] copypasta fails again --- .../simple_animal/hostile/gorilla/gorilla.dm | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm b/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm index e472927fc9..2cf1dba0c9 100644 --- a/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm +++ b/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm @@ -22,7 +22,7 @@ melee_damage_upper = 18 damage_coeff = list(BRUTE = 1, BURN = 1.5, TOX = 1.5, CLONE = 0, STAMINA = 0, OXY = 1.5) obj_damage = 20 - environment_smash = 2 + environment_smash = ENVIRONMENT_SMASH_WALLS attacktext = "pummels" attack_sound = 'sound/weapons/punch1.ogg' dextrous = TRUE @@ -32,7 +32,9 @@ stat_attack = UNCONSCIOUS minbodytemp = 270 maxbodytemp = 350 + unique_name = TRUE var/list/gorilla_overlays[GORILLA_TOTAL_LAYERS] + var/oogas = 0 devourable = TRUE no_vore = FALSE @@ -51,6 +53,8 @@ return parts /mob/living/simple_animal/hostile/gorilla/AttackingTarget() + if(client) + oogaooga() var/list/parts = target_bodyparts(target) if(parts) if(!parts.len) @@ -72,8 +76,30 @@ var/list/parts = target_bodyparts(target) return ..() && !istype(the_target, /mob/living/carbon/monkey) && (!parts || parts.len > 3) +/mob/living/simple_animal/hostile/gorilla/CanSmashTurfs(turf/T) + return iswallturf(T) + +/mob/living/simple_animal/hostile/gorilla/gib(no_brain) + if(!no_brain) + var/mob/living/brain/B = new(drop_location()) + B.name = real_name + B.real_name = real_name + if(mind) + mind.transfer_to(B) + ..() + /mob/living/simple_animal/hostile/gorilla/handle_automated_speech(override) if(speak_chance && (override || prob(speak_chance))) playsound(src, "sound/creatures/gorilla.ogg", 200) ..() +/mob/living/simple_animal/hostile/gorilla/can_use_guns(obj/item/G) + to_chat(src, "Your meaty finger is much too large for the trigger guard!") + return FALSE + + +/mob/living/simple_animal/hostile/gorilla/proc/oogaooga() + oogas++ + if(oogas >= rand(2,6)) + playsound(src, "sound/creatures/gorilla.ogg", 200) + oogas = 0 From 2a860d195485303889cbc26c5cf3ef5e401a34c5 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 23:35:22 -0500 Subject: [PATCH 73/80] [MIRROR] More Initialize() fixes, requires someone to test with DB (#2857) * More Initialize() fixes, requires someone to test with DB * fucking mirror failure --- code/game/machinery/airlock_control.dm | 22 ++++---- code/game/machinery/computer/Operating.dm | 10 ++-- code/game/machinery/computer/atmos_control.dm | 4 +- code/game/machinery/computer/message.dm | 52 +++++++++---------- code/game/machinery/computer/pod.dm | 8 +-- .../machinery/computer/telecrystalconsoles.dm | 4 +- code/game/machinery/magnet.dm | 4 +- code/game/machinery/vending.dm | 6 +-- code/game/objects/effects/landmarks.dm | 30 +++++------ .../game/objects/effects/spawners/lootdrop.dm | 8 +-- code/game/objects/items/RCD.dm | 2 +- code/game/objects/items/cards_ids.dm | 18 +++---- .../items/devices/radio/electropack.dm | 20 +++---- code/game/objects/items/eightball.dm | 8 +-- code/game/objects/items/handcuffs.dm | 4 +- .../objects/items/implants/implantcase.dm | 4 +- code/game/objects/items/implants/implanter.dm | 4 +- code/game/objects/items/storage/backpack.dm | 4 +- code/game/objects/items/storage/boxes.dm | 2 +- code/game/objects/items/storage/firstaid.dm | 2 +- code/game/objects/items/storage/toolbox.dm | 4 +- code/game/objects/structures/lattice.dm | 6 +-- code/game/objects/structures/tables_racks.dm | 4 +- code/game/objects/structures/traps.dm | 2 +- code/game/turfs/closed.dm | 2 +- code/game/turfs/simulated/floor.dm | 2 +- .../game/turfs/simulated/floor/fancy_floor.dm | 10 ++-- .../game/turfs/simulated/floor/light_floor.dm | 2 +- .../turfs/simulated/floor/mineral_floor.dm | 4 +- code/game/turfs/simulated/floor/misc_floor.dm | 4 +- code/game/turfs/simulated/floor/plating.dm | 2 +- .../game/turfs/simulated/floor/reinf_floor.dm | 2 +- code/game/turfs/simulated/minerals.dm | 6 +-- code/game/turfs/space/transit.dm | 2 +- code/modules/events/holiday/xmas.dm | 2 +- code/modules/events/wizard/magicarp.dm | 2 +- code/modules/library/lib_items.dm | 14 ++--- code/modules/library/random_books.dm | 8 +-- code/modules/mob/living/carbon/alien/alien.dm | 2 +- .../carbon/alien/humanoid/caste/drone.dm | 2 +- .../carbon/alien/humanoid/caste/praetorian.dm | 4 +- .../carbon/alien/humanoid/caste/sentinel.dm | 4 +- .../living/carbon/alien/humanoid/humanoid.dm | 7 +-- .../mob/living/carbon/alien/larva/larva.dm | 6 +-- .../living/simple_animal/hostile/mushroom.dm | 2 +- 45 files changed, 161 insertions(+), 160 deletions(-) diff --git a/code/game/machinery/airlock_control.dm b/code/game/machinery/airlock_control.dm index 69ccb4240a..b5175b215f 100644 --- a/code/game/machinery/airlock_control.dm +++ b/code/game/machinery/airlock_control.dm @@ -20,28 +20,28 @@ close(1) if("unlock") - locked = FALSE + locked = FALSE update_icon() if("lock") - locked = TRUE + locked = TRUE update_icon() if("secure_open") - locked = FALSE + locked = FALSE update_icon() sleep(2) open(1) - locked = TRUE + locked = TRUE update_icon() if("secure_close") - locked = FALSE + locked = FALSE close(1) - locked = TRUE + locked = TRUE sleep(2) update_icon() @@ -88,7 +88,7 @@ name = "airlock sensor" resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF - anchored = TRUE + anchored = TRUE power_channel = ENVIRON var/id_tag @@ -97,8 +97,8 @@ var/datum/radio_frequency/radio_connection - var/on = TRUE - var/alert = FALSE + var/on = TRUE + var/alert = FALSE /obj/machinery/airlock_sensor/update_icon() @@ -143,9 +143,9 @@ radio_connection = SSradio.add_object(src, frequency, GLOB.RADIO_AIRLOCK) /obj/machinery/airlock_sensor/Initialize() - ..() + . = ..() set_frequency(frequency) /obj/machinery/airlock_sensor/Destroy() - SSradio.remove_object(src,frequency) + SSradio.remove_object(src,frequency) return ..() \ No newline at end of file diff --git a/code/game/machinery/computer/Operating.dm b/code/game/machinery/computer/Operating.dm index 2033fd7146..a8e9c7bcca 100644 --- a/code/game/machinery/computer/Operating.dm +++ b/code/game/machinery/computer/Operating.dm @@ -4,17 +4,17 @@ icon_screen = "crew" icon_keyboard = "med_key" circuit = /obj/item/circuitboard/computer/operating - var/mob/living/carbon/human/patient - var/obj/structure/table/optable/table + var/mob/living/carbon/human/patient + var/obj/structure/table/optable/table light_color = LIGHT_COLOR_BLUE /obj/machinery/computer/operating/Initialize() - ..() + . = ..() find_table() /obj/machinery/computer/operating/proc/find_table() - for(var/dir in GLOB.cardinals) + for(var/dir in GLOB.cardinals) table = locate(/obj/structure/table/optable, get_step(src, dir)) if(table) table.computer = src @@ -63,4 +63,4 @@ var/datum/surgery_step/surgery_step = procedure.get_surgery_step() dat += "Next step: [capitalize(surgery_step.name)]
" dat += "" - return dat + return dat \ No newline at end of file diff --git a/code/game/machinery/computer/atmos_control.dm b/code/game/machinery/computer/atmos_control.dm index 8131dbd4a6..2d1d771203 100644 --- a/code/game/machinery/computer/atmos_control.dm +++ b/code/game/machinery/computer/atmos_control.dm @@ -84,7 +84,7 @@ light_color = LIGHT_COLOR_CYAN /obj/machinery/computer/atmos_control/Initialize() - ..() + . = ..() set_frequency(frequency) /obj/machinery/computer/atmos_control/Destroy() @@ -227,4 +227,4 @@ else if(output_tag == id_tag) output_info = signal.data else - ..(signal) + ..(signal) \ No newline at end of file diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm index 44822d3771..f3fabcc21c 100644 --- a/code/game/machinery/computer/message.dm +++ b/code/game/machinery/computer/message.dm @@ -40,25 +40,25 @@ return ..() /obj/machinery/computer/message_monitor/emag_act(mob/user) - if(emagged) - return - if(!isnull(src.linkedServer)) - emagged = TRUE - screen = 2 - spark_system.set_up(5, 0, src) - src.spark_system.start() - var/obj/item/paper/monitorkey/MK = new/obj/item/paper/monitorkey - MK.loc = src.loc - // Will help make emagging the console not so easy to get away with. - MK.info += "

�%@%(*$%&(�&?*(%&�/{}" - var/time = 100 * length(src.linkedServer.decryptkey) - addtimer(CALLBACK(src, .proc/UnmagConsole), time) - message = rebootmsg - else - to_chat(user, "A no server error appears on the screen.") + if(emagged) + return + if(!isnull(src.linkedServer)) + emagged = TRUE + screen = 2 + spark_system.set_up(5, 0, src) + src.spark_system.start() + var/obj/item/paper/monitorkey/MK = new/obj/item/paper/monitorkey + MK.loc = src.loc + // Will help make emagging the console not so easy to get away with. + MK.info += "

�%@%(*$%&(�&?*(%&�/{}" + var/time = 100 * length(src.linkedServer.decryptkey) + addtimer(CALLBACK(src, .proc/UnmagConsole), time) + message = rebootmsg + else + to_chat(user, "A no server error appears on the screen.") /obj/machinery/computer/message_monitor/Initialize() - ..() + . = ..() //Is the server isn't linked to a server, and there's a server available, default it to the first one in the list. if(!linkedServer) if(GLOB.message_servers && GLOB.message_servers.len > 0) @@ -236,7 +236,7 @@ src.screen = 0 // Return the screen back to normal /obj/machinery/computer/message_monitor/proc/UnmagConsole() - emagged = FALSE + emagged = FALSE /obj/machinery/computer/message_monitor/proc/ResetMessage() customsender = "System Administrator" @@ -309,7 +309,7 @@ message = noserver else if(auth) - var/dkey = trim(stripped_input(usr, "Please enter the decryption key.")) + var/dkey = trim(stripped_input(usr, "Please enter the decryption key.")) if(dkey && dkey != "") if(src.linkedServer.decryptkey == dkey) var/newkey = trim(input(usr,"Please enter the new key (3 - 16 characters max):")) @@ -414,11 +414,11 @@ customrecepient.tnote += "← From [customsender] ([customjob]):
[custommessage]
" if (!customrecepient.silent) playsound(customrecepient.loc, 'sound/machines/twobeep.ogg', 50, 1) - customrecepient.audible_message("[icon2html(customrecepient, viewers(customrecepient))] *[customrecepient.ttone]*", null, 3) + customrecepient.audible_message("[icon2html(customrecepient, viewers(customrecepient))] *[customrecepient.ttone]*", null, 3) if( customrecepient.loc && ishuman(customrecepient.loc) ) var/mob/living/carbon/human/H = customrecepient.loc - to_chat(H, "[icon2html(customrecepient, viewers(H))] Message from [customsender] ([customjob]), \"[custommessage]\" (Reply)") - log_talk(usr,"[key_name(usr)] (PDA: [customsender]) sent \"[custommessage]\" to [customrecepient.owner]",LOGPDA) + to_chat(H, "[icon2html(customrecepient, viewers(H))] Message from [customsender] ([customjob]), \"[custommessage]\" (Reply)") + log_talk(usr,"[key_name(usr)] (PDA: [customsender]) sent \"[custommessage]\" to [customrecepient.owner]",LOGPDA) customrecepient.cut_overlays() customrecepient.add_overlay(mutable_appearance('icons/obj/pda.dmi', "pda-r")) //Sender is faking as someone who exists @@ -427,11 +427,11 @@ customrecepient.tnote += "← From [PDARec.owner] ([customjob]):
[custommessage]
" if (!customrecepient.silent) playsound(customrecepient.loc, 'sound/machines/twobeep.ogg', 50, 1) - customrecepient.audible_message("[icon2html(customrecepient, viewers(customrecepient))] *[customrecepient.ttone]*", null, 3) + customrecepient.audible_message("[icon2html(customrecepient, viewers(customrecepient))] *[customrecepient.ttone]*", null, 3) if( customrecepient.loc && ishuman(customrecepient.loc) ) var/mob/living/carbon/human/H = customrecepient.loc - to_chat(H, "[icon2html(customrecepient, H)] Message from [PDARec.owner] ([customjob]), \"[custommessage]\" (Reply)") - log_talk(usr,"[key_name(usr)] (PDA: [PDARec.owner]) sent \"[custommessage]\" to [customrecepient.owner]",LOGPDA) + to_chat(H, "[icon2html(customrecepient, H)] Message from [PDARec.owner] ([customjob]), \"[custommessage]\" (Reply)") + log_talk(usr,"[key_name(usr)] (PDA: [PDARec.owner]) sent \"[custommessage]\" to [customrecepient.owner]",LOGPDA) customrecepient.cut_overlays() customrecepient.add_overlay(mutable_appearance('icons/obj/pda.dmi', "pda-r")) //Finally.. @@ -468,4 +468,4 @@ info = "

Daily Key Reset


The new message monitor key is '[server.decryptkey]'.
Please keep this a secret and away from the clown.
If necessary, change the password to a more secure one." info_links = info add_overlay("paper_words") - break + break \ No newline at end of file diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm index 3f18cc29e9..943419c548 100644 --- a/code/game/machinery/computer/pod.dm +++ b/code/game/machinery/computer/pod.dm @@ -10,7 +10,7 @@ /obj/machinery/computer/pod/Initialize() - ..() + . = ..() for(var/obj/machinery/mass_driver/M in range(range, src)) if(M.id == id) connected = M @@ -21,7 +21,7 @@ return if(!connected) - say("Cannot locate mass driver connector. Cancelling firing sequence!") + say("Cannot locate mass driver connector. Cancelling firing sequence!") return for(var/obj/machinery/door/poddoor/M in range(range, src)) @@ -130,7 +130,7 @@ name = "\improper ProComp Executive IIc" desc = "The Syndicate operate on a tight budget. Operates external airlocks." title = "External Airlock Controls" - req_access = list(ACCESS_SYNDICATE) + req_access = list(ACCESS_SYNDICATE) /obj/machinery/computer/pod/old/syndicate/attack_hand(mob/user) if(!allowed(user)) @@ -142,4 +142,4 @@ /obj/machinery/computer/pod/old/swf name = "\improper Magix System IV" - desc = "An arcane artifact that holds much magic. Running E-Knock 2.2: Sorceror's Edition" + desc = "An arcane artifact that holds much magic. Running E-Knock 2.2: Sorceror's Edition" \ No newline at end of file diff --git a/code/game/machinery/computer/telecrystalconsoles.dm b/code/game/machinery/computer/telecrystalconsoles.dm index 678d856dce..52de3830df 100644 --- a/code/game/machinery/computer/telecrystalconsoles.dm +++ b/code/game/machinery/computer/telecrystalconsoles.dm @@ -22,7 +22,7 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E var/obj/machinery/computer/telecrystals/boss/linkedboss = null /obj/machinery/computer/telecrystals/uplinker/Initialize() - ..() + . = ..() var/ID = pick_n_take(GLOB.possible_uplinker_IDs) if(!ID) @@ -220,4 +220,4 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E src.updateUsrDialog() return -#undef NUKESCALINGMODIFIER +#undef NUKESCALINGMODIFIER \ No newline at end of file diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm index d0d40e7233..36366ffbd9 100644 --- a/code/game/machinery/magnet.dm +++ b/code/game/machinery/magnet.dm @@ -215,7 +215,7 @@ /obj/machinery/magnetic_controller/Initialize() - ..() + . = ..() if(autolink) for(var/obj/machinery/magnetic_module/M in GLOB.machines) if(M.freq == frequency && M.code == code) @@ -391,4 +391,4 @@ if(!(nextchar in list(";", "&", "*", " "))) // if char is a separator, ignore rpath += copytext(path, i, i+1) // else, add to list - // there doesn't HAVE to be separators but it makes paths syntatically visible + // there doesn't HAVE to be separators but it makes paths syntatically visible \ No newline at end of file diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index d90e91a428..b3a7f99758 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -706,7 +706,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C ..() var/T = pick(subtypesof(/obj/machinery/vending/snack) - /obj/machinery/vending/snack/random) new T(get_turf(src)) - qdel(src) + return INITIALIZE_HINT_QDEL /obj/machinery/vending/snack/blue icon_state = "snackblue" @@ -758,7 +758,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C . = ..() var/T = pick(subtypesof(/obj/machinery/vending/cola) - /obj/machinery/vending/cola/random) new T(get_turf(src)) - qdel(src) + return INITIALIZE_HINT_QDEL /obj/machinery/vending/cola/blue icon_state = "Cola_Machine" @@ -1195,4 +1195,4 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C #undef STANDARD_CHARGE #undef CONTRABAND_CHARGE -#undef COIN_CHARGE +#undef COIN_CHARGE \ No newline at end of file diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index e0cec3af02..7401797a47 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -160,7 +160,7 @@ /obj/effect/landmark/start/wizard/Initialize(mapload) ..() GLOB.wizardstart += loc - qdel(src) + return INITIALIZE_HINT_QDEL /obj/effect/landmark/start/new_player name = "New Player" @@ -173,7 +173,7 @@ /obj/effect/landmark/start/new_player/Initialize(mapload) ..() - qdel(src) + return INITIALIZE_HINT_QDEL @@ -183,7 +183,7 @@ /obj/effect/landmark/latejoin/Initialize(mapload) ..() SSjob.latejoin_trackers += loc - qdel(src) + return INITIALIZE_HINT_QDEL // carp. /obj/effect/landmark/carpspawn @@ -229,7 +229,7 @@ /obj/effect/landmark/xeno_spawn/Initialize(mapload) ..() GLOB.xeno_spawn += loc - qdel(src) + return INITIALIZE_HINT_QDEL // blobs. /obj/effect/landmark/blobstart @@ -238,7 +238,7 @@ /obj/effect/landmark/blobstart/Initialize(mapload) ..() GLOB.blobstart += loc - qdel(src) + return INITIALIZE_HINT_QDEL /obj/effect/landmark/secequipment name = "secequipment" @@ -246,7 +246,7 @@ /obj/effect/landmark/secequipment/Initialize(mapload) ..() GLOB.secequipment += loc - qdel(src) + return INITIALIZE_HINT_QDEL /obj/effect/landmark/prisonwarp name = "prisonwarp" @@ -254,15 +254,15 @@ /obj/effect/landmark/prisonwarp/Initialize(mapload) ..() GLOB.prisonwarp += loc - qdel(src) - + return INITIALIZE_HINT_QDEL + /obj/effect/landmark/ert_spawn name = "Emergencyresponseteam" /obj/effect/landmark/ert_spawn/Initialize(mapload) ..() GLOB.emergencyresponseteamspawn += loc - qdel(src) + return INITIALIZE_HINT_QDEL /obj/effect/landmark/holding_facility name = "Holding Facility" @@ -270,7 +270,7 @@ /obj/effect/landmark/holding_facility/Initialize(mapload) ..() GLOB.holdingfacility += loc - qdel(src) + return INITIALIZE_HINT_QDEL /obj/effect/landmark/thunderdome/observe name = "tdomeobserve" @@ -278,7 +278,7 @@ /obj/effect/landmark/thunderdome/observe/Initialize(mapload) ..() GLOB.tdomeobserve += loc - qdel(src) + return INITIALIZE_HINT_QDEL /obj/effect/landmark/thunderdome/one name = "tdome1" @@ -286,7 +286,7 @@ /obj/effect/landmark/thunderdome/one/Initialize(mapload) ..() GLOB.tdome1 += loc - qdel(src) + return INITIALIZE_HINT_QDEL /obj/effect/landmark/thunderdome/two name = "tdome2" @@ -294,7 +294,7 @@ /obj/effect/landmark/thunderdome/two/Initialize(mapload) ..() GLOB.tdome2 += loc - qdel(src) + return INITIALIZE_HINT_QDEL /obj/effect/landmark/thunderdome/admin name = "tdomeadmin" @@ -302,7 +302,7 @@ /obj/effect/landmark/thunderdome/admin/Initialize(mapload) ..() GLOB.tdomeadmin += loc - qdel(src) + return INITIALIZE_HINT_QDEL //generic event spawns /obj/effect/landmark/event_spawn @@ -330,4 +330,4 @@ /obj/effect/landmark/ruin/Destroy() GLOB.ruin_landmarks -= src ruin_template = null - . = ..() + . = ..() \ No newline at end of file diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index 94cabaf6e1..2bfce20ccd 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -18,7 +18,7 @@ if(lootspawn) new lootspawn(T) lootcount-- - qdel(src) + return INITIALIZE_HINT_QDEL /obj/effect/spawner/lootdrop/armory_contraband name = "armory contraband gun spawner" @@ -89,7 +89,7 @@ /obj/effect/spawner/lootdrop/maintenance/Initialize(mapload) loot = GLOB.maintenance_loot - ..() + . = ..() /obj/effect/spawner/lootdrop/crate_spawner name = "lootcrate spawner" //USE PROMO CODE "SELLOUT" FOR 20% OFF! @@ -130,7 +130,7 @@ loot = list() for(var/path in subtypesof(/obj/effect/spawner/bundle/costume)) loot[path] = TRUE - ..() + . = ..() // Minor lootdrops follow @@ -162,4 +162,4 @@ name = "25% cyborg mask spawner" loot = list( /obj/item/clothing/mask/gas/cyborg = 25, - "" = 75) + "" = 75) \ No newline at end of file diff --git a/code/game/objects/items/RCD.dm b/code/game/objects/items/RCD.dm index 4c4c537859..26cf258c8e 100644 --- a/code/game/objects/items/RCD.dm +++ b/code/game/objects/items/RCD.dm @@ -31,7 +31,7 @@ obj/item/construction var/no_ammo_message = "The \'Low Ammo\' light on the device blinks yellow." /obj/item/construction/Initialize() - ..() + . = ..() desc = "A [src]. It currently holds [matter]/[max_matter] matter-units." spark_system = new /datum/effect_system/spark_spread spark_system.set_up(5, 0, src) diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index f3e78dfac9..bfc8bc9da3 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -160,7 +160,7 @@ update_label("John Doe", "Clowny") var/anyone = FALSE //Can anyone forge the ID or just syndicate? /obj/item/card/id/syndicate/Initialize() - ..() + . = ..() var/datum/action/item_action/chameleon/change/chameleon_action = new(src) chameleon_action.chameleon_type = /obj/item/card/id chameleon_action.chameleon_name = "ID Card" @@ -180,14 +180,14 @@ update_label("John Doe", "Clowny") if(isliving(user) && user.mind) if(user.mind.special_role || anyone) if(alert(user, "Action", "Agent ID", "Show", "Forge") == "Forge") - var t = copytext(sanitize(input(user, "What name would you like to put on this card?", "Agent card name", registered_name ? registered_name : (ishuman(user) ? user.real_name : user.name))as text | null),1,26) + var/t = copytext(sanitize(input(user, "What name would you like to put on this card?", "Agent card name", registered_name ? registered_name : (ishuman(user) ? user.real_name : user.name))as text | null),1,26) if(!t || t == "Unknown" || t == "floor" || t == "wall" || t == "r-wall") //Same as mob/dead/new_player/prefrences.dm if (t) alert("Invalid name.") return registered_name = t - var u = copytext(sanitize(input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Assistant")as text | null),1,MAX_MESSAGE_LEN) + var/u = copytext(sanitize(input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Assistant")as text | null),1,MAX_MESSAGE_LEN) if(!u) registered_name = "" return @@ -220,7 +220,7 @@ update_label("John Doe", "Clowny") /obj/item/card/id/captains_spare/Initialize() var/datum/job/captain/J = new/datum/job/captain access = J.get_access() - ..() + . = ..() /obj/item/card/id/centcom name = "\improper CentCom ID" @@ -231,7 +231,7 @@ update_label("John Doe", "Clowny") /obj/item/card/id/centcom/Initialize() access = get_all_centcom_access() - ..() + . = ..() /obj/item/card/id/ert name = "\improper CentCom ID" @@ -242,7 +242,7 @@ update_label("John Doe", "Clowny") /obj/item/card/id/ert/Initialize() access = get_all_accesses()+get_ert_access("commander")-ACCESS_CHANGE_IDS - ..() + . = ..() /obj/item/card/id/ert/Security registered_name = "Security Response Officer" @@ -250,7 +250,7 @@ update_label("John Doe", "Clowny") /obj/item/card/id/ert/Security/Initialize() access = get_all_accesses()+get_ert_access("sec")-ACCESS_CHANGE_IDS - ..() + . = ..() /obj/item/card/id/ert/Engineer registered_name = "Engineer Response Officer" @@ -258,7 +258,7 @@ update_label("John Doe", "Clowny") /obj/item/card/id/ert/Engineer/Initialize() access = get_all_accesses()+get_ert_access("eng")-ACCESS_CHANGE_IDS - ..() + . = ..() /obj/item/card/id/ert/Medical registered_name = "Medical Response Officer" @@ -266,7 +266,7 @@ update_label("John Doe", "Clowny") /obj/item/card/id/ert/Medical/Initialize() access = get_all_accesses()+get_ert_access("med")-ACCESS_CHANGE_IDS - ..() + . = ..() /obj/item/card/id/prisoner name = "prisoner ID card" diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index bd54fda56f..8b27659ada 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -4,13 +4,13 @@ icon = 'icons/obj/radio.dmi' icon_state = "electropack0" item_state = "electropack" - lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' - flags_1 = CONDUCT_1 + lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' + righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' + flags_1 = CONDUCT_1 slot_flags = SLOT_BACK w_class = WEIGHT_CLASS_HUGE materials = list(MAT_METAL=10000, MAT_GLASS=2500) - var/on = TRUE + var/on = TRUE var/code = 2 var/frequency = 1449 var/shock_cooldown = 0 @@ -20,11 +20,11 @@ return (FIRELOSS) /obj/item/device/electropack/Initialize() - ..() + . = ..() SSradio.add_object(src, frequency, GLOB.RADIO_CHAT) /obj/item/device/electropack/Destroy() - SSradio.remove_object(src, frequency) + SSradio.remove_object(src, frequency) return ..() /obj/item/device/electropack/attack_hand(mob/user) @@ -52,8 +52,8 @@ user.put_in_hands(A) A.add_fingerprint(user) - if(src.flags_1 & NODROP_1) - A.flags_1 |= NODROP_1 + if(src.flags_1 & NODROP_1) + A.flags_1 |= NODROP_1 else return ..() @@ -108,7 +108,7 @@ spawn(100) shock_cooldown = 0 var/mob/living/L = loc - step(L, pick(GLOB.cardinals)) + step(L, pick(GLOB.cardinals)) to_chat(L, "You feel a sharp shock!") var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread @@ -143,4 +143,4 @@ Code: "} user << browse(dat, "window=radio") onclose(user, "radio") - return + return \ No newline at end of file diff --git a/code/game/objects/items/eightball.dm b/code/game/objects/items/eightball.dm index 82d4c3d99f..d8be420a08 100644 --- a/code/game/objects/items/eightball.dm +++ b/code/game/objects/items/eightball.dm @@ -37,10 +37,10 @@ "Very doubtful") /obj/item/toy/eightball/Initialize(mapload) - ..() + . = ..() if(prob(1)) new /obj/item/toy/eightball/haunted(get_turf(src)) - qdel(src) + return INITIALIZE_HINT_QDEL /obj/item/toy/eightball/attack_self(mob/user) if(shaking) @@ -81,7 +81,7 @@ var/fixed_answer /obj/item/toy/eightball/broken/Initialize(mapload) - ..() + . = ..() fixed_answer = pick(possible_answers) /obj/item/toy/eightball/broken/get_answer() @@ -97,7 +97,7 @@ var/list/votes /obj/item/toy/eightball/haunted/Initialize(mapload) - ..() + . = ..() votes = list() GLOB.poi_list |= src diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index bf5cf0417c..50b0f4e7e6 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -253,7 +253,7 @@ var/trap_damage = 20 /obj/item/restraints/legcuffs/beartrap/Initialize() - ..() + . = ..() icon_state = "[initial(icon_state)][armed]" /obj/item/restraints/legcuffs/beartrap/suicide_act(mob/user) @@ -369,4 +369,4 @@ var/obj/item/restraints/legcuffs/beartrap/B = new /obj/item/restraints/legcuffs/beartrap/energy/cyborg(get_turf(hit_atom)) B.Crossed(hit_atom) qdel(src) - ..() + ..() \ No newline at end of file diff --git a/code/game/objects/items/implants/implantcase.dm b/code/game/objects/items/implants/implantcase.dm index 08681ac9e4..0bafff176b 100644 --- a/code/game/objects/items/implants/implantcase.dm +++ b/code/game/objects/items/implants/implantcase.dm @@ -61,7 +61,7 @@ return ..() /obj/item/implantcase/Initialize(mapload) - ..() + . = ..() if(imp_type) imp = new imp_type(src) update_icon() @@ -80,4 +80,4 @@ /obj/item/implantcase/adrenaline name = "implant case - 'Adrenaline'" desc = "A glass case containing an adrenaline implant." - imp_type = /obj/item/implant/adrenalin + imp_type = /obj/item/implant/adrenalin \ No newline at end of file diff --git a/code/game/objects/items/implants/implanter.dm b/code/game/objects/items/implants/implanter.dm index 24b1928dbc..372671acf5 100644 --- a/code/game/objects/items/implants/implanter.dm +++ b/code/game/objects/items/implants/implanter.dm @@ -59,7 +59,7 @@ return ..() /obj/item/implanter/Initialize(mapload) - ..() + . = ..() if(imp_type) imp = new imp_type(src) update_icon() @@ -70,4 +70,4 @@ /obj/item/implanter/emp name = "implanter (EMP)" - imp_type = /obj/item/implant/emp + imp_type = /obj/item/implant/emp \ No newline at end of file diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index fe89f42338..2290ea91d3 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -289,7 +289,7 @@ icon_state = initial(icon_state) /obj/item/storage/backpack/satchel/flat/Initialize(mapload) - ..() + . = ..() SSpersistence.new_secret_satchels += src /obj/item/storage/backpack/satchel/flat/PopulateContents() @@ -306,7 +306,7 @@ var/revealed = 0 /obj/item/storage/backpack/satchel/flat/secret/Initialize() - ..() + . = ..() if(isfloorturf(loc) && !istype(loc, /turf/open/floor/plating/)) hide(1) diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index c1a47742e9..489f1c6bf0 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -735,7 +735,7 @@ var/theme_name /obj/item/storage/box/ingredients/Initialize() - ..() + . = ..() if(theme_name) name = "[name] ([theme_name])" desc = "A box containing supplementary ingredients for the aspiring chef. The box's theme is '[theme_name]'." diff --git a/code/game/objects/items/storage/firstaid.dm b/code/game/objects/items/storage/firstaid.dm index 4b93fde13f..4dc90de6be 100644 --- a/code/game/objects/items/storage/firstaid.dm +++ b/code/game/objects/items/storage/firstaid.dm @@ -56,7 +56,7 @@ item_state = "firstaid-ointment" /obj/item/storage/firstaid/fire/Initialize(mapload) - ..() + . = ..() icon_state = pick("ointment","firefirstaid") /obj/item/storage/firstaid/fire/PopulateContents() diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm index e6fe6da34d..dfcac18d29 100644 --- a/code/game/objects/items/storage/toolbox.dm +++ b/code/game/objects/items/storage/toolbox.dm @@ -19,7 +19,7 @@ var/has_latches = TRUE /obj/item/storage/toolbox/Initialize() - ..() + . = ..() if(has_latches) if(prob(10)) latches = "double_latch" @@ -183,4 +183,4 @@ new/obj/item/stack/cable_coil/pink(src) new/obj/item/stack/cable_coil/orange(src) new/obj/item/stack/cable_coil/cyan(src) - new/obj/item/stack/cable_coil/white(src) + new/obj/item/stack/cable_coil/white(src) \ No newline at end of file diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index 081cf186a3..225d634a7f 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -55,7 +55,7 @@ icon = 'icons/obj/smooth_structures/lattice_clockwork.dmi' /obj/structure/lattice/clockwork/Initialize(mapload) - ..() + . = ..() ratvar_act() /obj/structure/lattice/clockwork/ratvar_act() @@ -63,7 +63,7 @@ new /obj/structure/lattice/clockwork/large(loc) // deletes old one /obj/structure/lattice/clockwork/large/Initialize(mapload) - ..() + . = ..() icon = 'icons/obj/smooth_structures/lattice_clockwork_large.dmi' pixel_x = -9 pixel_y = -9 @@ -101,7 +101,7 @@ icon = 'icons/obj/smooth_structures/catwalk_clockwork.dmi' /obj/structure/lattice/catwalk/clockwork/Initialize(mapload) - ..() + . = ..() new /obj/effect/temp_visual/ratvar/floor/catwalk(loc) new /obj/effect/temp_visual/ratvar/beam/catwalk(loc) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 17f7f3f493..116ced183f 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -34,8 +34,8 @@ smooth = SMOOTH_TRUE canSmoothWith = list(/obj/structure/table, /obj/structure/table/reinforced) -/obj/structure/table/New() - ..() +/obj/structure/table/Initialize() + . = ..() for(var/obj/structure/table/T in src.loc) if(T != src) qdel(T) diff --git a/code/game/objects/structures/traps.dm b/code/game/objects/structures/traps.dm index d82428ad98..8e6ba993cb 100644 --- a/code/game/objects/structures/traps.dm +++ b/code/game/objects/structures/traps.dm @@ -16,7 +16,7 @@ var/datum/effect_system/spark_spread/spark_system /obj/structure/trap/Initialize(mapload) - ..() + . = ..() spark_system = new spark_system.set_up(4,1,src) spark_system.attach(src) diff --git a/code/game/turfs/closed.dm b/code/game/turfs/closed.dm index 2ea3ffe7fc..68e5e31e84 100644 --- a/code/game/turfs/closed.dm +++ b/code/game/turfs/closed.dm @@ -69,7 +69,7 @@ icon = 'icons/obj/smooth_structures/reinforced_window.dmi' /turf/closed/indestructible/fakeglass/Initialize() - ..() + . = ..() icon_state = null //set the icon state to null, so our base state isn't visible underlays += mutable_appearance('icons/obj/structures.dmi', "grille") //add a grille underlay underlays += mutable_appearance('icons/turf/floors.dmi', "plating") //add the plating underlay, below the grille diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index df3d2aba86..02206646d2 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -21,7 +21,7 @@ broken_states = list("damaged1", "damaged2", "damaged3", "damaged4", "damaged5") if (!burnt_states) burnt_states = list() - ..() + . = ..() //This is so damaged or burnt tiles or platings don't get remembered as the default tile var/static/list/icons_to_ignore_at_floor_init = list("damaged1","damaged2","damaged3","damaged4", "damaged5","panelscorched","floorscorched1","floorscorched2","platingdmg1","platingdmg2", "foam_plating", diff --git a/code/game/turfs/simulated/floor/fancy_floor.dm b/code/game/turfs/simulated/floor/fancy_floor.dm index 59e7bed8ca..a24642c735 100644 --- a/code/game/turfs/simulated/floor/fancy_floor.dm +++ b/code/game/turfs/simulated/floor/fancy_floor.dm @@ -71,7 +71,7 @@ var/turfverb = "uproot" /turf/open/floor/grass/Initialize() - ..() + . = ..() update_icon() /turf/open/floor/grass/attackby(obj/item/C, mob/user, params) @@ -109,7 +109,7 @@ slowdown = 0 /turf/open/floor/grass/snow/basalt/Initialize() - ..() + . = ..() if(prob(15)) icon_state = "basalt[rand(0, 12)]" set_basalt_light(src) @@ -126,7 +126,7 @@ slowdown = 0 /turf/open/floor/grass/fakebasalt/Initialize() - ..() + . = ..() if(prob(15)) icon_state = "basalt[rand(0, 12)]" set_basalt_light(src) @@ -144,7 +144,7 @@ flags_1 = NONE /turf/open/floor/carpet/Initialize() - ..() + . = ..() update_icon() /turf/open/floor/carpet/update_icon() @@ -205,7 +205,7 @@ plane = PLANE_SPACE /turf/open/floor/fakespace/Initialize() - ..() + . = ..() icon_state = SPACE_ICON_STATE /turf/open/floor/fakespace/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir) diff --git a/code/game/turfs/simulated/floor/light_floor.dm b/code/game/turfs/simulated/floor/light_floor.dm index 542a0ed81d..247382d03c 100644 --- a/code/game/turfs/simulated/floor/light_floor.dm +++ b/code/game/turfs/simulated/floor/light_floor.dm @@ -13,7 +13,7 @@ /turf/open/floor/light/Initialize() - ..() + . = ..() update_icon() /turf/open/floor/light/break_tile() diff --git a/code/game/turfs/simulated/floor/mineral_floor.dm b/code/game/turfs/simulated/floor/mineral_floor.dm index c28232410d..6f863d4bd0 100644 --- a/code/game/turfs/simulated/floor/mineral_floor.dm +++ b/code/game/turfs/simulated/floor/mineral_floor.dm @@ -18,7 +18,7 @@ /turf/open/floor/mineral/Initialize() broken_states = list("[initial(icon_state)]_dam") - ..() + . = ..() if (!icons) icons = list() @@ -221,7 +221,7 @@ icons = list("alienpod1", "alienpod2", "alienpod3", "alienpod4", "alienpod5", "alienpod6", "alienpod7", "alienpod8", "alienpod9") /turf/open/floor/mineral/abductor/Initialize() - ..() + . = ..() icon_state = "alienpod[rand(1,9)]" /turf/open/floor/mineral/abductor/break_tile() diff --git a/code/game/turfs/simulated/floor/misc_floor.dm b/code/game/turfs/simulated/floor/misc_floor.dm index 1461abfcaf..3656e146a6 100644 --- a/code/game/turfs/simulated/floor/misc_floor.dm +++ b/code/game/turfs/simulated/floor/misc_floor.dm @@ -20,7 +20,7 @@ /turf/open/floor/circuit/Initialize() SSmapping.nuke_tiles += src update_icon() - ..() + . = ..() /turf/open/floor/circuit/Destroy() SSmapping.nuke_tiles -= src @@ -145,7 +145,7 @@ var/obj/effect/clockwork/overlay/floor/realappearence /turf/open/floor/clockwork/Initialize() - ..() + . = ..() new /obj/effect/temp_visual/ratvar/floor(src) new /obj/effect/temp_visual/ratvar/beam(src) realappearence = new /obj/effect/clockwork/overlay/floor(src) diff --git a/code/game/turfs/simulated/floor/plating.dm b/code/game/turfs/simulated/floor/plating.dm index 3617759e99..8ad6657784 100644 --- a/code/game/turfs/simulated/floor/plating.dm +++ b/code/game/turfs/simulated/floor/plating.dm @@ -17,7 +17,7 @@ broken_states = list("platingdmg1", "platingdmg2", "platingdmg3") if (!burnt_states) burnt_states = list("panelscorched") - ..() + . = ..() icon_plating = icon_state /turf/open/floor/plating/update_icon() diff --git a/code/game/turfs/simulated/floor/reinf_floor.dm b/code/game/turfs/simulated/floor/reinf_floor.dm index eaf0e512f7..04c97aa7d5 100644 --- a/code/game/turfs/simulated/floor/reinf_floor.dm +++ b/code/game/turfs/simulated/floor/reinf_floor.dm @@ -108,7 +108,7 @@ var/obj/effect/clockwork/overlay/floor/bloodcult/realappearence /turf/open/floor/engine/cult/Initialize() - ..() + . = ..() new /obj/effect/temp_visual/cult/turf/floor(src) realappearence = new /obj/effect/clockwork/overlay/floor/bloodcult(src) realappearence.linked = src diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm index 9e0d57d782..630ded7daa 100644 --- a/code/game/turfs/simulated/minerals.dm +++ b/code/game/turfs/simulated/minerals.dm @@ -30,7 +30,7 @@ pixel_y = -4 pixel_x = -4 icon = smooth_icon - ..() + . = ..() if (mineralType && mineralAmt && spread && spreadChance) for(var/dir in GLOB.cardinals) if(prob(spreadChance)) @@ -153,7 +153,7 @@ /turf/closed/mineral/gibtonite = 4, /turf/open/floor/plating/asteroid/airless/cave = 2, /turf/closed/mineral/bscrystal = 1) if (display_icon_state) icon_state = display_icon_state - ..() + . = ..() if (prob(mineralChance)) var/path = pickweight(mineralSpawnChanceList) var/turf/T = ChangeTurf(path,FALSE,FALSE,TRUE) @@ -393,7 +393,7 @@ /turf/closed/mineral/gibtonite/Initialize() det_time = rand(8,10) //So you don't know exactly when the hot potato will explode - ..() + . = ..() /turf/closed/mineral/gibtonite/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/device/mining_scanner) || istype(I, /obj/item/device/t_scanner/adv_mining_scanner) && stage == 1) diff --git a/code/game/turfs/space/transit.dm b/code/game/turfs/space/transit.dm index f11735d676..cf611560c3 100644 --- a/code/game/turfs/space/transit.dm +++ b/code/game/turfs/space/transit.dm @@ -73,7 +73,7 @@ /turf/open/space/transit/Initialize() - ..() + . = ..() update_icon() for(var/atom/movable/AM in src) throw_atom(AM) diff --git a/code/modules/events/holiday/xmas.dm b/code/modules/events/holiday/xmas.dm index c5a9c1a142..bc2b3c2666 100644 --- a/code/modules/events/holiday/xmas.dm +++ b/code/modules/events/holiday/xmas.dm @@ -88,7 +88,7 @@ ..() if(FESTIVE_SEASON in SSevents.holidays) new tree(get_turf(src)) - qdel(src) + return INITIALIZE_HINT_QDEL /obj/effect/landmark/xmastree/rdrod name = "festivus pole spawner" diff --git a/code/modules/events/wizard/magicarp.dm b/code/modules/events/wizard/magicarp.dm index 3d0461d3cf..cc632d9c87 100644 --- a/code/modules/events/wizard/magicarp.dm +++ b/code/modules/events/wizard/magicarp.dm @@ -43,7 +43,7 @@ /mob/living/simple_animal/hostile/carp/ranged/Initialize() projectiletype = pick(allowed_projectile_types) - ..() + . = ..() /mob/living/simple_animal/hostile/carp/ranged/chaos name = "chaos magicarp" diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index 11eca212ae..17d626b3a0 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -14,8 +14,8 @@ name = "bookcase" icon = 'icons/obj/library.dmi' icon_state = "bookempty" - anchored = FALSE - density = TRUE + anchored = FALSE + density = TRUE opacity = 0 resistance_flags = FLAMMABLE max_integrity = 200 @@ -25,12 +25,12 @@ /obj/structure/bookcase/Initialize(mapload) - ..() + . = ..() if(!mapload) return state = 2 icon_state = "book-0" - anchored = TRUE + anchored = TRUE for(var/obj/item/I in loc) if(istype(I, /obj/item/book)) I.loc = src @@ -44,7 +44,7 @@ playsound(loc, I.usesound, 100, 1) if(do_after(user, 20*I.toolspeed, target = src)) to_chat(user, "You wrench the frame into place.") - anchored = TRUE + anchored = TRUE state = 1 if(istype(I, /obj/item/crowbar)) playsound(loc, I.usesound, 100, 1) @@ -63,7 +63,7 @@ if(istype(I, /obj/item/wrench)) playsound(loc, I.usesound, 100, 1) to_chat(user, "You unwrench the frame.") - anchored = FALSE + anchored = FALSE state = 0 if(2) @@ -317,4 +317,4 @@ to_chat(user, "Computer has been associated with this unit.") else to_chat(user, "No associated computer found. Only local scans will function properly.") - to_chat(user, "\n") + to_chat(user, "\n") \ No newline at end of file diff --git a/code/modules/library/random_books.dm b/code/modules/library/random_books.dm index 3c44dc28ea..769c9ac66b 100644 --- a/code/modules/library/random_books.dm +++ b/code/modules/library/random_books.dm @@ -1,18 +1,18 @@ /obj/item/book/manual/random/Initialize() - . = ..() + ..() var/static/banned_books = list(/obj/item/book/manual/random, /obj/item/book/manual/nuclear, /obj/item/book/manual/wiki) var/newtype = pick(subtypesof(/obj/item/book/manual) - banned_books) new newtype(loc) - qdel(src) + return INITIALIZE_HINT_QDEL /obj/item/book/random var/amount = 1 var/category = null /obj/item/book/random/Initialize() - . = ..() + ..() create_random_books(amount, src.loc, TRUE, category) - qdel(src) + return INITIALIZE_HINT_QDEL /obj/item/book/random/triple amount = 3 diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 48ce6e5e7b..170cf57d95 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -40,7 +40,7 @@ create_internal_organs() - ..() + . = ..() /mob/living/carbon/alien/create_internal_organs() internal_organs += new /obj/item/organ/brain/alien diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm index 9e79ec1259..b18aaacfeb 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm @@ -8,7 +8,7 @@ /mob/living/carbon/alien/humanoid/drone/Initialize() AddAbility(new/obj/effect/proc_holder/alien/evolve(null)) - ..() + . = ..() /mob/living/carbon/alien/humanoid/drone/create_internal_organs() diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/praetorian.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/praetorian.dm index 71619ff9a4..404d285b25 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/praetorian.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/praetorian.dm @@ -13,7 +13,7 @@ AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/repulse/xeno(src)) AddAbility(new /obj/effect/proc_holder/alien/royal/praetorian/evolve()) - ..() + . = ..() /mob/living/carbon/alien/humanoid/royal/praetorian/create_internal_organs() internal_organs += new /obj/item/organ/alien/plasmavessel/large @@ -48,4 +48,4 @@ return 1 else to_chat(user, "We already have an alive queen.") - return 0 + return 0 \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm index 2988e9b3bf..c0577c0d61 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm @@ -8,7 +8,7 @@ /mob/living/carbon/alien/humanoid/sentinel/Initialize() AddAbility(new /obj/effect/proc_holder/alien/sneak) - ..() + . = ..() /mob/living/carbon/alien/humanoid/sentinel/create_internal_organs() internal_organs += new /obj/item/organ/alien/plasmavessel @@ -18,4 +18,4 @@ /mob/living/carbon/alien/humanoid/sentinel/movement_delay() - . = ..() + . = ..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index ed4a20a91a..0a325521b0 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -18,12 +18,13 @@ var/drooling = 0 //For Neruotoxic spit overlays bodyparts = list(/obj/item/bodypart/chest/alien, /obj/item/bodypart/head/alien, /obj/item/bodypart/l_arm/alien, /obj/item/bodypart/r_arm/alien, /obj/item/bodypart/r_leg/alien, /obj/item/bodypart/l_leg/alien) + devourable = TRUE //This is fine right now, if we're adding organ specific damage this needs to be updated /mob/living/carbon/alien/humanoid/Initialize() AddAbility(new/obj/effect/proc_holder/alien/regurgitate(null)) - ..() + . = ..() /mob/living/carbon/alien/humanoid/movement_delay() . = ..() @@ -42,7 +43,7 @@
"} for(var/i in 1 to held_items.len) var/obj/item/I = get_item_for_held_index(i) - dat += "
[get_held_index_name(i)]:[(I && !(I.flags_1 & ABSTRACT_1)) ? I : "Empty"]" + dat += "
[get_held_index_name(i)]:[(I && !(I.flags_1 & ABSTRACT_1)) ? I : "Empty"]" dat += "
Empty Pouches" if(handcuffed) @@ -120,4 +121,4 @@ /mob/living/carbon/alien/humanoid/check_breath(datum/gas_mixture/breath) if(breath && breath.total_moles() > 0 && !sneaking) playsound(get_turf(src), pick('sound/voice/lowHiss2.ogg', 'sound/voice/lowHiss3.ogg', 'sound/voice/lowHiss4.ogg'), 50, 0, -5) - ..() + ..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index 61c78c87a8..101f1495e2 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -4,7 +4,7 @@ icon_state = "larva0" pass_flags = PASSTABLE | PASSMOB mob_size = MOB_SIZE_SMALL - density = FALSE + density = FALSE maxHealth = 25 health = 25 @@ -22,7 +22,7 @@ AddAbility(new/obj/effect/proc_holder/alien/hide(null)) AddAbility(new/obj/effect/proc_holder/alien/larva_evolve(null)) - ..() + . = ..() /mob/living/carbon/alien/larva/create_internal_organs() internal_organs += new /obj/item/organ/alien/plasmavessel/small/tiny @@ -65,4 +65,4 @@ /mob/living/carbon/alien/larva/stripPanelEquip(obj/item/what, mob/who) to_chat(src, "You don't have the dexterity to do this!") - return + return \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/mushroom.dm b/code/modules/mob/living/simple_animal/hostile/mushroom.dm index ba2a0f3702..8c5be75684 100644 --- a/code/modules/mob/living/simple_animal/hostile/mushroom.dm +++ b/code/modules/mob/living/simple_animal/hostile/mushroom.dm @@ -60,7 +60,7 @@ cap_color = rgb(rand(0, 255), rand(0, 255), rand(0, 255)) UpdateMushroomCap() health = maxHealth - ..() + . = ..() /mob/living/simple_animal/hostile/mushroom/adjustHealth(amount, updating_health = TRUE, forced = FALSE) //Possibility to flee from a fight just to make it more visually interesting if(!retreat_distance && prob(33)) From eb36f34267ed015111505bca098c42f95dbd771d Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 23:35:36 -0500 Subject: [PATCH 74/80] [MIRROR] Specifies one format of variable declaration for the codebase. (#2895) * Specifies one format of variable declaration for the codebase. * dumb mirroring --- .github/CONTRIBUTING.md | 3 +++ code/_onclick/hud/action_button.dm | 2 +- code/datums/ai_laws.dm | 2 +- code/game/gamemodes/antag_spawner.dm | 2 +- .../game/gamemodes/miniantags/slaughter/slaughterevent.dm | 2 +- code/game/objects/items/RCD.dm | 8 ++++---- code/modules/admin/admin.dm | 2 +- .../machinery/components/unary_devices/cryo.dm | 2 +- code/modules/mining/abandoned_crates.dm | 2 +- .../reagents/chemistry/machinery/chem_dispenser.dm | 6 +++--- code/modules/reagents/chemistry/machinery/chem_master.dm | 4 ++-- 11 files changed, 19 insertions(+), 16 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 3e2742de11..46e509cb8f 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -125,6 +125,9 @@ var/path_type = /obj/item/baseball_bat var/path_type = "/obj/item/baseball_bat" ``` +### Use var/name format when declaring variables +While DM allows other ways of declaring variables, this one should be used for consistency. + ### Tabs, not spaces You must use tabs to indent your code, NOT SPACES. diff --git a/code/_onclick/hud/action_button.dm b/code/_onclick/hud/action_button.dm index 85ecd036de..d4d2c2d8a5 100644 --- a/code/_onclick/hud/action_button.dm +++ b/code/_onclick/hud/action_button.dm @@ -78,7 +78,7 @@ /obj/screen/movable/action_button/hide_toggle/proc/InitialiseIcon(datum/hud/owner_hud) - var settings = owner_hud.get_action_buttons_icons() + var/settings = owner_hud.get_action_buttons_icons() icon = settings["bg_icon"] icon_state = settings["bg_state"] hide_icon = settings["toggle_icon"] diff --git a/code/datums/ai_laws.dm b/code/datums/ai_laws.dm index 24daad00f9..2222a959bc 100644 --- a/code/datums/ai_laws.dm +++ b/code/datums/ai_laws.dm @@ -310,7 +310,7 @@ replaceable_groups[LAW_INHERENT] = inherent.len if(supplied.len && (LAW_SUPPLIED in groups)) replaceable_groups[LAW_SUPPLIED] = supplied.len - var picked_group = pickweight(replaceable_groups) + var/picked_group = pickweight(replaceable_groups) switch(picked_group) if(LAW_ZEROTH) . = zeroth diff --git a/code/game/gamemodes/antag_spawner.dm b/code/game/gamemodes/antag_spawner.dm index 9b585ea653..64b405bbd5 100644 --- a/code/game/gamemodes/antag_spawner.dm +++ b/code/game/gamemodes/antag_spawner.dm @@ -261,7 +261,7 @@ /obj/item/antag_spawner/slaughter_demon/spawn_antag(client/C, turf/T, type = "") - var /obj/effect/dummy/slaughter/holder = new /obj/effect/dummy/slaughter(T) + var/obj/effect/dummy/slaughter/holder = new /obj/effect/dummy/slaughter(T) var/mob/living/simple_animal/slaughter/S = new demon_type(holder) S.holder = holder S.key = C.key diff --git a/code/game/gamemodes/miniantags/slaughter/slaughterevent.dm b/code/game/gamemodes/miniantags/slaughter/slaughterevent.dm index bcb2218fe6..888a10669e 100644 --- a/code/game/gamemodes/miniantags/slaughter/slaughterevent.dm +++ b/code/game/gamemodes/miniantags/slaughter/slaughterevent.dm @@ -33,7 +33,7 @@ message_admins("No valid spawn locations found, aborting...") return MAP_ERROR - var /obj/effect/dummy/slaughter/holder = new /obj/effect/dummy/slaughter((pick(spawn_locs))) + var/obj/effect/dummy/slaughter/holder = new /obj/effect/dummy/slaughter((pick(spawn_locs))) var/mob/living/simple_animal/slaughter/S = new /mob/living/simple_animal/slaughter/(holder) S.holder = holder player_mind.transfer_to(S) diff --git a/code/game/objects/items/RCD.dm b/code/game/objects/items/RCD.dm index 26cf258c8e..6e094a5bbb 100644 --- a/code/game/objects/items/RCD.dm +++ b/code/game/objects/items/RCD.dm @@ -144,7 +144,7 @@ obj/item/construction set category = "Object" set src in usr // What does this do? - var window_type_name + var/window_type_name if (window_type == /obj/structure/window/fulltile) window_type = /obj/structure/window/reinforced/fulltile @@ -240,11 +240,11 @@ obj/item/construction set category = "Object" set src in usr - var airlockcat = input(usr, "Select whether the airlock is solid or glass.") in list("Solid", "Glass") + var/airlockcat = input(usr, "Select whether the airlock is solid or glass.") in list("Solid", "Glass") switch(airlockcat) if("Solid") if(advanced_airlock_setting == 1) - var airlockpaint = input(usr, "Select the paintjob of the airlock.") in list("Default", "Engineering", "Atmospherics", "Security", "Command", "Medical", "Research", "Mining", "Maintenance", "External", "High Security") + var/airlockpaint = input(usr, "Select the paintjob of the airlock.") in list("Default", "Engineering", "Atmospherics", "Security", "Command", "Medical", "Research", "Mining", "Maintenance", "External", "High Security") switch(airlockpaint) if("Default") airlock_type = /obj/machinery/door/airlock @@ -275,7 +275,7 @@ obj/item/construction if("Glass") if(advanced_airlock_setting == 1) - var airlockpaint = input(usr, "Select the paintjob of the airlock.") in list("Default", "Engineering", "Atmospherics", "Security", "Command", "Medical", "Research", "Mining") + var/airlockpaint = input(usr, "Select the paintjob of the airlock.") in list("Default", "Engineering", "Atmospherics", "Security", "Command", "Medical", "Research", "Mining") switch(airlockpaint) if("Default") airlock_type = /obj/machinery/door/airlock/glass diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 48af29616e..b56caa4e9a 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -431,7 +431,7 @@ else rebootconfirm = TRUE if(rebootconfirm) - var result = input(usr, "Select reboot method", "World Reboot", options[1]) as null|anything in options + var/result = input(usr, "Select reboot method", "World Reboot", options[1]) as null|anything in options if(result) SSblackbox.add_details("admin_verb","Reboot World") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! switch(result) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index 76455ada49..2e0d1f3805 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -349,7 +349,7 @@ data["cellTemperature"] = round(air1.temperature, 1) data["isBeakerLoaded"] = beaker ? TRUE : FALSE - var beakerContents = list() + var/beakerContents = list() if(beaker && beaker.reagents && beaker.reagents.reagent_list.len) for(var/datum/reagent/R in beaker.reagents.reagent_list) beakerContents += list(list("name" = R.name, "volume" = R.volume)) diff --git a/code/modules/mining/abandoned_crates.dm b/code/modules/mining/abandoned_crates.dm index 10512aa5a2..4db42b6933 100644 --- a/code/modules/mining/abandoned_crates.dm +++ b/code/modules/mining/abandoned_crates.dm @@ -83,7 +83,7 @@ new /obj/item/clothing/suit/hooded/ian_costume(src) if(67 to 68) for(var/i in 1 to rand(4, 7)) - var /newitem = pick(subtypesof(/obj/item/stock_parts) - /obj/item/stock_parts/subspace) + var/newitem = pick(subtypesof(/obj/item/stock_parts) - /obj/item/stock_parts/subspace) new newitem(src) if(69 to 70) for(var/i in 1 to 5) diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index 538ae996ea..ec4a1f58f8 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -112,8 +112,8 @@ data["maxEnergy"] = cell.maxcharge * powerefficiency data["isBeakerLoaded"] = beaker ? 1 : 0 - var beakerContents[0] - var beakerCurrentVolume = 0 + var/beakerContents[0] + var/beakerCurrentVolume = 0 if(beaker && beaker.reagents && beaker.reagents.reagent_list.len) for(var/datum/reagent/R in beaker.reagents.reagent_list) beakerContents.Add(list(list("name" = R.name, "volume" = R.volume))) // list in a list because Byond merges the first list... @@ -129,7 +129,7 @@ data["beakerMaxVolume"] = null data["beakerTransferAmounts"] = null - var chemicals[0] + var/chemicals[0] var/is_hallucinating = FALSE if(user.hallucinating()) is_hallucinating = TRUE diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index 802e4c70ca..c6a01bc45f 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -133,13 +133,13 @@ data["pillBotMaxContent"] = bottle.storage_slots - var beakerContents[0] + var/beakerContents[0] if(beaker) for(var/datum/reagent/R in beaker.reagents.reagent_list) beakerContents.Add(list(list("name" = R.name, "id" = R.id, "volume" = R.volume))) // list in a list because Byond merges the first list... data["beakerContents"] = beakerContents - var bufferContents[0] + var/bufferContents[0] if(reagents.total_volume) for(var/datum/reagent/N in reagents.reagent_list) bufferContents.Add(list(list("name" = N.name, "id" = N.id, "volume" = N.volume))) // ^ From a286d0c313dd02f21799e9b80a133a3bfc95361e Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 22 Sep 2017 23:35:54 -0500 Subject: [PATCH 75/80] [MIRROR] Gives engineering cyborgs an item they can use in place of circuits for basic construction (#2875) * Gives engineering cyborgs an item they can use in place of circuits for basic construction * fixes --- code/game/machinery/doors/firedoor.dm | 9 +++ code/game/machinery/firealarm.dm | 10 +++ .../devices/electroadaptive_pseudocircuit.dm | 65 ++++++++++++++++++ .../atmospherics/machinery/airalarm.dm | 10 +++ .../mob/living/silicon/robot/robot_modules.dm | 3 +- code/modules/power/apc.dm | 29 ++++++++ icons/obj/module.dmi | Bin 15574 -> 15674 bytes tgstation.dme | 1 + 8 files changed, 126 insertions(+), 1 deletion(-) create mode 100644 code/game/objects/items/devices/electroadaptive_pseudocircuit.dm diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index 02f3f03b91..95adf12875 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -434,6 +434,15 @@ constructionStep = CONSTRUCTION_GUTTED update_icon() return + if(istype(C, /obj/item/device/electroadaptive_pseudocircuit)) + var/obj/item/device/electroadaptive_pseudocircuit/P = C + if(!P.adapt_circuit(user, 30)) + return + user.visible_message("[user] fabricates a circuit and places it into [src].", \ + "You adapt a firelock circuit and slot it into the assembly.") + constructionStep = CONSTRUCTION_GUTTED + update_icon() + return return ..() /obj/structure/firelock_frame/heavy diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index 518cd8ab09..ebbeb1bee2 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -220,6 +220,16 @@ update_icon() return + else if(istype(W, /obj/item/device/electroadaptive_pseudocircuit)) + var/obj/item/device/electroadaptive_pseudocircuit/P = W + if(!P.adapt_circuit(user, 15)) + return + user.visible_message("[user] fabricates a circuit and places it into [src].", \ + "You adapt a fire alarm circuit and slot it into the assembly.") + buildstage = 1 + update_icon() + return + else if(istype(W, /obj/item/wrench)) user.visible_message("[user] removes the fire alarm assembly from the wall.", \ "You remove the fire alarm assembly from the wall.") diff --git a/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm b/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm new file mode 100644 index 0000000000..204a1f81d9 --- /dev/null +++ b/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm @@ -0,0 +1,65 @@ +//Used by engineering cyborgs in place of generic circuits. +/obj/item/device/electroadaptive_pseudocircuit + name = "electroadaptive pseudocircuit" + desc = "An all-in-one circuit imprinter, designer, synthesizer, outfitter, creator, and chef. It can be used in place of any generic circuit board during construction." + icon = 'icons/obj/module.dmi' + icon_state = "boris" + w_class = WEIGHT_CLASS_TINY + materials = list(MAT_METAL = 50, MAT_GLASS = 300) + origin_tech = "engineering=4" + var/recharging = FALSE + var/circuits = 5 //How many circuits the pseudocircuit has left + var/static/recycleable_circuits = typecacheof(list(/obj/item/electronics/firelock, /obj/item/electronics/airalarm, /obj/item/electronics/firealarm, \ + /obj/item/electronics/apc))//A typecache of circuits consumable for material + +/obj/item/device/electroadaptive_pseudocircuit/Initialize() + . = ..() + maptext = "[circuits]" + +/obj/item/device/electroadaptive_pseudocircuit/examine(mob/user) + ..() + if(iscyborg(user)) + to_chat(user, "It has material for [circuits] circuit[circuits == 1 ? "" : "s"]. Use the pseudocircuit on existing circuits to gain material.") + to_chat(user, "Serves as a substitute for fire/air alarm, firelock, and APC electronics.") + to_chat(user, "It can also be used on an APC with no power cell to fabricate a low-capacity cell at a high power cost.") + +/obj/item/device/electroadaptive_pseudocircuit/proc/adapt_circuit(mob/living/silicon/robot/R, circuit_cost = 0) + if(QDELETED(R) || !istype(R)) + return + if(!R.cell) + to_chat(R, "You need a power cell installed for that.") + return + if(!R.cell.use(circuit_cost)) + to_chat(R, "You don't have the power for that (you need [DisplayPower(circuit_cost)].)") + return + if(recharging) + to_chat(R, "[src] needs some time to recharge first.") + return + if(!circuits) + to_chat(R, "You need more material. Use [src] on existing simple circuits to break them down.") + return + playsound(R, 'sound/items/rped.ogg', 50, TRUE) + recharging = TRUE + circuits-- + maptext = "[circuits]" + icon_state = "[initial(icon_state)]_recharging" + var/recharge_time = min(600, circuit_cost * 5) //40W of cost for one fabrication = 20 seconds of recharge time; this is to prevent spamming + addtimer(CALLBACK(src, .proc/recharge), recharge_time) + return TRUE //The actual circuit magic itself is done on a per-object basis + +/obj/item/device/electroadaptive_pseudocircuit/afterattack(atom/target, mob/living/user, proximity) + if(!proximity) + return + if(!is_type_in_typecache(target, recycleable_circuits)) + return + circuits++ + maptext = "[circuits]" + user.visible_message("User breaks down [target] with [src].", \ + "You recycle [target] into [src]. It now has material for [circuits] circuits.") + playsound(user, 'sound/items/deconstruct.ogg', 50, TRUE) + qdel(target) + +/obj/item/device/electroadaptive_pseudocircuit/proc/recharge() + playsound(src, 'sound/machines/chime.ogg', 25, TRUE) + recharging = FALSE + icon_state = initial(icon_state) diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index 9807fed513..6de564da6d 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -708,6 +708,16 @@ qdel(W) return + if(istype(W, /obj/item/device/electroadaptive_pseudocircuit)) + var/obj/item/device/electroadaptive_pseudocircuit/P = W + if(!P.adapt_circuit(user, 25)) + return + user.visible_message("[user] fabricates a circuit and places it into [src].", \ + "You adapt an air alarm circuit and slot it into the assembly.") + buildstage = 1 + update_icon() + return + if(istype(W, /obj/item/wrench)) to_chat(user, "You detach \the [src] from the wall.") playsound(src.loc, W.usesound, 50, 1) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index af6f3daf92..0024772274 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -307,6 +307,7 @@ /obj/item/device/analyzer, /obj/item/device/assembly/signaler/cyborg, /obj/item/areaeditor/blueprints/cyborg, + /obj/item/device/electroadaptive_pseudocircuit, /obj/item/stack/sheet/metal/cyborg, /obj/item/stack/sheet/glass/cyborg, /obj/item/stack/sheet/rglass/cyborg, @@ -679,4 +680,4 @@ /datum/robot_energy_storage/beacon max_energy = 30 recharge_rate = 1 - name = "Marker Beacon Storage" + name = "Marker Beacon Storage" \ No newline at end of file diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 1545bfd452..4d9fc45b1a 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -546,6 +546,35 @@ to_chat(user, "You place the power control board inside the frame.") qdel(W) + else if(istype(W, /obj/item/device/electroadaptive_pseudocircuit) && opened) + var/obj/item/device/electroadaptive_pseudocircuit/P = W + if(!has_electronics) + if(stat & BROKEN) + to_chat(user, "[src]'s frame is too damaged to support a circuit.") + return + if(!P.adapt_circuit(user, 50)) + return + user.visible_message("[user] fabricates a circuit and places it into [src].", \ + "You adapt a power control board and click it into place in [src]'s guts.") + has_electronics = TRUE + locked = TRUE + else if(!cell) + if(stat & MAINT) + to_chat(user, "There's no connector for a power cell.") + return + if(!P.adapt_circuit(user, 500)) + return + var/obj/item/stock_parts/cell/crap/empty/C = new(src) + C.forceMove(src) + cell = C + chargecount = 0 + user.visible_message("[user] fabricates a weak power cell and places it into [src].", \ + "Your [P.name] whirrs with strain as you create a weak power cell and place it into [src]!") + update_icon() + else + to_chat(user, "[src] has both electronics and a cell.") + return + else if (istype(W, /obj/item/weldingtool) && opened && has_electronics==0 && !terminal) var/obj/item/weldingtool/WT = W if (WT.get_fuel() < 3) diff --git a/icons/obj/module.dmi b/icons/obj/module.dmi index d2d93afac0961ac412d1ae2ce06b74b7e222c852..c24f7c4c16c4fefddbb43a5faaa71c469fb45556 100644 GIT binary patch literal 15674 zcmcJ$1ymeu*Dcscu;7H?kc0$?-~`uT!685(xFom+*T%h(kOcPtfuO;)8z;ECyK6Vn z(DYQ^?_2+TYwo?X=FZH|TD^*{?yh?3sq^f!&)%mZ)m7z*2xtjFAP|wlTbXwt5QZf1 zdW44q?CJVgd;$Vta(ip(y2^ZVG5>7s} zw^QQY7%_8vG(v7pk?<_|OX4RrXz>2)*}X_c-^xHH3BL!=Q!e-V$Lmnhb7IHQ6rX>r zXcyHoeeYUR=6_wRmF8Ay6~D(q#KbN2M!UEvxx^v3<>kZgg2nGjqq+ifx>ivFIzlJ% zWYz(nz8DHJN5B1o|K^iVVvzE9y~$m|NTHeOXq)V}y;D;+RI@_0WGeyex=WA3cWs6K z^U_Q{fx&+3FPc|FojSbN2xWiX#AS=?hyo)1R2==cAJ1f2aBvrFT&>7))mSWo?eIij zuJA|41-)7bti&>7AP)af56)U@eZ67~5uoQj`#PMr|11W_hupdHxIoX-&-{u-+5N4Y zx{XBux`RwQZSpc1od&NxV8dmHhG z2rihPWSt?-TAcAj{h-Q*6%WaEqk2Axcj)j))Wv-CH>3G;Tf+0@`uV4)=ZUbl;!z5Q zd0AG7K_+R~B=rNjMWMGFw%2b4yHpv*cfS?G__(=LCZPn%8oa4E^_i}o3@yI8?9o05 z_;1aoZNJm|ieK6zYK?-_K%hq;1sN$V&-B95Dr_+_9&i1+dKd1INu_U=&gF)#1sjqlO0-_Qc1 zwl*2IloNAdeiLTUBfQ-=gzBW&(@${N@Pcf~upVHy)kI(r1g+?Gg6>HbS~iAtCHn{tNmw`h*WUY>TDBHgkbAsQ~rqo-Fu00BVLl7A>L>5VYyin~^9rj*(Zn2qh|>;Mg*eVFWd}@XS=?{PE7%%#|=h zg!4(NseH}YN)nx*E)FEGa(+5Bv_8%hrL~i`4X&m=Q~HUs^yd}tMF!o6>IAv1dEL_A z@v2=ulv+2BK-ie1$vB_3zqd80k7}4E&cV)yeO^1xpskxrM*01?1|0V$ij=d&GpdXv zhUAkzI+Ib2E-Vb(3x~p#D2Njh655pL*ZSftP8UBI2TMcO^UI_+wzqlR_9jAV^cyQ^ zmuri~Kz6_8q)&@6vm?LJHTM2V!GZ-o6dW0Oh#Xc}a8cvcdTS%XG zo%iTNtM0H5EDFf|p3p_4h_nbQXFAg&y+MNM$P?G01@V5W+<17d#`Xi$-|uXVQ1rO3 zPf>O0GdUNBus;*_83d{I{{83A3C;t5E}<( zllE%o%PS7(?PsG^Nd_=;!MU|ZQKbI?XvNSdP?>UEb1`ua(D`QDv}%KC-#dT)P!UZ%Iw@&V@d<|YkGeHHEPvr%I%d_ViZu)04Y zAE{>W=jP`dZqNF?Rzs--kDJfyf&Ya(Pac7KVj0$z%*EH#(!1!5S(r?yw@T}lY?QEd zYYk*IcyvE}ry~oj=HsihRJ*Ue_Y?qv;y#{wu(X3Q_Ls!w+MPlkdA+OgK9?D^yB! zDNu$B_D?H3pqn#Deuk@?oAb$vRAXafvX~D)6FL`zAjmgh)Ub8s zgv!&lz%=%c*;aP;vx!3OGBA4*2vsgdB{&_j688k{qvO(8#es+e36Kr+=Ao32mk7a;xG}0}gVcFiV zgP4W|98&$-+Opti+<78SOcW3>O35!52=O)6(V_Ya#;qdzwzoSY$DY>h+-K+KURx=a z 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 literal 15574 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 R!0(ko^3qCD6>p7#{u` Date: Fri, 22 Sep 2017 23:35:56 -0500 Subject: [PATCH 76/80] Automatic changelog generation for PR #2875 [ci skip] --- html/changelogs/AutoChangeLog-pr-2875.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2875.yml diff --git a/html/changelogs/AutoChangeLog-pr-2875.yml b/html/changelogs/AutoChangeLog-pr-2875.yml new file mode 100644 index 0000000000..b76b1f78f7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2875.yml @@ -0,0 +1,4 @@ +author: "Xhuis" +delete-after: True +changes: + - rscadd: "Engineering cyborgs now have an item called the \"electroadaptive pseudocircuit\" (technobabble not included) that they can use in place of a circuit for the purposes of building alarms, APCs, and firelocks." From 0587962b53d789acb60ae656833ffe95f62f2e15 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 23 Sep 2017 00:13:04 -0500 Subject: [PATCH 77/80] [MIRROR] Makes gorillas drop brains when gibbed / butchered (#2878) * Makes gorillas drop brains when gibbed / butchered * wew * how the fuck did this even go missing * this fucking game man. --- .../mob/living/simple_animal/hostile/gorilla/gorilla.dm | 2 +- code/modules/mob/living/simple_animal/hostile/hostile.dm | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm b/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm index 2cf1dba0c9..e0afdefd6b 100644 --- a/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm +++ b/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm @@ -67,7 +67,7 @@ var/mob/living/L = target if(prob(80)) var/atom/throw_target = get_edge_target_turf(L, dir) - L.throw_at(throw_target, rand(1,2), 7, src) + L.throw_at(throw_target, rand(1,2), 7, src) else L.Knockdown(20) visible_message("[src] knocks [L] down!") diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index c8fbfd53fa..86fe54aaeb 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -369,23 +369,26 @@ P.original = targeted_atom P.fire() return P - + +/mob/living/simple_animal/hostile/proc/CanSmashTurfs(turf/T) + return iswallturf(T) || ismineralturf(T) /mob/living/simple_animal/hostile/proc/DestroySurroundings() if(environment_smash) EscapeConfinement() for(var/dir in GLOB.cardinals) var/turf/T = get_step(targets_from, dir) - if(iswallturf(T) || ismineralturf(T)) + if(CanSmashTurfs(T)) if(T.Adjacent(targets_from)) T.attack_animal(src) for(var/a in T) var/atom/A = a if(!A.Adjacent(targets_from)) continue - if(is_type_in_typecache(A, environment_target_typecache)) + if(is_type_in_typecache(A, environment_target_typecache) && !A.IsObscured()) A.attack_animal(src) + /mob/living/simple_animal/hostile/proc/EscapeConfinement() if(buckled) buckled.attack_animal(src) From 91fd8f7132d4b4d71b14a50ebf2aa668a8ebe5ea Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 23 Sep 2017 00:13:06 -0500 Subject: [PATCH 78/80] Automatic changelog generation for PR #2878 [ci skip] --- html/changelogs/AutoChangeLog-pr-2878.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2878.yml diff --git a/html/changelogs/AutoChangeLog-pr-2878.yml b/html/changelogs/AutoChangeLog-pr-2878.yml new file mode 100644 index 0000000000..f2d10a7b30 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2878.yml @@ -0,0 +1,4 @@ +author: "ShizCalev" +delete-after: True +changes: + - tweak: "Gorillas will now drop their brain when gibbed or butchered." From 518e04a6536c25f8aa181aebf576a24aacfdcae8 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 23 Sep 2017 00:30:09 -0500 Subject: [PATCH 79/80] [MIRROR] Fixes game panel href token (#2898) * Fixes game panel href token * wew --- code/modules/admin/create_mob.dm | 2 +- code/modules/admin/create_object.dm | 9 +++++++-- code/modules/admin/create_turf.dm | 2 +- html/create_object.html | 3 ++- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/code/modules/admin/create_mob.dm b/code/modules/admin/create_mob.dm index e76385db59..93c354239b 100644 --- a/code/modules/admin/create_mob.dm +++ b/code/modules/admin/create_mob.dm @@ -6,7 +6,7 @@ create_mob_html = file2text('html/create_object.html') create_mob_html = replacetext(create_mob_html, "null /* object types */", "\"[mobjs]\"") - user << browse(replacetext(create_mob_html, "/* ref src */", "\ref[src];[HrefToken()]"), "window=create_mob;size=425x475") + user << browse(create_panel_helper(create_mob_html), "window=create_mob;size=425x475") /proc/randomize_human(mob/living/carbon/human/H) H.gender = pick(MALE, FEMALE) diff --git a/code/modules/admin/create_object.dm b/code/modules/admin/create_object.dm index cb947355b1..73bb998231 100644 --- a/code/modules/admin/create_object.dm +++ b/code/modules/admin/create_object.dm @@ -1,3 +1,8 @@ +/datum/admins/proc/create_panel_helper(template) + var/final_html = replacetext(template, "/* ref src */", "\ref[src];[HrefToken()]") + final_html = replacetext(final_html,"/* hreftokenfield */","[HrefTokenFormField()]") + return final_html + /datum/admins/proc/create_object(mob/user) var/static/create_object_html = null if (!create_object_html) @@ -6,7 +11,7 @@ create_object_html = file2text('html/create_object.html') create_object_html = replacetext(create_object_html, "null /* object types */", "\"[objectjs]\"") - user << browse(replacetext(create_object_html, "/* ref src */", "\ref[src];[HrefToken()]"), "window=create_object;size=425x475") + user << browse(create_panel_helper(create_object_html), "window=create_object;size=425x475") /datum/admins/proc/quick_create_object(mob/user) var/static/list/create_object_forms = list( @@ -23,4 +28,4 @@ html_form = replacetext(html_form, "null /* object types */", "\"[objectjs]\"") create_object_forms[path] = html_form - user << browse(replacetext(html_form, "/* ref src */", "\ref[src];[HrefToken()]"), "window=qco[path];size=425x475") + user << browse(create_panel_helper(html_form), "window=qco[path];size=425x475") diff --git a/code/modules/admin/create_turf.dm b/code/modules/admin/create_turf.dm index f38b86a7b9..a25c02554e 100644 --- a/code/modules/admin/create_turf.dm +++ b/code/modules/admin/create_turf.dm @@ -6,4 +6,4 @@ create_turf_html = file2text('html/create_object.html') create_turf_html = replacetext(create_turf_html, "null /* object types */", "\"[turfjs]\"") - user << browse(replacetext(create_turf_html, "/* ref src */", "\ref[src];[HrefToken()]"), "window=create_turf;size=425x475") + user << browse(create_panel_helper(create_turf_html), "window=create_turf;size=425x475") diff --git a/html/create_object.html b/html/create_object.html index 44bf7667aa..619da3ec47 100644 --- a/html/create_object.html +++ b/html/create_object.html @@ -26,7 +26,8 @@ - + /* hreftokenfield */ + Type
Offset: From 51d8182b134b0c11d46597bcdf01f4085d08f1a7 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 23 Sep 2017 00:34:09 -0500 Subject: [PATCH 80/80] [MIRROR] Fixes species being referenced instead of copied when cloning (#2859) * Fixes species being referenced instead of copied when cloning * fixes * wew --- code/datums/dna.dm | 6 ++++-- code/modules/mob/living/carbon/human/species.dm | 6 +++++- .../living/carbon/human/species_types/abductors.dm | 4 ++++ .../mob/living/carbon/human/species_types/angel.dm | 5 ++--- .../living/carbon/human/species_types/jellypeople.dm | 12 +++++++++--- 5 files changed, 24 insertions(+), 9 deletions(-) diff --git a/code/datums/dna.dm b/code/datums/dna.dm index 4bacf2d9e8..27a9338191 100644 --- a/code/datums/dna.dm +++ b/code/datums/dna.dm @@ -235,7 +235,9 @@ flavor_text = dna.features["flavor_text"] //Update the flavor_text to use new dna text if(mrace) - set_species(mrace, icon_update=0) + var/datum/species/newrace = new mrace.type + newrace.copy_properties_from(mrace) + set_species(newrace, icon_update=0) if(newreal_name) real_name = newreal_name @@ -396,4 +398,4 @@ value = values return value -/////////////////////////// DNA HELPER-PROCS +/////////////////////////// DNA HELPER-PROCS \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 821ed9d7a6..19fa9ce82e 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -111,6 +111,10 @@ randname += " [pick(GLOB.last_names)]" return randname + +//Called when cloning, copies some vars that should be kept +/datum/species/proc/copy_properties_from(datum/species/old_species) + return //Please override this locally if you want to define when what species qualifies for what rank if human authority is enforced. @@ -1721,4 +1725,4 @@ #undef COLD_DAMAGE_LEVEL_1 #undef COLD_DAMAGE_LEVEL_2 -#undef COLD_DAMAGE_LEVEL_3 +#undef COLD_DAMAGE_LEVEL_3 \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species_types/abductors.dm b/code/modules/mob/living/carbon/human/species_types/abductors.dm index 18444bb366..80d64b29d4 100644 --- a/code/modules/mob/living/carbon/human/species_types/abductors.dm +++ b/code/modules/mob/living/carbon/human/species_types/abductors.dm @@ -7,3 +7,7 @@ mutanttongue = /obj/item/organ/tongue/abductor var/scientist = 0 // vars to not pollute spieces list with castes var/team = 1 + +/datum/species/abductor/copy_properties_from(datum/species/abductor/old_species) + scientist = old_species.scientist + team = old_species.team diff --git a/code/modules/mob/living/carbon/human/species_types/angel.dm b/code/modules/mob/living/carbon/human/species_types/angel.dm index 7c58ecbf86..dbab6b94eb 100644 --- a/code/modules/mob/living/carbon/human/species_types/angel.dm +++ b/code/modules/mob/living/carbon/human/species_types/angel.dm @@ -18,11 +18,10 @@ if(H.dna && H.dna.species &&((H.dna.features["wings"] != "Angel") && ("wings" in H.dna.species.mutant_bodyparts))) H.dna.features["wings"] = "Angel" H.update_body() - if(ishuman(H)&& !fly) + if(ishuman(H) && !fly) fly = new fly.Grant(H) - /datum/species/angel/on_species_loss(mob/living/carbon/human/H) if(fly) fly.Remove(H) @@ -66,7 +65,7 @@ /datum/action/innate/flight name = "Toggle Flight" check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_STUN - icon_icon = 'icons/mob/actions/actions_items.dmi' + icon_icon = 'icons/mob/actions/actions_items.dmi' button_icon_state = "flight" /datum/action/innate/flight/Activate() diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 3319895fe0..60f2e821f2 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -9,7 +9,6 @@ exotic_blood = "slimejelly" damage_overlay_type = "" var/datum/action/innate/regenerate_limbs/regenerate_limbs - toxic_food = NONE liked_food = MEAT /datum/species/jelly/on_species_loss(mob/living/carbon/C) @@ -60,6 +59,7 @@ name = "Regenerate Limbs" check_flags = AB_CHECK_CONSCIOUS button_icon_state = "slimeheal" + icon_icon = 'icons/mob/actions/actions_slime.dmi' background_icon_state = "bg_alien" /datum/action/innate/regenerate_limbs/IsAvailable() @@ -128,7 +128,7 @@ /datum/species/jelly/slime/on_species_gain(mob/living/carbon/C, datum/species/old_species) ..() if(ishuman(C)) -/* slime_split = new + /* slime_split = new slime_split.Grant(C) swap_body = new swap_body.Grant(C) */ @@ -140,6 +140,10 @@ C.faction |= "slime" +//If you're cloned you get your body pool back +/datum/species/jelly/slime/copy_properties_from(datum/species/jelly/slime/old_species) + bodies = old_species.bodies + /datum/species/jelly/slime/spec_life(mob/living/carbon/human/H) if(H.blood_volume >= BLOOD_VOLUME_SLIME_SPLIT) if(prob(5)) @@ -154,6 +158,7 @@ name = "Split Body" check_flags = AB_CHECK_CONSCIOUS button_icon_state = "slimesplit" + icon_icon = 'icons/mob/actions/actions_slime.dmi' background_icon_state = "bg_alien" /datum/action/innate/split_body/IsAvailable() @@ -220,6 +225,7 @@ name = "Swap Body" check_flags = AB_CHECK_CONSCIOUS button_icon_state = "slimeswap" + icon_icon = 'icons/mob/actions/actions_slime.dmi' background_icon_state = "bg_alien" /datum/action/innate/swap_body/Activate() @@ -326,4 +332,4 @@ M.transfer_to(dupe) dupe.visible_message("[dupe] blinks and looks \ around.", - "...and move this one instead.") + "...and move this one instead.") \ No newline at end of file