From 21398f08e87ac05347dd8df3f58527970abcebcf Mon Sep 17 00:00:00 2001 From: XeonMations Date: Fri, 6 Sep 2024 02:57:28 +0300 Subject: [PATCH 01/42] and so it begins --- code/__DEFINES/cleaning.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/__DEFINES/cleaning.dm b/code/__DEFINES/cleaning.dm index 984f1cec165ff..67c3663c3e900 100644 --- a/code/__DEFINES/cleaning.dm +++ b/code/__DEFINES/cleaning.dm @@ -8,7 +8,6 @@ #define CLEAN_TYPE_FIBERS (1 << 3) #define CLEAN_TYPE_RADIATION (1 << 4) #define CLEAN_TYPE_DISEASE (1 << 5) -#define CLEAN_TYPE_WEAK (1 << 6) // Special type, add this flag to make some cleaning processes non-instant. Currently only used for showers when removing radiation. #define CLEAN_TYPE_PAINT (1 << 7) /// Cleans decals such as dirt and oil off the floor #define CLEAN_TYPE_LIGHT_DECAL (1 << 9) @@ -20,4 +19,4 @@ #define CLEAN_WASH (CLEAN_TYPE_BLOOD | CLEAN_TYPE_RUNES | CLEAN_TYPE_DISEASE | CLEAN_TYPE_LIGHT_DECAL) #define CLEAN_SCRUB (CLEAN_WASH | CLEAN_TYPE_FINGERPRINTS | CLEAN_TYPE_FIBERS | CLEAN_TYPE_PAINT | CLEAN_TYPE_HARD_DECAL) #define CLEAN_RAD CLEAN_TYPE_RADIATION -#define CLEAN_ALL (ALL & ~CLEAN_TYPE_WEAK) +#define CLEAN_ALL ALL From 4e4c6b0984b2ef7c31c62d82c2f4ddeac769cf0c Mon Sep 17 00:00:00 2001 From: XeonMations Date: Fri, 6 Sep 2024 04:11:27 +0300 Subject: [PATCH 02/42] aaaaa --- beestation.dme | 8 +- code/__DEFINES/combat.dm | 3 - .../dcs/signals/signals_atom/signals_atom.dm | 34 ++- .../dcs/signals/signals_mob/signals_living.dm | 3 + code/__DEFINES/flags.dm | 4 - code/__DEFINES/maths.dm | 5 - code/__DEFINES/radiation.dm | 65 ++---- code/__DEFINES/supermatter.dm | 4 +- code/__DEFINES/traits.dm | 18 ++ code/__DEFINES/vv.dm | 1 - code/__HELPERS/radiation.dm | 100 +++++---- code/_globalvars/bitfields.dm | 5 - code/controllers/subsystem/radiation.dm | 134 ++++++++++-- code/datums/armor.dm | 25 +-- code/datums/components/connect_loc_behalf.dm | 2 +- code/datums/components/geiger_sound.dm | 92 ++++++++ code/datums/components/genetic_damage.dm | 72 +++++++ code/datums/components/irradiated.dm | 201 ++++++++++++++++++ code/datums/components/rad_insulation.dm | 31 --- code/datums/components/radiation_countdown.dm | 55 +++++ code/datums/components/radioactive.dm | 117 ---------- .../elements/radiation_protected_clothing.dm | 25 +++ code/datums/elements/radioactive.dm | 38 ++++ code/datums/looping_sounds/item_sounds.dm | 38 ---- code/datums/martial/krav_maga.dm | 2 +- code/datums/materials/_material.dm | 4 +- code/datums/materials/alloys.dm | 12 +- code/datums/materials/basemats.dm | 12 +- .../game/gamemodes/clown_ops/clown_weapons.dm | 6 +- code/game/gamemodes/gangs/dominator.dm | 2 +- code/game/gamemodes/gangs/gang_items.dm | 4 +- code/game/machinery/_machinery.dm | 2 +- code/game/machinery/ai_slipper.dm | 2 +- code/game/machinery/airlock_cycle_control.dm | 2 +- code/game/machinery/buttons.dm | 2 +- code/game/machinery/camera/camera.dm | 2 +- code/game/machinery/computer/_computer.dm | 2 +- code/game/machinery/doors/airlock_types.dm | 4 +- code/game/machinery/doors/door.dm | 2 +- code/game/machinery/doors/firedoor.dm | 2 +- code/game/machinery/doors/poddoor.dm | 2 +- code/game/machinery/doors/windowdoor.dm | 4 +- code/game/machinery/firealarm.dm | 2 +- code/game/machinery/hologram.dm | 2 +- code/game/machinery/igniter.dm | 2 +- code/game/machinery/navbeacon.dm | 2 +- .../machinery/porta_turret/portable_turret.dm | 4 +- code/game/machinery/requests_console.dm | 2 +- code/game/machinery/shuttle/shuttle_heater.dm | 2 +- code/game/machinery/spaceheater.dm | 2 +- .../telecomms/machines/message_server.dm | 2 +- code/game/objects/items/RCD.dm | 2 +- code/game/objects/items/RPD.dm | 2 +- code/game/objects/items/RSF.dm | 2 +- code/game/objects/items/cards_ids.dm | 4 +- code/game/objects/items/crab17.dm | 2 +- code/game/objects/items/debug_items.dm | 6 +- code/game/objects/items/defib.dm | 2 +- .../objects/items/deployable/barricade.dm | 2 +- .../items/devices/forcefieldprojector.dm | 2 +- code/game/objects/items/dualsaber.dm | 2 +- code/game/objects/items/fireaxe.dm | 2 +- code/game/objects/items/handcuffs.dm | 2 +- code/game/objects/items/kitchen.dm | 2 +- code/game/objects/items/knives.dm | 4 +- code/game/objects/items/melee/energy.dm | 2 +- code/game/objects/items/melee/misc.dm | 2 +- code/game/objects/items/pitchfork.dm | 2 +- code/game/objects/items/pneumaticCannon.dm | 2 +- code/game/objects/items/powerfist.dm | 2 +- code/game/objects/items/religion.dm | 2 +- code/game/objects/items/singularityhammer.dm | 2 +- code/game/objects/items/spear.dm | 2 +- .../items/stacks/sheets/mineral/glass.dm | 14 +- .../items/stacks/sheets/mineral/metals.dm | 2 +- .../items/stacks/sheets/organic/wood.dm | 4 +- .../objects/items/stacks/tiles/tile_iron.dm | 2 +- code/game/objects/items/storage/backpack.dm | 8 +- code/game/objects/items/storage/secure.dm | 2 +- code/game/objects/items/stunbaton.dm | 2 +- code/game/objects/items/tanks/tanks.dm | 2 +- code/game/objects/items/tanks/watertank.dm | 2 +- code/game/objects/items/teleportation.dm | 2 +- code/game/objects/items/tools/crowbar.dm | 2 +- code/game/objects/items/tools/powertools.dm | 2 +- code/game/objects/items/tools/screwdriver.dm | 2 +- code/game/objects/items/tools/weldingtool.dm | 2 +- code/game/objects/items/tools/wirecutters.dm | 2 +- code/game/objects/items/tools/wrench.dm | 2 +- code/game/objects/items/vending_items.dm | 2 +- code/game/objects/items/weaponry.dm | 8 +- code/game/objects/structures.dm | 2 +- code/game/objects/structures/barsigns.dm | 2 +- .../structures/crates_lockers/closets.dm | 2 +- .../closets/secure/secure_closets.dm | 2 +- .../crates_lockers/crates/secure.dm | 2 +- code/game/objects/structures/displaycase.dm | 2 +- code/game/objects/structures/fireaxe.dm | 2 +- code/game/objects/structures/grille.dm | 2 +- code/game/objects/structures/holosign.dm | 2 +- code/game/objects/structures/lattice.dm | 2 +- code/game/objects/structures/mineral_doors.dm | 2 +- code/game/objects/structures/plasticflaps.dm | 2 +- code/game/objects/structures/signs/_signs.dm | 2 +- code/game/objects/structures/tables_racks.dm | 6 +- code/game/objects/structures/window.dm | 16 +- code/game/shuttle_engines.dm | 2 +- code/game/turfs/closed/wall/reinf_walls.dm | 2 +- .../abductor/equipment/abduction_gear.dm | 8 +- .../antagonists/blob/structures/_blob.dm | 2 +- .../antagonists/blob/structures/core.dm | 2 +- .../antagonists/blob/structures/node.dm | 2 +- .../antagonists/blob/structures/shield.dm | 2 +- .../changeling/powers/mutations.dm | 8 +- .../antagonists/clock_cult/clockwork_turfs.dm | 2 +- .../clock_cult/items/brass_clothing.dm | 10 +- .../clock_cult/scriptures/ocular_warden.dm | 2 +- code/modules/antagonists/cult/cult_items.dm | 16 +- .../heretic/items/heretic_armor.dm | 6 +- .../nukeop/equipment/nuclearbomb.dm | 2 +- .../antagonists/space_dragon/carp_rift.dm | 2 +- .../atmospherics/machinery/airalarm.dm | 2 +- .../atmospherics/machinery/atmosmachinery.dm | 2 +- .../components/unary_devices/cryo.dm | 2 +- .../components/unary_devices/thermomachine.dm | 2 +- .../atmospherics/machinery/other/meter.dm | 2 +- .../machinery/portable/canister.dm | 2 +- .../portable/portable_atmospherics.dm | 2 +- .../awaymissions/mission_code/snowdin.dm | 2 +- code/modules/cargo/supplypod.dm | 2 +- code/modules/clothing/chameleon.dm | 22 +- code/modules/clothing/glasses/_glasses.dm | 4 +- code/modules/clothing/gloves/color.dm | 2 +- code/modules/clothing/gloves/miscellaneous.dm | 6 +- code/modules/clothing/head/beanie.dm | 2 +- code/modules/clothing/head/cakehat.dm | 2 +- code/modules/clothing/head/costume.dm | 12 +- code/modules/clothing/head/crown.dm | 2 +- code/modules/clothing/head/hardhat.dm | 6 +- code/modules/clothing/head/hat.dm | 6 +- code/modules/clothing/head/helmet.dm | 34 +-- code/modules/clothing/head/jobs.dm | 36 ++-- code/modules/clothing/head/misc_special.dm | 2 +- code/modules/clothing/head/soft_caps.dm | 2 +- code/modules/clothing/head/tinfoilhat.dm | 4 +- code/modules/clothing/masks/gasmask.dm | 4 +- code/modules/clothing/masks/hailer.dm | 2 +- code/modules/clothing/masks/miscellaneous.dm | 2 +- code/modules/clothing/shoes/magboots.dm | 2 +- code/modules/clothing/shoes/miscellaneous.dm | 6 +- .../clothing/spacesuits/_spacesuits.dm | 4 +- .../modules/clothing/spacesuits/chronosuit.dm | 4 +- code/modules/clothing/spacesuits/hardsuit.dm | 84 ++++---- .../clothing/spacesuits/miscellaneous.dm | 36 ++-- code/modules/clothing/spacesuits/plasmamen.dm | 14 +- code/modules/clothing/spacesuits/swat.dm | 2 +- code/modules/clothing/spacesuits/syndi.dm | 4 +- code/modules/clothing/suits/_suits.dm | 2 +- code/modules/clothing/suits/armor.dm | 34 +-- code/modules/clothing/suits/bio.dm | 8 +- code/modules/clothing/suits/chaplainsuits.dm | 12 +- code/modules/clothing/suits/cloaks.dm | 12 +- code/modules/clothing/suits/costume.dm | 6 +- code/modules/clothing/suits/donator.dm | 2 +- code/modules/clothing/suits/hoodies.dm | 2 +- code/modules/clothing/suits/jacket.dm | 4 +- code/modules/clothing/suits/jobs.dm | 6 +- code/modules/clothing/suits/labcoat.dm | 4 +- .../modules/clothing/suits/reactive_armour.dm | 2 +- code/modules/clothing/suits/utility.dm | 10 +- code/modules/clothing/suits/wetfloor.dm | 2 +- code/modules/clothing/suits/wintercoats.dm | 38 ++-- code/modules/clothing/suits/wiz_robe.dm | 16 +- code/modules/clothing/under/_under.dm | 2 +- code/modules/clothing/under/accessories.dm | 6 +- code/modules/clothing/under/costume.dm | 2 +- .../under/jobs/Plasmaman/civilian_service.dm | 2 +- .../under/jobs/Plasmaman/engineering.dm | 2 +- .../clothing/under/jobs/Plasmaman/security.dm | 4 +- .../clothing/under/jobs/civilian/civilian.dm | 2 +- code/modules/clothing/under/jobs/command.dm | 2 +- .../clothing/under/jobs/engineering.dm | 8 +- code/modules/clothing/under/jobs/medical.dm | 16 +- code/modules/clothing/under/jobs/rnd.dm | 8 +- code/modules/clothing/under/jobs/security.dm | 10 +- code/modules/clothing/under/miscellaneous.dm | 2 +- code/modules/clothing/under/syndicate.dm | 8 +- code/modules/clothing/under/trek.dm | 2 +- code/modules/events/holiday/xmas.dm | 6 +- code/modules/library/lib_items.dm | 2 +- .../modules/mining/equipment/explorer_gear.dm | 10 +- .../mining/equipment/marker_beacons.dm | 2 +- .../mining/lavaland/necropolis_chests.dm | 2 +- .../carbon/human/species_types/snail.dm | 2 +- .../hostile/mining_mobs/elites/elite.dm | 2 +- .../computers/item/computer.dm | 2 +- code/modules/ninja/suit/head.dm | 2 +- code/modules/ninja/suit/shoes.dm | 2 +- code/modules/ninja/suit/suit.dm | 2 +- code/modules/power/apc/apc_main.dm | 2 +- .../modules/power/lighting/light_construct.dm | 2 +- .../power/singularity/field_generator.dm | 2 +- .../particle_accelerator.dm | 2 +- .../reagents/reagent_containers/glass.dm | 2 +- code/modules/recycling/disposal/bin.dm | 2 +- code/modules/recycling/disposal/pipe.dm | 2 +- .../xenobiology/crossbreeding/_misc.dm | 2 +- .../xenobiology/crossbreeding/_weapons.dm | 2 +- .../xenobiology/crossbreeding/warping.dm | 2 +- .../modules/ruins/lavalandruin_code/puzzle.dm | 2 +- .../shuttle_creation/shuttle_creator.dm | 2 +- code/modules/vehicles/_vehicle.dm | 2 +- code/modules/vehicles/atv.dm | 2 +- code/modules/vehicles/cars/clowncar.dm | 2 +- code/modules/vehicles/mecha/_mecha.dm | 2 +- code/modules/vehicles/mecha/combat/combat.dm | 2 +- code/modules/vehicles/mecha/combat/durand.dm | 2 +- code/modules/vehicles/mecha/combat/gygax.dm | 4 +- code/modules/vehicles/mecha/combat/honker.dm | 2 +- .../modules/vehicles/mecha/combat/marauder.dm | 2 +- code/modules/vehicles/mecha/combat/phazon.dm | 2 +- .../vehicles/mecha/combat/reticence.dm | 2 +- code/modules/vehicles/mecha/working/clarke.dm | 2 +- code/modules/vehicles/mecha/working/ripley.dm | 4 +- code/modules/vehicles/secway.dm | 2 +- code/modules/vehicles/wheelchair.dm | 2 +- code/modules/vending/_vending.dm | 2 +- code/modules/vending/liberation.dm | 2 +- code/modules/vending/liberation_toy.dm | 2 +- code/modules/vending/magivend.dm | 2 +- code/modules/vending/medical.dm | 2 +- code/modules/vending/medical_wall.dm | 2 +- code/modules/vending/toys.dm | 2 +- code/modules/vending/youtool.dm | 2 +- 234 files changed, 1237 insertions(+), 829 deletions(-) create mode 100644 code/datums/components/geiger_sound.dm create mode 100644 code/datums/components/genetic_damage.dm create mode 100644 code/datums/components/irradiated.dm delete mode 100644 code/datums/components/rad_insulation.dm create mode 100644 code/datums/components/radiation_countdown.dm delete mode 100644 code/datums/components/radioactive.dm create mode 100644 code/datums/elements/radiation_protected_clothing.dm create mode 100644 code/datums/elements/radioactive.dm diff --git a/beestation.dme b/beestation.dme index a23ea0463ef16..37800fc8047a9 100644 --- a/beestation.dme +++ b/beestation.dme @@ -648,12 +648,15 @@ #include "code\datums\components\explodable.dm" #include "code\datums\components\force_move.dm" #include "code\datums\components\forensics.dm" +#include "code\datums\components\geiger_sound.dm" +#include "code\datums\components\genetic_damage.dm" #include "code\datums\components\gps.dm" #include "code\datums\components\grillable.dm" #include "code\datums\components\haircolor_clothes.dm" #include "code\datums\components\heirloom.dm" #include "code\datums\components\honkspam.dm" #include "code\datums\components\infective.dm" +#include "code\datums\components\irradiated.dm" #include "code\datums\components\jam_receiver.dm" #include "code\datums\components\jousting.dm" #include "code\datums\components\knockoff.dm" @@ -673,9 +676,8 @@ #include "code\datums\components\paintable.dm" #include "code\datums\components\payment.dm" #include "code\datums\components\pellet_cloud.dm" -#include "code\datums\components\rad_insulation.dm" +#include "code\datums\components\radiation_countdown.dm" #include "code\datums\components\radio_jamming.dm" -#include "code\datums\components\radioactive.dm" #include "code\datums\components\religious_tool.dm" #include "code\datums\components\remote_materials.dm" #include "code\datums\components\riding.dm" @@ -833,6 +835,8 @@ #include "code\datums\elements\openspace_item_click_handler.dm" #include "code\datums\elements\pet_bonus.dm" #include "code\datums\elements\point_of_interest.dm" +#include "code\datums\elements\radiation_protected_clothing.dm" +#include "code\datums\elements\radioactive.dm" #include "code\datums\elements\ranged_attacks.dm" #include "code\datums\elements\rust.dm" #include "code\datums\elements\series.dm" diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 383ebd12730ac..7db1e7b8672e7 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -24,8 +24,6 @@ #define ACID "acid" /// Involved in checking if a disease can infect or spread. Also involved in xeno neurotoxin. #define BIO "bio" -/// Involves ionizing radiation. -#define RAD "rad" /// Involves a shockwave, usually from an explosion. #define BOMB "bomb" /// Involves a solid projectile. @@ -62,7 +60,6 @@ #define EFFECT_UNCONSCIOUS "unconscious" #define EFFECT_PARALYZE "paralyze" #define EFFECT_IMMOBILIZE "immobilize" -#define EFFECT_IRRADIATE "irradiate" #define EFFECT_STUTTER "stutter" #define EFFECT_SLUR "slur" #define EFFECT_EYE_BLUR "eye_blur" diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom.dm b/code/__DEFINES/dcs/signals/signals_atom/signals_atom.dm index 2cc4c0eaabc25..52763d8e30297 100644 --- a/code/__DEFINES/dcs/signals/signals_atom/signals_atom.dm +++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom.dm @@ -72,8 +72,6 @@ #define COMPONENT_CANCEL_BLOB_ACT (1<<0) ///! from base of atom/acid_act(): (acidpwr, acid_volume) #define COMSIG_ATOM_ACID_ACT "atom_acid_act" -///! from base of atom/rad_act(intensity) -#define COMSIG_ATOM_RAD_ACT "atom_rad_act" ///! from base of atom/narsie_act(): () #define COMSIG_ATOM_NARSIE_ACT "atom_narsie_act" ///! from base of atom/ratvar_act(): () @@ -99,15 +97,6 @@ #define COMSIG_ATOM_CONTENTS_DEL "atom_contents_del" ///! from base of atom/has_gravity(): (turf/location, list/forced_gravities) #define COMSIG_ATOM_HAS_GRAVITY "atom_has_gravity" -///! from proc/get_rad_contents(): () -#define COMSIG_ATOM_RAD_PROBE "atom_rad_probe" - #define COMPONENT_BLOCK_RADIATION 1 -///! from base of datum/radiation_wave/radiate(): (strength) -#define COMSIG_ATOM_RAD_CONTAMINATING "atom_rad_contam" - #define COMPONENT_BLOCK_CONTAMINATION 1 -///! from base of datum/radiation_wave/check_obstructions(): (datum/radiation_wave, width) -#define COMSIG_ATOM_RAD_WAVE_PASSING "atom_rad_wave_pass" - #define COMPONENT_RAD_WAVE_HANDLED 1 ///! from internal loop in atom/movable/proc/CanReach(): (list/next) #define COMSIG_ATOM_CANREACH "atom_can_reach" #define COMPONENT_ALLOW_REACH (1<<0) @@ -160,3 +149,26 @@ #define COMSIG_ATOM_JAMMED "become_jammed" //! Relayed to atoms when they become jammed if they have the jam_receiver components. #define COMSIG_ATOM_UNJAMMED "become_unjammed" //! Relayed to atoms when they become unjammed if they have the jam_receiver components. + +// Radiation signals + +/// From the radiation subsystem, called before a potential irradiation. +/// This does not guarantee radiation can reach or will succeed, but merely that there's a radiation source within range. +/// (datum/radiation_pulse_information/pulse_information, insulation_to_target) +#define COMSIG_IN_RANGE_OF_IRRADIATION "in_range_of_irradiation" + +/// Fired when the target could be irradiated, right before the chance check is rolled. +/// (datum/radiation_pulse_information/pulse_information) +#define COMSIG_IN_THRESHOLD_OF_IRRADIATION "pre_potential_irradiation_within_range" + #define CANCEL_IRRADIATION (1 << 0) + + /// If this is flipped, then minimum exposure time will not be checked. + /// If it is not flipped, and the pulse information has a minimum exposure time, then + /// the countdown will begin. + #define SKIP_MINIMUM_EXPOSURE_TIME_CHECK (1 << 1) + +/// Fired when scanning something with a geiger counter. +/// (mob/user, obj/item/geiger_counter/geiger_counter) +#define COMSIG_GEIGER_COUNTER_SCAN "geiger_counter_scan" + /// If not flagged by any handler, will report the subject as being free of irradiation + #define COMSIG_GEIGER_COUNTER_SCAN_SUCCESSFUL (1 << 0) diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_living.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_living.dm index 66dd862db99d7..ebcc37d707200 100644 --- a/code/__DEFINES/dcs/signals/signals_mob/signals_living.dm +++ b/code/__DEFINES/dcs/signals/signals_mob/signals_living.dm @@ -23,6 +23,9 @@ #define COMSIG_LIVING_LIFE "living_life" ///from base of mob/living/death(): (gibbed, was_dead_before) #define COMSIG_LIVING_DEATH "living_death" +/// from /proc/healthscan(): (list/scan_results, advanced, mob/user, mode) +/// Consumers are allowed to mutate the scan_results list to add extra information +#define COMSIG_LIVING_HEALTHSCAN "living_healthscan" /// from base of mob/living/updatehealth(): () #define COMSIG_LIVING_UPDATE_HEALTH "living_update_health" /// Called when a living mob has its resting updated: (resting_state) diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index b849ed37652c6..f12b7ec012cf4 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -178,10 +178,6 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define MOBILITY_FLAGS_DEFAULT (MOBILITY_MOVE | MOBILITY_STAND | MOBILITY_PICKUP | MOBILITY_USE | MOBILITY_UI | MOBILITY_STORAGE | MOBILITY_PULL) -// radiation -#define RAD_PROTECT_CONTENTS (1<<0) -#define RAD_NO_CONTAMINATE (1<<1) - //alternate appearance flags #define AA_TARGET_SEE_APPEARANCE (1<<0) #define AA_MATCH_TARGET_OVERLAYS (1<<1) diff --git a/code/__DEFINES/maths.dm b/code/__DEFINES/maths.dm index e447eb3149ed0..35792417dd30e 100644 --- a/code/__DEFINES/maths.dm +++ b/code/__DEFINES/maths.dm @@ -87,11 +87,6 @@ /// Returns the nth root of x. #define ROOT(n, x) ((x) ** (1 / (n))) -/// Low-pass filter a value to smooth out high frequent peaks. This can be thought of as a moving average filter as well. -/// delta_time is how many seconds since we last ran this command. RC is the filter constant, high RC means more smoothing -/// See https://en.wikipedia.org/wiki/Low-pass_filter#Simple_infinite_impulse_response_filter for the maths -#define LPFILTER(memory, signal, delta_time, RC) (delta_time / (RC + delta_time)) * signal + (1 - delta_time / (RC + delta_time)) * memory - // The quadratic formula. Returns a list with the solutions, or an empty list // if they are imaginary. /proc/SolveQuadratic(a, b, c) diff --git a/code/__DEFINES/radiation.dm b/code/__DEFINES/radiation.dm index 6f1b60ebb59c2..02dcef4f46665 100644 --- a/code/__DEFINES/radiation.dm +++ b/code/__DEFINES/radiation.dm @@ -1,31 +1,18 @@ /* These defines are the balancing points of various parts of the radiation system. Changes here can have widespread effects: make sure you test well. -Ask ninjanomnom if they're around +Ask god if they're around */ -#define RAD_BACKGROUND_RADIATION 9 // How much radiation is harmless to a mob +#define RAD_MOB_HAIRLOSS (1 MINUTES) // How much stored radiation to check for hair loss -// apply_effect((amount*RAD_MOB_COEFFICIENT)/max(1, (radiation**2)*RAD_OVERDOSE_REDUCTION), IRRADIATE, blocked) -#define RAD_MOB_COEFFICIENT 0.20 // Radiation applied is multiplied by this -#define RAD_MOB_SKIN_PROTECTION ((1/RAD_MOB_COEFFICIENT)+RAD_BACKGROUND_RADIATION) +#define RAD_MOB_MUTATE (2 MINUTES) // How much stored radiation to check for mutation -#define RAD_LOSS_PER_TICK 0.5 -#define RAD_TOX_COEFFICIENT 0.08 // Toxin damage per tick coefficient -#define RAD_OVERDOSE_REDUCTION 0.000001 // Coefficient to the reduction in applied rads once the thing, usualy mob, has too much radiation - // WARNING: This number is highly sensitive to change, graph is first for best results -#define RAD_BURN_THRESHOLD 1000 // Applied radiation must be over this to burn - -#define RAD_MOB_SAFE 500 // How much stored radiation in a mob with no ill effects - -#define RAD_MOB_HAIRLOSS 800 // How much stored radiation to check for hair loss - -#define RAD_MOB_MUTATE 1250 // How much stored radiation to check for mutation - -#define RAD_MOB_VOMIT 2000 // The amount of radiation to check for vomitting +/// The time since irradiated before checking for vomitting +#define RAD_MOB_VOMIT (2 MINUTES) #define RAD_MOB_VOMIT_PROB 1 // Chance per tick of vomitting -#define RAD_MOB_KNOCKDOWN 2000 // How much stored radiation to check for stunning +#define RAD_MOB_KNOCKDOWN (2 MINUTES) // How much stored radiation to check for stunning #define RAD_MOB_KNOCKDOWN_PROB 1 // Chance of knockdown per tick when over threshold #define RAD_MOB_KNOCKDOWN_AMOUNT 3 // Amount of knockdown when it occurs @@ -35,31 +22,23 @@ Ask ninjanomnom if they're around #define RAD_MEDIUM_INSULATION 0.7 // What common walls have #define RAD_HEAVY_INSULATION 0.6 // What reinforced walls have #define RAD_EXTREME_INSULATION 0.5 // What rad collectors have -#define RAD_FULL_INSULATION 0 // What depleted uranium windows have +#define RAD_FULL_INSULATION 0 // Completely stops radiation from coming through + +/// The default chance something can be irradiated +#define DEFAULT_RADIATION_CHANCE 10 -// WARNING: The defines below could have disastrous consequences if tweaked incorrectly. See: The great SM purge of Oct.6.2017 -// contamination_chance = [doesn't matter, will always contaminate] -// contamination_strength = strength * RAD_CONTAMINATION_STR_COEFFICIENT -// contamination_threshold = 1 / (RAD_CONTAMINATION_BUDGET_SIZE * RAD_CONTAMINATION_STR_COEFFICIENT) -#define RAD_CONTAMINATION_BUDGET_SIZE 0.2 // Mob and non-mob budgets each gets a share from the radiation as large as this; - // So this means 10% of the rads is "absorbed" by non-mobs (if there is a non-mob), - // and another 10% of the rads is "absorbed" by mobs (if there is a mob) -#define RAD_DISTANCE_COEFFICIENT 1 // Lower means further rad spread +/// The default chance for uranium structures to irradiate +#define URANIUM_IRRADIATION_CHANCE DEFAULT_RADIATION_CHANCE -#define RAD_DISTANCE_COEFFICIENT_COMPONENT_MULTIPLIER 2 // Radiation components have additional penalty at distance coefficient - // This is to reduce radiation by contaminated objects, mostly +/// The minimum exposure time before uranium structures can irradiate +#define URANIUM_RADIATION_MINIMUM_EXPOSURE_TIME (3 SECONDS) -#define RAD_HALF_LIFE 90 // The half-life of contaminated objects +/// Return values of [proc/get_perceived_radiation_danger] +// If you change these, update /datum/looping_sound/geiger as well. +#define PERCEIVED_RADIATION_DANGER_LOW 1 +#define PERCEIVED_RADIATION_DANGER_MEDIUM 2 +#define PERCEIVED_RADIATION_DANGER_HIGH 3 +#define PERCEIVED_RADIATION_DANGER_EXTREME 4 -#define RAD_WAVE_MINIMUM 10 // Radiation waves with less than this amount of power stop spreading - // WARNING: Reducing can make rads subsytem more expensive -#define RAD_COMPONENT_MINIMUM 1 // To ensure slow contamination - // WARNING: Reducing can make rads subsytem more expensive -#define RAD_CONTAMINATION_STR_COEFFICIENT (1 / RAD_HALF_LIFE / 8 * RAD_DISTANCE_COEFFICIENT_COMPONENT_MULTIPLIER ** 2) - // Higher means higher strength scaling contamination strength - // This number represents perservation of radiation - // Set to control the most typical situation: clutters around typical radiation sources - // This define is long and ugly because of the amount of math involved - // and to free this define from mathematical errors of future define number tweakers -#define RAD_GEIGER_RC 4 // RC-constant for the LP filter for geiger counters. See #define LPFILTER for more info. -#define RAD_GEIGER_GRACE_PERIOD 4 // How many seconds after we last detect a radiation pulse until we stop blipping +/// The time before geiger counters reset back to normal without any radiation pulses +#define TIME_WITHOUT_RADIATION_BEFORE_RESET (5 SECONDS) diff --git a/code/__DEFINES/supermatter.dm b/code/__DEFINES/supermatter.dm index 50f07bc5769da..6efcf4549b88a 100644 --- a/code/__DEFINES/supermatter.dm +++ b/code/__DEFINES/supermatter.dm @@ -38,10 +38,10 @@ #define MATTER_POWER_CONVERSION 10 //Crystal converts 1/this value of stored matter into energy. -//These would be what you would get at point blank, decreases with distance -#define DETONATION_RADS 200 #define DETONATION_HALLUCINATION 600 +/// All humans within this range will be irradiated +#define DETONATION_RADIATION_RANGE 20 #define WARNING_DELAY 60 diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index d207836b91066..1e5ef82f279f5 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -540,3 +540,21 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define NO_GRAVITY_TRAIT "no-gravity" #define LIFECANDLE_TRAIT "lifecandle" #define LEAPER_BUBBLE_TRAIT "leaper-bubble" + + +// Radiation defines + +/// Marks that this object is irradiated +#define TRAIT_IRRADIATED "iraddiated" + +/// Harmful radiation effects, the toxin damage and the burns, will not occur while this trait is active +#define TRAIT_HALT_RADIATION_EFFECTS "halt_radiation_effects" + +/// This clothing protects the user from radiation. +/// This should not be used on clothing_traits, but should be applied to the clothing itself. +#define TRAIT_RADIATION_PROTECTED_CLOTHING "radiation_protected_clothing" + +/// Whether or not this item will allow the radiation SS to go through standard +/// radiation processing as if this wasn't already irradiated. +/// Basically, without this, COMSIG_IN_RANGE_OF_IRRADIATION won't fire once the object is irradiated. +#define TRAIT_BYPASS_EARLY_IRRADIATED_CHECK "radiation_bypass_early_irradiated_check" diff --git a/code/__DEFINES/vv.dm b/code/__DEFINES/vv.dm index 85826b1a75bab..9ac3b179bf618 100644 --- a/code/__DEFINES/vv.dm +++ b/code/__DEFINES/vv.dm @@ -96,7 +96,6 @@ #define VV_HK_TRIGGER_EMP "empulse" #define VV_HK_TRIGGER_EXPLOSION "explode" #define VV_HK_AUTO_RENAME "auto_rename" -#define VV_HK_RADIATE "radiate" #define VV_HK_EDIT_FILTERS "edit_filters" #define VV_HK_EDIT_COLOR_MATRIX "edit_color_matrix" #define VV_HK_EDIT_PARTICLES "edit_particles" diff --git a/code/__HELPERS/radiation.dm b/code/__HELPERS/radiation.dm index e688b11874fd9..12178d28fc2bb 100644 --- a/code/__HELPERS/radiation.dm +++ b/code/__HELPERS/radiation.dm @@ -1,52 +1,60 @@ -// A special GetAllContents that doesn't search past things with rad insulation -// Components which return COMPONENT_BLOCK_RADIATION prevent further searching into that object's contents. The object itself will get returned still. -// The ignore list makes those objects never return at all -/proc/get_rad_contents(atom/location) - var/static/list/ignored_things = typecacheof(list( - /mob/dead, - /mob/camera, - /mob/living/simple_animal/revenant, - /obj/effect, - /obj/docking_port, - /atom/movable/lighting_object, - /obj/projectile, - /obj/structure/chisel_message, - /mob/living/simple_animal/eminence - )) - var/list/processing_list = list(location) - . = list() - while(processing_list.len) - var/atom/thing = processing_list[1] - processing_list -= thing - if(thing == null) - continue - if(ignored_things[thing.type]) - continue - . += thing - if((thing.rad_flags & RAD_PROTECT_CONTENTS) || (SEND_SIGNAL(thing, COMSIG_ATOM_RAD_PROBE) & COMPONENT_BLOCK_RADIATION)) - continue - processing_list += thing.contents - -/proc/radiation_pulse(atom/source, intensity, range_modifier, log=FALSE, can_contaminate=TRUE) +/// Whether or not it's possible for this atom to be irradiated +#define CAN_IRRADIATE(atom) (ishuman(##atom) || isitem(##atom)) + +/// Sends out a pulse of radiation, eminating from the source. +/// Radiation is performed by collecting all radiatables within the max range (0 means source only, 1 means adjacent, etc), +/// then makes their way towards them. A number, starting at 1, is multiplied +/// by the insulation amounts of whatever is in the way (for example, walls lowering it down). +/// If this number hits equal or below the threshold, then the target can no longer be irradiated. +/// If the number is above the threshold, then the chance is the chance that the target will be irradiated. +/// As a consumer, this means that max_range going up usually means you want to lower the threshold too, +/// as well as the other way around. +/// If max_range is high, but threshold is too high, then it usually won't reach the source at the max range in time. +/// If max_range is low, but threshold is too low, then it basically guarantees everyone nearby, even if there's walls +/// and such in the way, can be irradiated. +/// You can also pass in a minimum exposure time. If this is set, then this radiation pulse +/// will not irradiate the source unless they have been around *any* radioactive source for that +/// period of time. +/proc/radiation_pulse(atom/source, max_range, threshold, chance = DEFAULT_RADIATION_CHANCE, minimum_exposure_time = 0) if(!SSradiation.can_fire) return - var/list/things = get_rad_contents(isturf(source) ? source : get_turf(source)) //copypasta because I don't want to put special code in waves to handle their origin - for(var/k in 1 to things.len) - var/atom/thing = things[k] - if(!thing) - continue - thing.rad_act(intensity) - - if(intensity >= RAD_WAVE_MINIMUM) // Don't bother to spawn rad waves if they're just going to immediately go out - new /datum/radiation_wave(source, intensity, range_modifier, can_contaminate) + var/datum/radiation_pulse_information/pulse_information = new + pulse_information.source_ref = WEAKREF(source) + pulse_information.max_range = max_range + pulse_information.threshold = threshold + pulse_information.chance = chance + pulse_information.minimum_exposure_time = minimum_exposure_time - var/static/last_huge_pulse = 0 - if(intensity > 3000 && world.time > last_huge_pulse + 200) - last_huge_pulse = world.time - log = TRUE - if(log) - var/turf/_source_T = isturf(source) ? source : get_turf(source) - log_game("Radiation pulse with intensity: [intensity] and range modifier: [range_modifier] in [loc_name(_source_T)] ") + SSradiation.processing += pulse_information return TRUE + +/datum/radiation_pulse_information + var/datum/weakref/source_ref + var/max_range + var/threshold + var/chance + var/minimum_exposure_time + +#define MEDIUM_RADIATION_THRESHOLD_RANGE 0.5 +#define EXTREME_RADIATION_CHANCE 30 + +/// Gets the perceived "danger" of radiation pulse, given the threshold to the target. +/// Returns a RADIATION_DANGER_* define, see [code/__DEFINES/radiation.dm] +/proc/get_perceived_radiation_danger(datum/radiation_pulse_information/pulse_information, insulation_to_target) + if (insulation_to_target > pulse_information.threshold) + // We could get irradiated! The only thing stopping us now is chance, so scale based on that. + if (pulse_information.chance >= EXTREME_RADIATION_CHANCE) + return PERCEIVED_RADIATION_DANGER_EXTREME + else + return PERCEIVED_RADIATION_DANGER_HIGH + else + // We're out of the threshold from being irradiated, but by how much? + if (insulation_to_target / pulse_information.threshold <= MEDIUM_RADIATION_THRESHOLD_RANGE) + return PERCEIVED_RADIATION_DANGER_MEDIUM + else + return PERCEIVED_RADIATION_DANGER_LOW + +#undef MEDIUM_RADIATION_THRESHOLD_RANGE +#undef EXTREME_RADIATION_CHANCE diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 1cdd42507f746..a4176679c1f32 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -237,11 +237,6 @@ DEFINE_BITFIELD(mobility_flags, list( "PULL" = MOBILITY_PULL, )) -DEFINE_BITFIELD(rad_flags, list( - "RAD_PROTECT_CONTENTS" = RAD_PROTECT_CONTENTS, - "RAD_NO_CONTAMINATE" = RAD_NO_CONTAMINATE, -)) - DEFINE_BITFIELD(disease_flags, list( "CURABLE" = CURABLE, "CAN_CARRY" = CAN_CARRY, diff --git a/code/controllers/subsystem/radiation.dm b/code/controllers/subsystem/radiation.dm index 2d764d84ddb64..afd570ff31e07 100644 --- a/code/controllers/subsystem/radiation.dm +++ b/code/controllers/subsystem/radiation.dm @@ -1,18 +1,118 @@ -PROCESSING_SUBSYSTEM_DEF(radiation) +SUBSYSTEM_DEF(radiation) name = "Radiation" - flags = SS_NO_INIT | SS_BACKGROUND - wait = 1 SECONDS - - var/list/warned_atoms = list() - -/datum/controller/subsystem/processing/radiation/proc/warn(datum/component/radioactive/contamination) - if(!contamination || QDELETED(contamination)) - return - var/ref = REF(contamination.parent) - if(warned_atoms[ref]) - return - warned_atoms[ref] = TRUE - var/atom/master = contamination.parent - SSblackbox.record_feedback("tally", "contaminated", 1, master.type) - var/msg = "has become contaminated with enough radiation to contaminate other objects. || Source: [contamination.source] || Strength: [contamination.strength]" - master.investigate_log(msg, INVESTIGATE_RADIATION) + flags = SS_BACKGROUND | SS_NO_INIT + + wait = 0.5 SECONDS + + /// A list of radiation sources (/datum/radiation_pulse_information) that have yet to process. + /// Do not interact with this directly, use `radiation_pulse` instead. + var/list/datum/radiation_pulse_information/processing = list() + +/datum/controller/subsystem/radiation/fire(resumed) + while (processing.len) + var/datum/radiation_pulse_information/pulse_information = popleft(processing) + + var/datum/weakref/source_ref = pulse_information.source_ref + var/atom/source = source_ref.resolve() + if (isnull(source)) + continue + + pulse(source, pulse_information) + + if (MC_TICK_CHECK) + return + +/datum/controller/subsystem/radiation/stat_entry(msg) + msg = "[msg] | Pulses: [processing.len]" + return ..() + +/datum/controller/subsystem/radiation/proc/pulse(atom/source, datum/radiation_pulse_information/pulse_information) + var/list/cached_rad_insulations = list() + + for (var/atom/movable/target in range(pulse_information.max_range, source)) + if (!can_irradiate_basic(target)) + continue + + var/current_insulation = 1 + + for (var/turf/turf_in_between in get_line(source, target) - get_turf(source)) + var/insulation = cached_rad_insulations[turf_in_between] + if (isnull(insulation)) + insulation = turf_in_between.rad_insulation + for (var/atom/on_turf as anything in turf_in_between.contents) + insulation *= on_turf.rad_insulation + cached_rad_insulations[turf_in_between] = insulation + + current_insulation *= insulation + + if (current_insulation <= pulse_information.threshold) + break + + SEND_SIGNAL(target, COMSIG_IN_RANGE_OF_IRRADIATION, pulse_information, current_insulation) + + // Check a second time, because of TRAIT_BYPASS_EARLY_IRRADIATED_CHECK + if (HAS_TRAIT(target, TRAIT_IRRADIATED)) + continue + + if (current_insulation <= pulse_information.threshold) + continue + + var/irradiation_result = SEND_SIGNAL(target, COMSIG_IN_THRESHOLD_OF_IRRADIATION, pulse_information) + if (irradiation_result & CANCEL_IRRADIATION) + continue + + if (pulse_information.minimum_exposure_time && !(irradiation_result & SKIP_MINIMUM_EXPOSURE_TIME_CHECK)) + target.AddComponent(/datum/component/radiation_countdown, pulse_information.minimum_exposure_time) + continue + + if (!prob(pulse_information.chance)) + continue + + if (irradiate_after_basic_checks(target)) + target.investigate_log("was irradiated by [source].", INVESTIGATE_RADIATION) + +/// Will attempt to irradiate the given target, limited through IC means, such as radiation protected clothing. +/datum/controller/subsystem/radiation/proc/irradiate(atom/target) + if (!can_irradiate_basic(target)) + return FALSE + + irradiate_after_basic_checks() + return TRUE + +/datum/controller/subsystem/radiation/proc/irradiate_after_basic_checks(atom/target) + PRIVATE_PROC(TRUE) + + if (ishuman(target) && wearing_rad_protected_clothing(target)) + return FALSE + + target.AddComponent(/datum/component/irradiated) + return TRUE + +/// Returns whether or not the target can be irradiated by any means. +/// Does not check for clothing. +/datum/controller/subsystem/radiation/proc/can_irradiate_basic(atom/target) + if (!CAN_IRRADIATE(target)) + return FALSE + + if (HAS_TRAIT(target, TRAIT_IRRADIATED) && !HAS_TRAIT(target, TRAIT_BYPASS_EARLY_IRRADIATED_CHECK)) + return FALSE + + if (HAS_TRAIT(target, TRAIT_RADIMMUNE)) + return FALSE + + return TRUE + +/// Returns whether or not the human is covered head to toe in rad-protected clothing. +/datum/controller/subsystem/radiation/proc/wearing_rad_protected_clothing(mob/living/carbon/human/human) + for (var/obj/item/bodypart/limb as anything in human.bodyparts) + var/protected = FALSE + + for (var/obj/item/clothing as anything in human.clothingonpart(limb)) + if (HAS_TRAIT(clothing, TRAIT_RADIATION_PROTECTED_CLOTHING)) + protected = TRUE + break + + if (!protected) + return FALSE + + return TRUE diff --git a/code/datums/armor.dm b/code/datums/armor.dm index d78f834717433..672ca5e58aba2 100644 --- a/code/datums/armor.dm +++ b/code/datums/armor.dm @@ -1,9 +1,9 @@ -#define ARMORID "armor-[melee]-[bullet]-[laser]-[energy]-[bomb]-[bio]-[rad]-[fire]-[acid]-[stamina]-[consume]-[bleed]" +#define ARMORID "armor-[melee]-[bullet]-[laser]-[energy]-[bomb]-[bio]-[fire]-[acid]-[stamina]-[consume]-[bleed]" -/proc/getArmor(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0, stamina = 0, consume = 0, bleed = 0) +/proc/getArmor(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, fire = 0, acid = 0, stamina = 0, consume = 0, bleed = 0) . = locate(ARMORID) if (!.) - . = new /datum/armor(melee, bullet, laser, energy, bomb, bio, rad, fire, acid, stamina, consume, bleed) + . = new /datum/armor(melee, bullet, laser, energy, bomb, bio, fire, acid, stamina, consume, bleed) /datum/armor datum_flags = DF_USE_TAG @@ -13,21 +13,19 @@ var/energy var/bomb var/bio - var/rad var/fire var/acid var/stamina var/consume var/bleed -/datum/armor/New(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0, stamina = 0, consume = 0, bleed = 0) +/datum/armor/New(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, fire = 0, acid = 0, stamina = 0, consume = 0, bleed = 0) src.melee = melee src.bullet = bullet src.laser = laser src.energy = energy src.bomb = bomb src.bio = bio - src.rad = rad src.fire = fire src.acid = acid src.stamina = stamina @@ -35,20 +33,19 @@ src.bleed = bleed tag = ARMORID -/datum/armor/proc/modifyRating(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0, stamina = 0, consume = 0, bleed = 0) - return getArmor(src.melee+melee, src.bullet+bullet, src.laser+laser, src.energy+energy, src.bomb+bomb, src.bio+bio, src.rad+rad, src.fire+fire, src.acid+acid, src.stamina+stamina, src.consume+consume, src.bleed+bleed) +/datum/armor/proc/modifyRating(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, fire = 0, acid = 0, stamina = 0, consume = 0, bleed = 0) + return getArmor(src.melee+melee, src.bullet+bullet, src.laser+laser, src.energy+energy, src.bomb+bomb, src.bio+bio, src.fire+fire, src.acid+acid, src.stamina+stamina, src.consume+consume, src.bleed+bleed) /datum/armor/proc/modifyAllRatings(modifier = 0) - return getArmor(melee+modifier, bullet+modifier, laser+modifier, energy+modifier, bomb+modifier, bio+modifier, rad+modifier, fire+modifier, acid+modifier, stamina+modifier, consume+modifier, bleed+modifier) + return getArmor(melee+modifier, bullet+modifier, laser+modifier, energy+modifier, bomb+modifier, bio+modifier, fire+modifier, acid+modifier, stamina+modifier, consume+modifier, bleed+modifier) -/datum/armor/proc/setRating(melee, bullet, laser, energy, bomb, bio, rad, fire, acid, consume, bleed) +/datum/armor/proc/setRating(melee, bullet, laser, energy, bomb, bio, fire, acid, consume, bleed) return getArmor((isnull(melee) ? src.melee : melee),\ (isnull(bullet) ? src.bullet : bullet),\ (isnull(laser) ? src.laser : laser),\ (isnull(energy) ? src.energy : energy),\ (isnull(bomb) ? src.bomb : bomb),\ (isnull(bio) ? src.bio : bio),\ - (isnull(rad) ? src.rad : rad),\ (isnull(fire) ? src.fire : fire),\ (isnull(acid) ? src.acid : acid),\ (isnull(stamina) ? src.stamina : stamina),\ @@ -59,13 +56,13 @@ return vars[rating] /datum/armor/proc/getList() - return list(MELEE = melee, BULLET = bullet, LASER = laser, ENERGY = energy, BOMB = bomb, BIO = bio, RAD = rad, FIRE = fire, ACID = acid, STAMINA = stamina, CONSUME = consume, BLEED = bleed) + return list(MELEE = melee, BULLET = bullet, LASER = laser, ENERGY = energy, BOMB = bomb, BIO = bio, FIRE = fire, ACID = acid, STAMINA = stamina, CONSUME = consume, BLEED = bleed) /datum/armor/proc/attachArmor(datum/armor/AA) - return getArmor(melee+AA.melee, bullet+AA.bullet, laser+AA.laser, energy+AA.energy, bomb+AA.bomb, bio+AA.bio, rad+AA.rad, fire+AA.fire, acid+AA.acid, stamina+AA.stamina, consume+AA.consume, bleed+AA.bleed) + return getArmor(melee+AA.melee, bullet+AA.bullet, laser+AA.laser, energy+AA.energy, bomb+AA.bomb, bio+AA.bio, fire+AA.fire, acid+AA.acid, stamina+AA.stamina, consume+AA.consume, bleed+AA.bleed) /datum/armor/proc/detachArmor(datum/armor/AA) - return getArmor(melee-AA.melee, bullet-AA.bullet, laser-AA.laser, energy-AA.energy, bomb-AA.bomb, bio-AA.bio, rad-AA.rad, fire-AA.fire, acid-AA.acid, stamina-AA.stamina, consume+AA.consume, bleed+AA.bleed) + return getArmor(melee-AA.melee, bullet-AA.bullet, laser-AA.laser, energy-AA.energy, bomb-AA.bomb, bio-AA.bio, fire-AA.fire, acid-AA.acid, stamina-AA.stamina, consume+AA.consume, bleed+AA.bleed) /datum/armor/vv_edit_var(var_name, var_value) if (var_name == NAMEOF(src, tag)) diff --git a/code/datums/components/connect_loc_behalf.dm b/code/datums/components/connect_loc_behalf.dm index e8806f9fe58ff..5e266ef5d4e8e 100644 --- a/code/datums/components/connect_loc_behalf.dm +++ b/code/datums/components/connect_loc_behalf.dm @@ -1,6 +1,6 @@ /// This component behaves similar to connect_loc, hooking into a signal on a tracked object's turf /// It has the ability to react to that signal on behalf of a separate listener however -/// This has great use, primarially for components, but it carries with it some overhead +/// This has great use, primarily for components, but it carries with it some overhead /// So we do it separately as it needs to hold state which is very likely to lead to bugs if it remains as an element. /datum/component/connect_loc_behalf dupe_mode = COMPONENT_DUPE_UNIQUE diff --git a/code/datums/components/geiger_sound.dm b/code/datums/components/geiger_sound.dm new file mode 100644 index 0000000000000..30e879b66681b --- /dev/null +++ b/code/datums/components/geiger_sound.dm @@ -0,0 +1,92 @@ +/// Atoms with this component will play sounds depending on nearby radiation +/datum/component/geiger_sound + var/datum/looping_sound/geiger/sound + + var/last_parent = null + +/datum/component/geiger_sound/Initialize(...) + if (!isatom(parent)) + return COMPONENT_INCOMPATIBLE + +/datum/component/geiger_sound/Destroy(force, silent) + QDEL_NULL(sound) + + if (!isnull(last_parent)) + UnregisterSignal(last_parent, COMSIG_IN_RANGE_OF_IRRADIATION) + + last_parent = null + + return ..() + +/datum/component/geiger_sound/RegisterWithParent() + sound = new(parent) + + RegisterSignal(parent, COMSIG_IN_RANGE_OF_IRRADIATION, .proc/on_pre_potential_irradiation) + + ADD_TRAIT(parent, TRAIT_BYPASS_EARLY_IRRADIATED_CHECK, REF(src)) + + if (isitem(parent)) + var/atom/atom_parent = parent + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/on_moved) + register_to_loc(atom_parent.loc) + +/datum/component/geiger_sound/UnregisterFromParent() + UnregisterSignal(parent, list( + COMSIG_MOVABLE_MOVED, + COMSIG_IN_RANGE_OF_IRRADIATION, + )) + + REMOVE_TRAIT(parent, TRAIT_BYPASS_EARLY_IRRADIATED_CHECK, REF(src)) + +/datum/component/geiger_sound/proc/on_pre_potential_irradiation(datum/source, datum/radiation_pulse_information/pulse_information, insulation_to_target) + SIGNAL_HANDLER + + sound.last_insulation_to_target = insulation_to_target + sound.last_radiation_pulse = pulse_information + sound.start() + + addtimer(CALLBACK(sound, /datum/looping_sound/proc/stop), TIME_WITHOUT_RADIATION_BEFORE_RESET, TIMER_UNIQUE | TIMER_OVERRIDE) + +/datum/component/geiger_sound/proc/on_moved(atom/source) + SIGNAL_HANDLER + register_to_loc(source.loc) + +/datum/component/geiger_sound/proc/register_to_loc(new_loc) + if (last_parent == new_loc) + return + + if (!isnull(last_parent)) + UnregisterSignal(last_parent, COMSIG_IN_RANGE_OF_IRRADIATION) + + last_parent = new_loc + + if (!isnull(new_loc)) + RegisterSignal(new_loc, COMSIG_IN_RANGE_OF_IRRADIATION, .proc/on_pre_potential_irradiation) + +/datum/looping_sound/geiger + mid_sounds = list( + list('sound/items/geiger/low1.ogg'=1, 'sound/items/geiger/low2.ogg'=1, 'sound/items/geiger/low3.ogg'=1, 'sound/items/geiger/low4.ogg'=1), + list('sound/items/geiger/med1.ogg'=1, 'sound/items/geiger/med2.ogg'=1, 'sound/items/geiger/med3.ogg'=1, 'sound/items/geiger/med4.ogg'=1), + list('sound/items/geiger/high1.ogg'=1, 'sound/items/geiger/high2.ogg'=1, 'sound/items/geiger/high3.ogg'=1, 'sound/items/geiger/high4.ogg'=1), + list('sound/items/geiger/ext1.ogg'=1, 'sound/items/geiger/ext2.ogg'=1, 'sound/items/geiger/ext3.ogg'=1, 'sound/items/geiger/ext4.ogg'=1) + ) + mid_length = 2 + volume = 25 + + var/datum/radiation_pulse_information/last_radiation_pulse + var/last_insulation_to_target + +/datum/looping_sound/geiger/Destroy() + last_radiation_pulse = null + return ..() + +/datum/looping_sound/geiger/get_sound(starttime) + if (isnull(last_radiation_pulse)) + return null + + return ..(starttime, mid_sounds[get_perceived_radiation_danger(last_radiation_pulse, last_insulation_to_target)]) + +/datum/looping_sound/geiger/stop() + . = ..() + + last_radiation_pulse = null diff --git a/code/datums/components/genetic_damage.dm b/code/datums/components/genetic_damage.dm new file mode 100644 index 0000000000000..1092f444b6592 --- /dev/null +++ b/code/datums/components/genetic_damage.dm @@ -0,0 +1,72 @@ +#define GORILLA_MUTATION_CHANCE_PER_SECOND 0.25 +#define GORILLA_MUTATION_MINIMUM_DAMAGE 2500 + +/// Genetic damage, given by DNA consoles, will start to deal toxin damage +/// past a certain threshold, and will go down consistently. +/// Adding multiple of this component will increase the total damage. +/// Can turn monkeys into gorillas. +/datum/component/genetic_damage + dupe_mode = COMPONENT_DUPE_UNIQUE + + /// The total genetic damage on the mob + var/total_damage = 0 + + /// The amount of genetic damage a mob can sustain before taking damage + var/minimum_before_damage = 500 + + /// The amount of genetic damage to remove per second + var/remove_per_second = 1 / 3 + + /// The amount of toxin damage to deal per second, if over the minimum before taking damage + var/toxin_damage_per_second = 1 / 3 + +/datum/component/genetic_damage/Initialize(genetic_damage) + if (!isliving(parent)) + return COMPONENT_INCOMPATIBLE + + src.total_damage = genetic_damage + + START_PROCESSING(SSprocessing, src) + +/datum/component/genetic_damage/RegisterWithParent() + RegisterSignal(parent, COMSIG_LIVING_HEALTHSCAN, .proc/on_healthscan) + +/datum/component/genetic_damage/UnregisterFromParent() + UnregisterSignal(parent, COMSIG_LIVING_HEALTHSCAN) + +/datum/component/genetic_damage/Destroy(force, silent) + STOP_PROCESSING(SSprocessing, src) + + return ..() + +/datum/component/genetic_damage/InheritComponent(datum/component/genetic_damage/old_component) + total_damage += old_component.total_damage + +/datum/component/genetic_damage/process(delta_time) + if (ismonkey(parent) && total_damage >= GORILLA_MUTATION_MINIMUM_DAMAGE && DT_PROB(GORILLA_MUTATION_CHANCE_PER_SECOND, delta_time)) + var/mob/living/carbon/carbon_parent = parent + carbon_parent.gorillize() + qdel(src) + return PROCESS_KILL + + if (total_damage >= minimum_before_damage) + var/mob/living/living_mob = parent + living_mob.adjustToxLoss(toxin_damage_per_second * delta_time) + + total_damage -= remove_per_second * delta_time + if (total_damage <= 0) + qdel(src) + return PROCESS_KILL + +/datum/component/genetic_damage/proc/on_healthscan(datum/source, list/render_list, advanced) + SIGNAL_HANDLER + + if (advanced) + render_list += "Genetic damage: [round(total_damage / minimum_before_damage * 100, 0.1)]%\n" + else if (total_damage >= minimum_before_damage) + render_list += "Severe genetic damage detected.\n" + else + render_list += "Minor genetic damage detected.\n" + +#undef GORILLA_MUTATION_CHANCE_PER_SECOND +#undef GORILLA_MUTATION_MINIMUM_DAMAGE diff --git a/code/datums/components/irradiated.dm b/code/datums/components/irradiated.dm new file mode 100644 index 0000000000000..63a9379b9c159 --- /dev/null +++ b/code/datums/components/irradiated.dm @@ -0,0 +1,201 @@ +#define RADIATION_IMMEDIATE_TOX_DAMAGE 10 + +#define RADIATION_TOX_DAMAGE_PER_INTERVAL 2 +#define RADIATION_TOX_INTERVAL (25 SECONDS) + +#define RADIATION_BURN_SPLOTCH_DAMAGE 11 +#define RADIATION_BURN_INTERVAL_MIN (30 SECONDS) +#define RADIATION_BURN_INTERVAL_MAX (60 SECONDS) + +// Showers process on SSmachines +#define RADIATION_CLEAN_IMMUNITY_TIME (SSMACHINES_DT + (1 SECONDS)) + +/// This atom is irradiated, and will glow green. +/// Humans will take toxin damage until all their toxin damage is cleared. +/// Items will attempt to irradiate whoever is holding them, as well as whatever they are inside. +/datum/component/irradiated + dupe_mode = COMPONENT_DUPE_UNIQUE + + var/beginning_of_irradiation + + var/burn_splotch_timer_id + + COOLDOWN_DECLARE(clean_cooldown) + COOLDOWN_DECLARE(last_tox_damage) + +/datum/component/irradiated/Initialize() + if (!CAN_IRRADIATE(parent)) + return COMPONENT_INCOMPATIBLE + + // This isn't incompatible, it's just wrong + if (HAS_TRAIT(parent, TRAIT_RADIMMUNE)) + qdel(src) + return + + ADD_TRAIT(parent, TRAIT_IRRADIATED, REF(src)) + + create_glow() + + beginning_of_irradiation = world.time + + if (ishuman(parent)) + var/mob/living/carbon/human/human_parent = parent + human_parent.apply_damage(RADIATION_IMMEDIATE_TOX_DAMAGE, TOX) + START_PROCESSING(SSobj, src) + + COOLDOWN_START(src, last_tox_damage, RADIATION_TOX_INTERVAL) + + start_burn_splotch_timer() + + human_parent.throw_alert("irradiated", /atom/movable/screen/alert/irradiated) + +/datum/component/irradiated/RegisterWithParent() + RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/on_clean) + RegisterSignal(parent, COMSIG_GEIGER_COUNTER_SCAN, .proc/on_geiger_counter_scan) + +/datum/component/irradiated/UnregisterFromParent() + UnregisterSignal(parent, list( + COMSIG_COMPONENT_CLEAN_ACT, + COMSIG_GEIGER_COUNTER_SCAN, + )) + +/datum/component/irradiated/Destroy(force, silent) + var/atom/movable/parent_movable = parent + if (istype(parent_movable)) + parent_movable.remove_filter("rad_glow") + + var/mob/living/carbon/human/human_parent = parent + if (istype(human_parent)) + human_parent.clear_alert("irradiated") + + REMOVE_TRAIT(parent, TRAIT_IRRADIATED, REF(src)) + + deltimer(burn_splotch_timer_id) + STOP_PROCESSING(SSobj, src) + + return ..() + +/datum/component/irradiated/process(delta_time) + if (!ishuman(parent)) + return PROCESS_KILL + + if (HAS_TRAIT(parent, TRAIT_RADIMMUNE)) + qdel(src) + return PROCESS_KILL + + var/mob/living/carbon/human/human_parent = parent + if (human_parent.getToxLoss() == 0) + qdel(src) + return PROCESS_KILL + + if (should_halt_effects(parent)) + return + + if (human_parent.stat > DEAD) + human_parent.dna?.species?.handle_radiation(human_parent, world.time - beginning_of_irradiation, delta_time) + + process_tox_damage(human_parent, delta_time) + +/datum/component/irradiated/proc/should_halt_effects(mob/living/carbon/human/target) + if (IS_IN_STASIS(target)) + return TRUE + + if (HAS_TRAIT(target, TRAIT_HALT_RADIATION_EFFECTS)) + return TRUE + + if (!COOLDOWN_FINISHED(src, clean_cooldown)) + return TRUE + + return FALSE + +/datum/component/irradiated/proc/process_tox_damage(mob/living/carbon/human/target, delta_time) + if (!COOLDOWN_FINISHED(src, last_tox_damage)) + return + + target.apply_damage(RADIATION_TOX_DAMAGE_PER_INTERVAL, TOX) + COOLDOWN_START(src, last_tox_damage, RADIATION_TOX_INTERVAL) + +/datum/component/irradiated/proc/start_burn_splotch_timer() + addtimer(CALLBACK(src, .proc/give_burn_splotches), rand(RADIATION_BURN_INTERVAL_MIN, RADIATION_BURN_INTERVAL_MAX), TIMER_STOPPABLE) + +/datum/component/irradiated/proc/give_burn_splotches() + // This shouldn't be possible, but just in case. + if (QDELETED(src)) + return + + start_burn_splotch_timer() + + var/mob/living/carbon/human/human_parent = parent + + if (should_halt_effects(parent)) + return + + var/obj/affected_limb = human_parent.get_bodypart(ran_zone()) + human_parent.visible_message( + span_boldwarning("[human_parent]'s [affected_limb.name] bubbles unnaturally, then bursts into blisters!"), + span_boldwarning("Your [affected_limb.name] bubbles unnaturally, then bursts into blisters!"), + ) + + if (human_parent.is_blind()) + to_chat(human_parent, span_boldwarning("Your [affected_limb.name] feels like it's bubbling, then burns like hell!")) + + human_parent.apply_damage(RADIATION_BURN_SPLOTCH_DAMAGE, BURN, affected_limb) + playsound( + human_parent, + pick('sound/effects/wounds/sizzle1.ogg', 'sound/effects/wounds/sizzle2.ogg'), + 50, + vary = TRUE, + ) + +/datum/component/irradiated/proc/create_glow() + var/atom/movable/parent_movable = parent + if (!istype(parent_movable)) + return + + parent_movable.add_filter("rad_glow", 2, list("type" = "outline", "color" = "#39ff1430", "size" = 2)) + addtimer(CALLBACK(src, .proc/start_glow_loop, parent_movable), rand(0.1 SECONDS, 1.9 SECONDS)) // Things should look uneven + +/datum/component/irradiated/proc/start_glow_loop(atom/movable/parent_movable) + var/filter = parent_movable.get_filter("rad_glow") + if (!filter) + return + + animate(filter, alpha = 110, time = 1.5 SECONDS, loop = -1) + animate(alpha = 40, time = 2.5 SECONDS) + +/datum/component/irradiated/proc/on_clean(datum/source, clean_types) + SIGNAL_HANDLER + + if (!(clean_types & CLEAN_TYPE_RADIATION)) + return + + if (isitem(parent)) + qdel(src) + return COMPONENT_CLEANED + + COOLDOWN_START(src, clean_cooldown, RADIATION_CLEAN_IMMUNITY_TIME) + +/datum/component/irradiated/proc/on_geiger_counter_scan(datum/source, mob/user, obj/item/geiger_counter/geiger_counter) + SIGNAL_HANDLER + + if (isliving(source)) + var/mob/living/living_source = source + to_chat(user, span_boldannounce("[icon2html(geiger_counter, user)] Subject is irradiated. Contamination traces back to roughly [DisplayTimeText(world.time - beginning_of_irradiation, 5)] ago. Current toxin levels: [living_source.getToxLoss()].")) + else + // In case the green wasn't obvious enough... + to_chat(user, span_boldannounce("[icon2html(geiger_counter, user)] Target is irradiated.")) + + return COMSIG_GEIGER_COUNTER_SCAN_SUCCESSFUL + +/atom/movable/screen/alert/irradiated + name = "Irradiated" + desc = "You're irradiated! Heal your toxins quick, and stand under a shower to halt the incoming damage." + icon_state = "irradiated" + +#undef RADIATION_BURN_SPLOTCH_DAMAGE +#undef RADIATION_BURN_INTERVAL_MIN +#undef RADIATION_BURN_INTERVAL_MAX +#undef RADIATION_CLEAN_IMMUNITY_TIME +#undef RADIATION_IMMEDIATE_TOX_DAMAGE +#undef RADIATION_TOX_INTERVAL +#undef RADIATION_TOX_DAMAGE_PER_INTERVAL diff --git a/code/datums/components/rad_insulation.dm b/code/datums/components/rad_insulation.dm deleted file mode 100644 index d5c62fbfb8e8c..0000000000000 --- a/code/datums/components/rad_insulation.dm +++ /dev/null @@ -1,31 +0,0 @@ -/datum/component/rad_insulation - var/amount // Multiplier for radiation strength passing through - -/datum/component/rad_insulation/Initialize(_amount=RAD_MEDIUM_INSULATION, protects=TRUE, contamination_proof=TRUE) - if(!isatom(parent)) - return COMPONENT_INCOMPATIBLE - - if(protects) // Does this protect things in its contents from being affected? - RegisterSignal(parent, COMSIG_ATOM_RAD_PROBE, PROC_REF(rad_probe_react)) - if(contamination_proof) // Can this object be contaminated? - RegisterSignal(parent, COMSIG_ATOM_RAD_CONTAMINATING, PROC_REF(rad_contaminating)) - if(_amount != 1) // If it's 1 it wont have any impact on radiation passing through anyway - RegisterSignal(parent, COMSIG_ATOM_RAD_WAVE_PASSING, PROC_REF(rad_pass)) - - amount = _amount - -/datum/component/rad_insulation/proc/rad_probe_react(datum/source) - SIGNAL_HANDLER - - return COMPONENT_BLOCK_RADIATION - -/datum/component/rad_insulation/proc/rad_contaminating(datum/source, strength) - SIGNAL_HANDLER - - return COMPONENT_BLOCK_CONTAMINATION - -/datum/component/rad_insulation/proc/rad_pass(datum/source, datum/radiation_wave/wave, index) - SIGNAL_HANDLER - - wave.intensity[index] *= amount - return COMPONENT_RAD_WAVE_HANDLED diff --git a/code/datums/components/radiation_countdown.dm b/code/datums/components/radiation_countdown.dm new file mode 100644 index 0000000000000..dfb77d360af4c --- /dev/null +++ b/code/datums/components/radiation_countdown.dm @@ -0,0 +1,55 @@ +// Should be more than any minimum exposure time coming in +#define TIME_UNTIL_DELETION (10 SECONDS) + +/// Begins the countdown before a target can be irradiated. +/// Added by the radiation subsystem when a pulse information has a minimum exposure time. +/// Will clear itself out after a while. +/datum/component/radiation_countdown + /// The time this component was added + var/time_added + + /// The shortest minimum time before being irradiated. + /// If the source has an attempted irradiation again outside this timeframe, it will go through. + var/minimum_exposure_time + +/datum/component/radiation_countdown/Initialize(minimum_exposure_time) + if (!CAN_IRRADIATE(parent)) + return COMPONENT_INCOMPATIBLE + + src.minimum_exposure_time = minimum_exposure_time + + time_added = world.time + + to_chat(parent, span_userdanger("The air around you feels warm...perhaps you should go somewhere else.")) + + start_deletion_timer() + +/datum/component/radiation_countdown/proc/start_deletion_timer() + addtimer(CALLBACK(src, .proc/remove_self), TIME_UNTIL_DELETION, TIMER_UNIQUE | TIMER_OVERRIDE) + +/datum/component/radiation_countdown/proc/remove_self() + if (!HAS_TRAIT(parent, TRAIT_IRRADIATED)) + to_chat(parent, span_notice("The air here feels safer.")) + + qdel(src) + +/datum/component/radiation_countdown/RegisterWithParent() + RegisterSignal(parent, COMSIG_IN_THRESHOLD_OF_IRRADIATION, .proc/on_pre_potential_irradiation_within_range) + +/datum/component/radiation_countdown/UnregisterFromParent() + UnregisterSignal(parent, COMSIG_IN_THRESHOLD_OF_IRRADIATION) + +/datum/component/radiation_countdown/proc/on_pre_potential_irradiation_within_range(datum/source, datum/radiation_pulse_information/pulse_information) + SIGNAL_HANDLER + + minimum_exposure_time = min(minimum_exposure_time, pulse_information.minimum_exposure_time) + + start_deletion_timer() + + // Played with fire, now you might be getting irradiated. + if (world.time - time_added >= minimum_exposure_time) + return SKIP_MINIMUM_EXPOSURE_TIME_CHECK + + return CANCEL_IRRADIATION + +#undef TIME_UNTIL_DELETION diff --git a/code/datums/components/radioactive.dm b/code/datums/components/radioactive.dm deleted file mode 100644 index 3a2109a1643ac..0000000000000 --- a/code/datums/components/radioactive.dm +++ /dev/null @@ -1,117 +0,0 @@ -#define RAD_AMOUNT_LOW 50 -#define RAD_AMOUNT_MEDIUM 200 -#define RAD_AMOUNT_HIGH 500 -#define RAD_AMOUNT_EXTREME 1000 - -/datum/component/radioactive - dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS - - var/source - var/hl3_release_date //the half-life measured in ticks - var/strength - var/can_contaminate - -/datum/component/radioactive/Initialize(_strength=0, _source, _half_life=RAD_HALF_LIFE, _can_contaminate=TRUE) - strength = _strength - source = _source - hl3_release_date = _half_life - can_contaminate = _can_contaminate - if(istype(parent, /atom)) - RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(rad_examine)) - RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(rad_clean)) - if(istype(parent, /obj/item)) - RegisterSignal(parent, COMSIG_ITEM_ATTACK, PROC_REF(rad_attack)) - RegisterSignal(parent, COMSIG_ITEM_ATTACK_OBJ, PROC_REF(rad_attack)) - else - return COMPONENT_INCOMPATIBLE - if(strength * (RAD_CONTAMINATION_STR_COEFFICIENT * RAD_CONTAMINATION_BUDGET_SIZE) > RAD_COMPONENT_MINIMUM) - SSradiation.warn(src) - //Let's make er glow - //This relies on parent not being a turf or something. IF YOU CHANGE THAT, CHANGE THIS - var/atom/movable/master = parent - master.add_filter("rad_glow", 2, list("type" = "outline", "color" = "#39ff1430", "size" = 2)) - addtimer(CALLBACK(src, PROC_REF(glow_loop), master), rand(1,19))//Things should look uneven - START_PROCESSING(SSradiation, src) - -/datum/component/radioactive/Destroy() - STOP_PROCESSING(SSradiation, src) - var/atom/movable/master = parent - master.remove_filter("rad_glow") - return ..() - -/datum/component/radioactive/process(delta_time) - if(!DT_PROB(50, delta_time)) - return - if(strength >= RAD_WAVE_MINIMUM) - radiation_pulse(parent, strength, RAD_DISTANCE_COEFFICIENT*RAD_DISTANCE_COEFFICIENT_COMPONENT_MULTIPLIER, FALSE, can_contaminate) - if(!hl3_release_date) - return - strength -= strength / hl3_release_date - - if(strength < RAD_COMPONENT_MINIMUM) - qdel(src) - -/datum/component/radioactive/proc/glow_loop(atom/movable/master) - var/filter = master.get_filter("rad_glow") - if(filter) - animate(filter, alpha = 110, time = 15, loop = -1) - animate(alpha = 40, time = 25) - -/datum/component/radioactive/InheritComponent(datum/component/C, i_am_original, _strength, _source, _half_life, _can_contaminate) - if(!i_am_original) - return - if(!hl3_release_date) // Permanently radioactive things don't get to grow stronger - return - if(C) - var/datum/component/radioactive/other = C - strength += other.strength - else - strength = max(strength, _strength) - -/datum/component/radioactive/proc/rad_examine(datum/source, mob/user, atom/thing) - SIGNAL_HANDLER - - var/atom/master = parent - var/list/out = list() - if(get_dist(master, user) <= 1) - out += "The air around [master] feels warm" - switch(strength) - if(RAD_AMOUNT_LOW to RAD_AMOUNT_MEDIUM) - out += "[length(out) ? " and it " : "[master] "]feels weird to look at." - if(RAD_AMOUNT_MEDIUM to RAD_AMOUNT_HIGH) - out += "[length(out) ? " and it " : "[master] "]seems to be glowing a bit." - if(RAD_AMOUNT_HIGH to INFINITY) //At this level the object can contaminate other objects - out += "[length(out) ? " and it " : "[master] "]hurts to look at." - if(!LAZYLEN(out)) - return - out += "." - to_chat(user, "[out.Join()]") - -/datum/component/radioactive/proc/rad_attack(datum/source, atom/movable/target, mob/living/user) - SIGNAL_HANDLER - - radiation_pulse(parent, strength/20) - target.rad_act(strength/2) - if(!hl3_release_date) - return - strength -= strength / hl3_release_date - -/datum/component/radioactive/proc/rad_clean(datum/source, clean_types) - if(QDELETED(src)) - return - - if(!(clean_types & CLEAN_TYPE_RADIATION)) - return - - if(!(clean_types & CLEAN_TYPE_WEAK)) - qdel(src) - return - - strength = max(0, (strength - (RAD_BACKGROUND_RADIATION * 2))) - if(strength <= RAD_BACKGROUND_RADIATION) - qdel(src) - -#undef RAD_AMOUNT_LOW -#undef RAD_AMOUNT_MEDIUM -#undef RAD_AMOUNT_HIGH -#undef RAD_AMOUNT_EXTREME diff --git a/code/datums/elements/radiation_protected_clothing.dm b/code/datums/elements/radiation_protected_clothing.dm new file mode 100644 index 0000000000000..152ed26e26991 --- /dev/null +++ b/code/datums/elements/radiation_protected_clothing.dm @@ -0,0 +1,25 @@ +/// Marks the item as being radiation protected. +/// Adds the TRAIT_RADIATION_PROTECTED_CLOTHING trait, as well as adding an +/// extra bit to the examine descrpition. +/datum/element/radiation_protected_clothing + element_flags = ELEMENT_DETACH + +/datum/element/radiation_protected_clothing/Attach(datum/target) + . = ..() + + if (!isclothing(target)) + return ELEMENT_INCOMPATIBLE + + ADD_TRAIT(target, TRAIT_RADIATION_PROTECTED_CLOTHING, REF(src)) + RegisterSignal(target, COMSIG_PARENT_EXAMINE, .proc/on_examine) + +/datum/element/radiation_protected_clothing/Detach(datum/source, ...) + REMOVE_TRAIT(source, TRAIT_RADIATION_PROTECTED_CLOTHING, REF(src)) + UnregisterSignal(source, COMSIG_PARENT_EXAMINE) + + return ..() + +/datum/element/radiation_protected_clothing/proc/on_examine(datum/source, mob/user, list/examine_text) + SIGNAL_HANDLER + + examine_text += span_notice("A patch with a hazmat sign on the side suggests it would protect you from radiation.") diff --git a/code/datums/elements/radioactive.dm b/code/datums/elements/radioactive.dm new file mode 100644 index 0000000000000..b1a68a314a1db --- /dev/null +++ b/code/datums/elements/radioactive.dm @@ -0,0 +1,38 @@ +#define DELAY_BETWEEN_RADIATION_PULSES (3 SECONDS) + +/// This atom will regularly pulse radiation. +/// As this is only applied on uranium objects for now, this defaults to uranium constants. +/datum/element/radioactive + element_flags = ELEMENT_DETACH + + var/list/radioactive_objects = list() + +/datum/element/radioactive/New() + START_PROCESSING(SSdcs, src) + +/datum/element/radioactive/Attach(datum/target) + . = ..() + + radioactive_objects[target] = world.time + +/datum/element/radioactive/Detach(datum/source, ...) + radioactive_objects -= source + + return ..() + +/datum/element/radioactive/process(delta_time) + for (var/radioactive_object in radioactive_objects) + if (world.time - radioactive_objects[radioactive_object] < DELAY_BETWEEN_RADIATION_PULSES) + continue + + radiation_pulse( + radioactive_object, + max_range = 3, + threshold = RAD_LIGHT_INSULATION, + chance = URANIUM_IRRADIATION_CHANCE, + minimum_exposure_time = URANIUM_RADIATION_MINIMUM_EXPOSURE_TIME, + ) + + radioactive_objects[radioactive_object] = world.time + +#undef DELAY_BETWEEN_RADIATION_PULSES diff --git a/code/datums/looping_sounds/item_sounds.dm b/code/datums/looping_sounds/item_sounds.dm index 5b02eef9c4ce6..70a20aa56963b 100644 --- a/code/datums/looping_sounds/item_sounds.dm +++ b/code/datums/looping_sounds/item_sounds.dm @@ -1,41 +1,3 @@ -#define RAD_GEIGER_LOW 100 // Geiger counter sound thresholds -#define RAD_GEIGER_MEDIUM 500 -#define RAD_GEIGER_HIGH 1000 - -/datum/looping_sound/geiger - mid_sounds = list( - list('sound/items/geiger/low1.ogg'=1, 'sound/items/geiger/low2.ogg'=1, 'sound/items/geiger/low3.ogg'=1, 'sound/items/geiger/low4.ogg'=1), - list('sound/items/geiger/med1.ogg'=1, 'sound/items/geiger/med2.ogg'=1, 'sound/items/geiger/med3.ogg'=1, 'sound/items/geiger/med4.ogg'=1), - list('sound/items/geiger/high1.ogg'=1, 'sound/items/geiger/high2.ogg'=1, 'sound/items/geiger/high3.ogg'=1, 'sound/items/geiger/high4.ogg'=1), - list('sound/items/geiger/ext1.ogg'=1, 'sound/items/geiger/ext2.ogg'=1, 'sound/items/geiger/ext3.ogg'=1, 'sound/items/geiger/ext4.ogg'=1) - ) - mid_length = 2 - volume = 25 - var/last_radiation - -/datum/looping_sound/geiger/get_sound() - var/danger - switch(last_radiation) - if(RAD_BACKGROUND_RADIATION to RAD_GEIGER_LOW) - danger = 1 - if(RAD_GEIGER_LOW to RAD_GEIGER_MEDIUM) - danger = 2 - if(RAD_GEIGER_MEDIUM to RAD_GEIGER_HIGH) - danger = 3 - if(RAD_GEIGER_HIGH to INFINITY) - danger = 4 - else - return null - return ..(mid_sounds[danger]) - -/datum/looping_sound/geiger/stop() - . = ..() - last_radiation = 0 - -#undef RAD_GEIGER_LOW -#undef RAD_GEIGER_MEDIUM -#undef RAD_GEIGER_HIGH - /datum/looping_sound/reverse_bear_trap mid_sounds = list('sound/effects/clock_tick.ogg') mid_length = 3.5 diff --git a/code/datums/martial/krav_maga.dm b/code/datums/martial/krav_maga.dm index 32600b825d236..6ba7f71581320 100644 --- a/code/datums/martial/krav_maga.dm +++ b/code/datums/martial/krav_maga.dm @@ -217,4 +217,4 @@ siemens_coefficient = 0 permeability_coefficient = 0.05 strip_delay = 80 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 80, ACID = 50, STAMINA = 0, BLEED = 0) diff --git a/code/datums/materials/_material.dm b/code/datums/materials/_material.dm index 843a0999e4c27..27f4b46010a33 100644 --- a/code/datums/materials/_material.dm +++ b/code/datums/materials/_material.dm @@ -29,7 +29,7 @@ Simple datum which is instanced once per type and is used for every object of sa var/value_per_unit = 0 /* ///Armor modifiers, multiplies an items normal armor vars by these amounts. - var/armor_modifiers = list("melee" = 1, "bullet" = 1, "laser" = 1, "energy" = 1, "bomb" = 1, "bio" = 1, "rad" = 1, "fire" = 1, "acid" = 1) + var/armor_modifiers = list("melee" = 1, "bullet" = 1, "laser" = 1, "energy" = 1, "bomb" = 1, "bio" = 1, "fire" = 1, "acid" = 1) ///How beautiful is this material per unit var/beauty_modifier = 0 */ @@ -41,7 +41,7 @@ Simple datum which is instanced once per type and is used for every object of sa var/texture_layer_icon_state ///a cached icon for the texture filter var/cached_texture_filter_icon - + /datum/material/New() . = ..() diff --git a/code/datums/materials/alloys.dm b/code/datums/materials/alloys.dm index 40734febd327d..de24ff3a710d5 100644 --- a/code/datums/materials/alloys.dm +++ b/code/datums/materials/alloys.dm @@ -36,7 +36,7 @@ value_per_unit = 0.135 strength_modifier = 1.25 integrity_modifier = 1.5 // Heavy duty. - //armor_modifiers = list(MELEE = 1.4, BULLET = 1.4, LASER = 1.1, ENERGY = 1.1, BOMB = 1.5, BIO = 1, RAD = 1.5, FIRE = 1.1, ACID = 1) + //armor_modifiers = list(MELEE = 1.4, BULLET = 1.4, LASER = 1.1, ENERGY = 1.1, BOMB = 1.5, BIO = 1, FIRE = 1.1, ACID = 1) sheet_type = /obj/item/stack/sheet/plasteel categories = list(MAT_CATEGORY_RIGID=TRUE, MAT_CATEGORY_BASE_RECIPES=TRUE) composition = list(/datum/material/iron=1, /datum/material/plasma=1) @@ -69,7 +69,7 @@ value_per_unit = 0.225 strength_modifier = 0.9 // It's a lightweight alloy. integrity_modifier = 1.3 - //armor_modifiers = list(MELEE = 1.1, BULLET = 1.1, LASER = 1.4, ENERGY = 1.4, BOMB = 1.1, BIO = 1.2, RAD = 1.1, FIRE = 1.5, ACID = 1) + //armor_modifiers = list(MELEE = 1.1, BULLET = 1.1, LASER = 1.4, ENERGY = 1.4, BOMB = 1.1, BIO = 1.2, FIRE = 1.5, ACID = 1) sheet_type = /obj/item/stack/sheet/mineral/plastitanium categories = list(MAT_CATEGORY_RIGID=TRUE, MAT_CATEGORY_BASE_RECIPES=TRUE) composition = list(/datum/material/titanium=1, /datum/material/plasma=1) @@ -86,7 +86,7 @@ alpha = 150 init_flags = MATERIAL_INIT_MAPLOAD integrity_modifier = 0.5 - //armor_modifiers = list(MELEE = 0.8, BULLET = 0.8, LASER = 1.2, ENERGY = 1.2, BOMB = 0.3, BIO = 1.2, RAD = 1, FIRE = 2, ACID = 2) + //armor_modifiers = list(MELEE = 0.8, BULLET = 0.8, LASER = 1.2, ENERGY = 1.2, BOMB = 0.3, BIO = 1.2, FIRE = 2, ACID = 2) sheet_type = /obj/item/stack/sheet/plasmaglass //shard_type = /obj/item/shard/plasma value_per_unit = 0.075 @@ -104,7 +104,7 @@ greyscale_colors = "#cfbee096" alpha = 150 init_flags = MATERIAL_INIT_MAPLOAD - //armor_modifiers = list(MELEE = 1.2, BULLET = 1.2, LASER = 0.8, ENERGY = 0.8, BOMB = 0.5, BIO = 1.2, RAD = 1, FIRE = 0.8, ACID = 2) + //armor_modifiers = list(MELEE = 1.2, BULLET = 1.2, LASER = 0.8, ENERGY = 0.8, BOMB = 0.5, BIO = 1.2, FIRE = 0.8, ACID = 2) sheet_type = /obj/item/stack/sheet/titaniumglass //shard_type = /obj/item/shard value_per_unit = 0.04 @@ -123,7 +123,7 @@ alpha = 150 init_flags = MATERIAL_INIT_MAPLOAD integrity_modifier = 1.1 - //armor_modifiers = list(MELEE = 1.2, BULLET = 1.2, LASER = 1.2, ENERGY = 1.2, BOMB = 0.5, BIO = 1.2, RAD = 1, FIRE = 2, ACID = 2) + //armor_modifiers = list(MELEE = 1.2, BULLET = 1.2, LASER = 1.2, ENERGY = 1.2, BOMB = 0.5, BIO = 1.2, FIRE = 2, ACID = 2) sheet_type = /obj/item/stack/sheet/plastitaniumglass //shard_type = /obj/item/shard/plasma value_per_unit = 0.125 @@ -144,7 +144,7 @@ init_flags = MATERIAL_INIT_MAPLOAD strength_modifier = 1.5 // It's twice the density of plasteel and just as durable. Getting hit with it is going to HURT. integrity_modifier = 1.5 - //armor_modifiers = list(MELEE = 1.4, BULLET = 1.4, LASER = 1.2, ENERGY = 1.2, BOMB = 1.5, BIO = 1.2, RAD = 1.5, FIRE = 1.2, ACID = 1.2) + //armor_modifiers = list(MELEE = 1.4, BULLET = 1.4, LASER = 1.2, ENERGY = 1.2, BOMB = 1.5, BIO = 1.2, FIRE = 1.2, ACID = 1.2) sheet_type = /obj/item/stack/sheet/mineral/abductor value_per_unit = 0.4 categories = list(MAT_CATEGORY_RIGID=TRUE, MAT_CATEGORY_BASE_RECIPES=TRUE) diff --git a/code/datums/materials/basemats.dm b/code/datums/materials/basemats.dm index 94db9c8246f14..9ae6006754151 100644 --- a/code/datums/materials/basemats.dm +++ b/code/datums/materials/basemats.dm @@ -69,11 +69,19 @@ Unless you know what you're doing, only use the first three numbers. They're in /datum/material/uranium/on_applied(atom/source, amount, material_flags) . = ..() - source.AddComponent(/datum/component/radioactive, amount / 50, source, 0) //half-life of 0 because we keep on going. amount / 50 means 40 radiation per sheet. + // Uranium structures should irradiate, but not items, because item irradiation is a lot more annoying. + // For example, consider picking up uranium as a miner. + if (isitem(source)) + return + + source.AddElement(/datum/element/radioactive) /datum/material/uranium/on_removed(atom/source, amount, material_flags) . = ..() - qdel(source.GetComponent(/datum/component/radioactive)) + if (isitem(source)) + return + + source.RemoveElement(/datum/element/radioactive) ///Adds firestacks on hit (Still needs support to turn into gas on destruction) /datum/material/plasma diff --git a/code/game/gamemodes/clown_ops/clown_weapons.dm b/code/game/gamemodes/clown_ops/clown_weapons.dm index a7eb976c49c1a..c5eeab00dc1ee 100644 --- a/code/game/gamemodes/clown_ops/clown_weapons.dm +++ b/code/game/gamemodes/clown_ops/clown_weapons.dm @@ -17,7 +17,7 @@ desc = "advanced clown shoes that protect the wearer and render them nearly immune to slipping on their own peels. They also squeak at 100% capacity." clothing_flags = NOSLIP slowdown = SHOES_SLOWDOWN - armor = list(MELEE = 25, BULLET = 25, LASER = 25, ENERGY = 25, BOMB = 50, BIO = 10, RAD = 0, FIRE = 70, ACID = 50, STAMINA = 25, BLEED = 40) + armor = list(MELEE = 25, BULLET = 25, LASER = 25, ENERGY = 25, BOMB = 50, BIO = 10, FIRE = 70, ACID = 50, STAMINA = 25, BLEED = 40) strip_delay = 70 resistance_flags = NONE permeability_coefficient = 0.05 @@ -32,7 +32,7 @@ name = "mk-honk combat shoes" desc = "The culmination of years of clown combat research, these shoes leave a trail of chaos in their wake. They will slowly recharge themselves over time, or can be manually charged with bananium." slowdown = SHOES_SLOWDOWN - armor = list(MELEE = 25, BULLET = 25, LASER = 25, ENERGY = 25, BOMB = 50, BIO = 10, RAD = 0, FIRE = 70, ACID = 50, STAMINA = 25, BLEED = 40) + armor = list(MELEE = 25, BULLET = 25, LASER = 25, ENERGY = 25, BOMB = 50, BIO = 10, FIRE = 70, ACID = 50, STAMINA = 25, BLEED = 40) strip_delay = 70 resistance_flags = NONE permeability_coefficient = 0.05 @@ -294,7 +294,7 @@ base_icon_state = "darkhonker" max_integrity = 300 deflect_chance = 15 - armor = list(MELEE = 40, BULLET = 40, LASER = 50, ENERGY = 35, BOMB = 20, BIO = 0, RAD = 0, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 40, BULLET = 40, LASER = 50, ENERGY = 35, BOMB = 20, BIO = 0, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) max_temperature = 35000 operation_req_access = list(ACCESS_SYNDICATE) internals_req_access = list(ACCESS_SYNDICATE) diff --git a/code/game/gamemodes/gangs/dominator.dm b/code/game/gamemodes/gangs/dominator.dm index 7d9a88b0f97dd..0a05afa43cdb2 100644 --- a/code/game/gamemodes/gangs/dominator.dm +++ b/code/game/gamemodes/gangs/dominator.dm @@ -14,7 +14,7 @@ max_hit_damage = 30 integrity_failure = 0.33 move_resist = INFINITY - armor = list(MELEE = 20, BULLET = 50, LASER = 50, ENERGY = 50, BOMB = 10, BIO = 100, RAD = 100, FIRE = 10, ACID = 70, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 20, BULLET = 50, LASER = 50, ENERGY = 50, BOMB = 10, BIO = 100, FIRE = 10, ACID = 70, STAMINA = 0, BLEED = 0) var/datum/team/gang/gang var/operating = FALSE //false=standby or broken, true=takeover var/warned = FALSE //if this device has set off the warning at <3 minutes yet diff --git a/code/game/gamemodes/gangs/gang_items.dm b/code/game/gamemodes/gangs/gang_items.dm index 519d9a350b541..1c1e3f6c50b47 100644 --- a/code/game/gamemodes/gangs/gang_items.dm +++ b/code/game/gamemodes/gangs/gang_items.dm @@ -153,11 +153,11 @@ var/obj/item/storage/box/armor_box = new (get_turf(user)) var/obj/item/clothing/suit/suit = new gang.suit(armor_box) - suit.armor = suit.armor.setRating(melee = 20, bullet = 35, laser = 10, energy = 10, bomb = 30, bio = 0, rad = 0, fire = 30, acid = 30) + suit.armor = suit.armor.setRating(melee = 20, bullet = 35, laser = 10, energy = 10, bomb = 30, bio = 0, fire = 30, acid = 30) suit.desc += " Tailored for the [gang.name] Gang to offer the wearer moderate protection against ballistics and physical trauma." var/obj/item/clothing/head/hat = new gang.hat(armor_box) - hat.armor = hat.armor.setRating(melee = 20, bullet = 35, laser = 10, energy = 10, bomb = 30, bio = 0, rad = 0, fire = 30, acid = 30) + hat.armor = hat.armor.setRating(melee = 20, bullet = 35, laser = 10, energy = 10, bomb = 30, bio = 0, fire = 30, acid = 30) hat.desc += " Tailored for the [gang.name] Gang to offer the wearer moderate protection against ballistics and physical trauma." user.put_in_hands(armor_box) diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index c8de830c096ed..d671d8f253585 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -147,7 +147,7 @@ Class Procs: /obj/machinery/Initialize(mapload) if(!armor) - armor = list(MELEE = 25, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 70, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 25, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 70, STAMINA = 0, BLEED = 0) . = ..() GLOB.machines += src diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm index 5de006e590189..fe82514f14056 100644 --- a/code/game/machinery/ai_slipper.dm +++ b/code/game/machinery/ai_slipper.dm @@ -6,7 +6,7 @@ layer = PROJECTILE_HIT_THRESHOLD_LAYER plane = FLOOR_PLANE max_integrity = 200 - armor = list(MELEE = 50, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 30, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 50, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 0, BIO = 0, FIRE = 50, ACID = 30, STAMINA = 0, BLEED = 0) var/uses = 20 var/cooldown = 0 diff --git a/code/game/machinery/airlock_cycle_control.dm b/code/game/machinery/airlock_cycle_control.dm index eac10a08fbc9f..1a3882783be1a 100644 --- a/code/game/machinery/airlock_cycle_control.dm +++ b/code/game/machinery/airlock_cycle_control.dm @@ -53,7 +53,7 @@ req_access = list(ACCESS_ATMOSPHERICS) max_integrity = 250 integrity_failure = 0.2 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 100, BOMB = 0, BIO = 100, RAD = 100, FIRE = 90, ACID = 30, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 100, BOMB = 0, BIO = 100, FIRE = 90, ACID = 30, STAMINA = 0, BLEED = 0) resistance_flags = FIRE_PROOF layer = ABOVE_WINDOW_LAYER diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index 79f53e53dc643..bcf31805824d9 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -11,7 +11,7 @@ var/device_type = null var/id = null var/initialized_button = 0 - armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 50, BOMB = 10, BIO = 100, RAD = 100, FIRE = 90, ACID = 70, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 50, BOMB = 10, BIO = 100, FIRE = 90, ACID = 70, STAMINA = 0, BLEED = 0) use_power = IDLE_POWER_USE idle_power_usage = 2 resistance_flags = LAVA_PROOF | FIRE_PROOF diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 829dad51359f0..e90264630a3f2 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -13,7 +13,7 @@ layer = WALL_OBJ_LAYER resistance_flags = FIRE_PROOF - armor = list(MELEE = 50, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 0, BIO = 0, RAD = 0, FIRE = 90, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 50, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 0, BIO = 0, FIRE = 90, ACID = 50, STAMINA = 0, BLEED = 0) max_integrity = 100 integrity_failure = 0.5 var/default_camera_icon = "camera" //the camera's base icon used by update_icon - icon_state is primarily used for mapping display purposes. diff --git a/code/game/machinery/computer/_computer.dm b/code/game/machinery/computer/_computer.dm index ebaa93ed3ada6..525acb56f4072 100644 --- a/code/game/machinery/computer/_computer.dm +++ b/code/game/machinery/computer/_computer.dm @@ -12,7 +12,7 @@ active_power_usage = 300 max_integrity = 200 integrity_failure = 0.5 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 40, ACID = 20, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 40, ACID = 20, STAMINA = 0, BLEED = 0) clicksound = "keyboard" light_system = STATIC_LIGHT light_range = 1 diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index b19a591943781..c205806191deb 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -304,7 +304,7 @@ anim_parts = "left=-13,0;right=13,0" normal_integrity = 150 damage_deflection = 5 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) /obj/machinery/door/airlock/bronze/seethru assemblytype = /obj/structure/door_assembly/door_assembly_bronze/seethru @@ -582,7 +582,7 @@ desc = "An airlock hastily corrupted by blood magic, it is unusually brittle in this state." normal_integrity = 150 damage_deflection = 5 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) ////////////////////////////////// /* diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index b303eb31cd972..12a44fbacf274 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -12,7 +12,7 @@ pass_flags_self = PASSDOORS z_flags = Z_BLOCK_IN_DOWN | Z_BLOCK_IN_UP max_integrity = 350 - armor = list(MELEE = 30, BULLET = 30, LASER = 20, ENERGY = 20, BOMB = 10, BIO = 100, RAD = 100, FIRE = 80, ACID = 70, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 30, BULLET = 30, LASER = 20, ENERGY = 20, BOMB = 10, BIO = 100, FIRE = 80, ACID = 70, STAMINA = 0, BLEED = 0) CanAtmosPass = ATMOS_PASS_DENSITY flags_1 = PREVENT_CLICK_UNDER_1 ricochet_chance_mod = 0.8 diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index b116e9250aa2b..0e8e9a732d7b4 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -24,7 +24,7 @@ layer = BELOW_OPEN_DOOR_LAYER closingLayer = CLOSED_FIREDOOR_LAYER assemblytype = /obj/structure/firelock_frame - armor = list(MELEE = 30, BULLET = 30, LASER = 20, ENERGY = 20, BOMB = 10, BIO = 100, RAD = 100, FIRE = 95, ACID = 70, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 30, BULLET = 30, LASER = 20, ENERGY = 20, BOMB = 10, BIO = 100, FIRE = 95, ACID = 70, STAMINA = 0, BLEED = 0) interaction_flags_machine = INTERACT_MACHINE_WIRES_IF_OPEN | INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OPEN_SILICON | INTERACT_MACHINE_REQUIRES_SILICON | INTERACT_MACHINE_OPEN air_tight = TRUE open_speed = 2 diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm index f19e832377097..167b8c18eba75 100644 --- a/code/game/machinery/doors/poddoor.dm +++ b/code/game/machinery/doors/poddoor.dm @@ -11,7 +11,7 @@ heat_proof = TRUE safe = FALSE max_integrity = 600 - armor = list(MELEE = 50, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 50, BIO = 100, RAD = 100, FIRE = 100, ACID = 70, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 50, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 50, BIO = 100, FIRE = 100, ACID = 70, STAMINA = 0, BLEED = 0) resistance_flags = FIRE_PROOF damage_deflection = 70 var/datum/crafting_recipe/recipe_type = /datum/crafting_recipe/blast_doors diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index c531f9d1fe7e6..ddba9dc19bd5d 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -9,7 +9,7 @@ var/base_state = "left" max_integrity = 150 //If you change this, consider changing ../door/window/brigdoor/ max_integrity at the bottom of this .dm file integrity_failure = 0 - armor = list(MELEE = 20, BULLET = 50, LASER = 50, ENERGY = 50, BOMB = 10, BIO = 100, RAD = 100, FIRE = 70, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 20, BULLET = 50, LASER = 50, ENERGY = 50, BOMB = 10, BIO = 100, FIRE = 70, ACID = 100, STAMINA = 0, BLEED = 0) visible = FALSE flags_1 = ON_BORDER_1 opacity = FALSE @@ -437,7 +437,7 @@ shards = 0 rods = 0 max_integrity = 50 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 10, BIO = 100, RAD = 100, FIRE = 70, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 10, BIO = 100, FIRE = 70, ACID = 100, STAMINA = 0, BLEED = 0) resistance_flags = FIRE_PROOF | ACID_PROOF operationdelay = 10 var/made_glow = FALSE diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index d429b35023c00..473078adfcafe 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -20,7 +20,7 @@ icon_state = "fire0" max_integrity = 250 integrity_failure = 0.4 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, RAD = 100, FIRE = 90, ACID = 30, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 90, ACID = 30, STAMINA = 0, BLEED = 0) use_power = IDLE_POWER_USE idle_power_usage = 2 active_power_usage = 6 diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 45e5e116c44e1..d4cf4a5f45dc8 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -42,7 +42,7 @@ Possible to do for anyone motivated enough: idle_power_usage = 5 active_power_usage = 100 max_integrity = 300 - armor = list(MELEE = 50, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 0, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 50, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 0, BIO = 0, FIRE = 50, ACID = 0, STAMINA = 0, BLEED = 0) circuit = /obj/item/circuitboard/machine/holopad var/list/masters //List of living mobs that use the holopad var/list/holorays //Holoray-mob link. diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index dcce9b812b5a1..7dd9406e1eabc 100644 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -10,7 +10,7 @@ active_power_usage = 4 max_integrity = 300 circuit = /obj/item/circuitboard/machine/igniter - armor = list(MELEE = 50, BULLET = 30, LASER = 70, ENERGY = 50, BOMB = 20, BIO = 0, RAD = 0, FIRE = 100, ACID = 70, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 50, BULLET = 30, LASER = 70, ENERGY = 50, BOMB = 20, BIO = 0, FIRE = 100, ACID = 70, STAMINA = 0, BLEED = 0) resistance_flags = FIRE_PROOF var/id = null var/on = FALSE diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index 35e77322e7adc..f4216dcca7018 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -9,7 +9,7 @@ desc = "A radio beacon used for bot navigation." layer = UNDER_CATWALK max_integrity = 500 - armor = list(MELEE = 70, BULLET = 70, LASER = 70, ENERGY = 70, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 80, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 70, BULLET = 70, LASER = 70, ENERGY = 70, BOMB = 0, BIO = 0, FIRE = 80, ACID = 80, STAMINA = 0, BLEED = 0) var/open = FALSE // true if cover is open var/locked = TRUE // true if controls are locked diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index e6cee442b0401..9c8aaa3458909 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -39,7 +39,7 @@ //the turret's health max_integrity = 160 integrity_failure = 0.5 - armor = list(MELEE = 50, BULLET = 30, LASER = 30, ENERGY = 30, BOMB = 30, BIO = 0, RAD = 0, FIRE = 90, ACID = 90, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 50, BULLET = 30, LASER = 30, ENERGY = 30, BOMB = 30, BIO = 0, FIRE = 90, ACID = 90, STAMINA = 0, BLEED = 0) //if the turret's behaviour control access is locked var/locked = TRUE @@ -762,7 +762,7 @@ DEFINE_BUFFER_HANDLER(/obj/machinery/porta_turret) lethal_projectile = /obj/projectile/bullet/p50/penetrator/shuttle lethal_projectile_sound = 'sound/weapons/gunshot_smg.ogg' stun_projectile_sound = 'sound/weapons/gunshot_smg.ogg' - armor = list(MELEE = 50, BULLET = 30, LASER = 30, ENERGY = 30, BOMB = 80, BIO = 0, RAD = 0, FIRE = 90, ACID = 90, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 50, BULLET = 30, LASER = 30, ENERGY = 30, BOMB = 80, BIO = 0, FIRE = 90, ACID = 90, STAMINA = 0, BLEED = 0) /obj/machinery/porta_turret/syndicate/shuttle/target(atom/movable/target) if(target) diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index 0e359250bb1fe..c509691b0be4b 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -76,7 +76,7 @@ GLOBAL_LIST_EMPTY(req_console_ckey_departments) var/anon_tips_receiver = FALSE // Can you relay information to this console? var/auth_id = "Unknown" //Will contain the name and and job of the person who verified it max_integrity = 300 - armor = list(MELEE = 70, BULLET = 30, LASER = 30, ENERGY = 30, BOMB = 0, BIO = 0, RAD = 0, FIRE = 90, ACID = 90, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 70, BULLET = 30, LASER = 30, ENERGY = 30, BOMB = 0, BIO = 0, FIRE = 90, ACID = 90, STAMINA = 0, BLEED = 0) light_color = LIGHT_COLOR_GREEN light_power = 1.5 diff --git a/code/game/machinery/shuttle/shuttle_heater.dm b/code/game/machinery/shuttle/shuttle_heater.dm index 1c1a9330a5d21..f05c0cf0b3ada 100644 --- a/code/game/machinery/shuttle/shuttle_heater.dm +++ b/code/game/machinery/shuttle/shuttle_heater.dm @@ -23,7 +23,7 @@ density = TRUE z_flags = Z_BLOCK_IN_DOWN | Z_BLOCK_IN_UP max_integrity = 400 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 100, BOMB = 0, BIO = 100, RAD = 100, FIRE = 100, ACID = 30, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 100, BOMB = 0, BIO = 100, FIRE = 100, ACID = 30, STAMINA = 0, BLEED = 0) layer = OBJ_LAYER showpipe = TRUE diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index 5df43092dea74..78c0c12fed830 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -13,7 +13,7 @@ name = "space heater" desc = "Made by Space Amish using traditional space techniques, this heater/cooler is guaranteed not to set the station on fire. Warranty void if used in engines." max_integrity = 250 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, RAD = 100, FIRE = 80, ACID = 10, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 80, ACID = 10, STAMINA = 0, BLEED = 0) circuit = /obj/item/circuitboard/machine/space_heater //We don't use area power, we always use the cell use_power = NO_POWER_USE diff --git a/code/game/machinery/telecomms/machines/message_server.dm b/code/game/machinery/telecomms/machines/message_server.dm index 8879663f62add..fe2608c2c8c65 100644 --- a/code/game/machinery/telecomms/machines/message_server.dm +++ b/code/game/machinery/telecomms/machines/message_server.dm @@ -14,7 +14,7 @@ use_power = IDLE_POWER_USE idle_power_usage = 10 active_power_usage = 100 - armor = list(MELEE = 25, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 70, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 25, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 70, STAMINA = 0, BLEED = 0) var/obj/item/stored investigate_flags = ADMIN_INVESTIGATE_TARGET diff --git a/code/game/objects/items/RCD.dm b/code/game/objects/items/RCD.dm index 64400f96130c8..f73edfbdff0c0 100644 --- a/code/game/objects/items/RCD.dm +++ b/code/game/objects/items/RCD.dm @@ -24,7 +24,7 @@ RLD w_class = WEIGHT_CLASS_LARGE custom_materials = list(/datum/material/iron=100000) req_access_txt = "11" - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 100, ACID = 50, STAMINA = 0, BLEED = 0) resistance_flags = FIRE_PROOF var/datum/effect_system/spark_spread/spark_system var/matter = 0 diff --git a/code/game/objects/items/RPD.dm b/code/game/objects/items/RPD.dm index 413c3f36b725b..9569bbefdf904 100644 --- a/code/game/objects/items/RPD.dm +++ b/code/game/objects/items/RPD.dm @@ -214,7 +214,7 @@ GLOBAL_LIST_INIT(fluid_duct_recipes, list( w_class = WEIGHT_CLASS_LARGE slot_flags = ITEM_SLOT_BELT custom_materials = list(/datum/material/iron=75000, /datum/material/glass=37500) - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 100, ACID = 50, STAMINA = 0, BLEED = 0) resistance_flags = FIRE_PROOF var/datum/effect_system/spark_spread/spark_system var/working = 0 diff --git a/code/game/objects/items/RSF.dm b/code/game/objects/items/RSF.dm index b29a67d9a7b2b..816c11c00af38 100644 --- a/code/game/objects/items/RSF.dm +++ b/code/game/objects/items/RSF.dm @@ -14,7 +14,7 @@ RSF density = FALSE anchored = FALSE item_flags = NOBLUDGEON - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) var/matter = 0 var/mode = 1 w_class = WEIGHT_CLASS_NORMAL diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index a743677e5141e..28be237639f2f 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -164,7 +164,7 @@ lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' slot_flags = ITEM_SLOT_ID - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) resistance_flags = FIRE_PROOF | ACID_PROOF var/list/access = list() var/registered_name// The name registered_name on the card @@ -849,7 +849,7 @@ update_label("John Doe", "Clowny") name = "paper nametag" desc = "Some spare papers taped into a vague card shape, with a name scribbled on it. Seems trustworthy." icon_state = "paper" - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 50, STAMINA = 0, BLEED = 0) resistance_flags = null // removes all resistance because its a piece of paper access = list() assignment = "Unknown" diff --git a/code/game/objects/items/crab17.dm b/code/game/objects/items/crab17.dm index 60b1769475811..79a660b380815 100644 --- a/code/game/objects/items/crab17.dm +++ b/code/game/objects/items/crab17.dm @@ -34,7 +34,7 @@ icon = 'icons/obj/money_machine.dmi' icon_state = "bogdanoff" layer = TABLE_LAYER //So that the crate inside doesn't appear underneath - armor = list(MELEE = 30, BULLET = 50, LASER = 50, ENERGY = 100, BOMB = 100, BIO = 0, RAD = 0, FIRE = 100, ACID = 80, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 30, BULLET = 50, LASER = 50, ENERGY = 100, BOMB = 100, BIO = 0, FIRE = 100, ACID = 80, STAMINA = 0, BLEED = 0) density = TRUE pixel_z = -8 layer = LARGE_MOB_LAYER diff --git a/code/game/objects/items/debug_items.dm b/code/game/objects/items/debug_items.dm index dd9f63ee12241..a55e8fcf9da50 100644 --- a/code/game/objects/items/debug_items.dm +++ b/code/game/objects/items/debug_items.dm @@ -200,7 +200,7 @@ desc = "very powerful." icon_state = "hardsuit0-syndielite" hardsuit_type = "syndielite" - armor = list(MELEE = 300, BULLET = 300, LASER = 300, ENERGY = 300, BOMB = 300, BIO = 300, RAD = 300, FIRE = 300, ACID = 300, STAMINA = 300) // prevent armor penetration + armor = list(MELEE = 300, BULLET = 300, LASER = 300, ENERGY = 300, BOMB = 300, BIO = 300, FIRE = 300, ACID = 300, STAMINA = 300) // prevent armor penetration strip_delay = 6000 heat_protection = HEAD max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT @@ -213,7 +213,7 @@ hardsuit_type = "syndielite" w_class = WEIGHT_CLASS_TINY helmettype = /obj/item/clothing/head/helmet/space/hardsuit/debug - armor = list(MELEE = 300, BULLET = 300, LASER = 300, ENERGY = 300, BOMB = 300, BIO = 300, RAD = 300, FIRE = 300, ACID = 300, STAMINA = 300) // prevent armor penetration + armor = list(MELEE = 300, BULLET = 300, LASER = 300, ENERGY = 300, BOMB = 300, BIO = 300, FIRE = 300, ACID = 300, STAMINA = 300) // prevent armor penetration gas_transfer_coefficient = 0 permeability_coefficient = 0 siemens_coefficient = 0 @@ -235,7 +235,7 @@ item_state = "holdingpack" resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF item_flags = NO_MAT_REDEMPTION - armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 100, BIO = 100, RAD = 100, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 100, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) /obj/item/storage/backpack/debug/ComponentInitialize() . = ..() diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index ad4d2dccb00e1..b3eea0c8c9553 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -14,7 +14,7 @@ throwforce = 6 w_class = WEIGHT_CLASS_BULKY actions_types = list(/datum/action/item_action/toggle_paddles) - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 50, STAMINA = 0, BLEED = 0) var/obj/item/shockpaddles/paddle_type = /obj/item/shockpaddles var/on = FALSE //if the paddles are equipped (1) or on the defib (0) diff --git a/code/game/objects/items/deployable/barricade.dm b/code/game/objects/items/deployable/barricade.dm index 38688c4cc8eed..3aac72b95174e 100644 --- a/code/game/objects/items/deployable/barricade.dm +++ b/code/game/objects/items/deployable/barricade.dm @@ -194,7 +194,7 @@ icon_state = "barrier1" max_integrity = 180 proj_pass_rate = 20 - armor = list(MELEE = 10, BULLET = 50, LASER = 50, ENERGY = 50, BOMB = 10, BIO = 100, RAD = 100, FIRE = 10, ACID = 0, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 10, BULLET = 50, LASER = 50, ENERGY = 50, BOMB = 10, BIO = 100, FIRE = 10, ACID = 0, STAMINA = 0, BLEED = 0) req_access = list(ACCESS_SECURITY) pickup_damaged = FALSE locked_down = TRUE diff --git a/code/game/objects/items/devices/forcefieldprojector.dm b/code/game/objects/items/devices/forcefieldprojector.dm index 7c6d8c1798069..fd283cc042c4a 100644 --- a/code/game/objects/items/devices/forcefieldprojector.dm +++ b/code/game/objects/items/devices/forcefieldprojector.dm @@ -87,7 +87,7 @@ mouse_opacity = MOUSE_OPACITY_OPAQUE resistance_flags = INDESTRUCTIBLE CanAtmosPass = ATMOS_PASS_DENSITY - armor = list(MELEE = 0, BULLET = 25, LASER = 50, ENERGY = 50, BOMB = 25, BIO = 100, RAD = 100, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 25, LASER = 50, ENERGY = 50, BOMB = 25, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) var/obj/item/forcefield_projector/generator /obj/structure/projected_forcefield/Initialize(mapload, obj/item/forcefield_projector/origin) diff --git a/code/game/objects/items/dualsaber.dm b/code/game/objects/items/dualsaber.dm index 758e005962151..97b721ec7c2eb 100644 --- a/code/game/objects/items/dualsaber.dm +++ b/code/game/objects/items/dualsaber.dm @@ -27,7 +27,7 @@ block_sound = 'sound/weapons/egloves.ogg' block_flags = BLOCKING_ACTIVE | BLOCKING_NASTY | BLOCKING_PROJECTILE max_integrity = 200 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 70, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 100, ACID = 70, STAMINA = 0, BLEED = 0) resistance_flags = FIRE_PROOF light_system = MOVABLE_LIGHT light_range = 6 diff --git a/code/game/objects/items/fireaxe.dm b/code/game/objects/items/fireaxe.dm index 4a5a13943e8de..e3d34d80891a4 100644 --- a/code/game/objects/items/fireaxe.dm +++ b/code/game/objects/items/fireaxe.dm @@ -18,7 +18,7 @@ sharpness = IS_SHARP bleed_force = BLEED_CUT max_integrity = 200 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 30, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 100, ACID = 30, STAMINA = 0, BLEED = 0) resistance_flags = FIRE_PROOF item_flags = ISWEAPON var/icon_prefix = "fireaxe" diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index f10620228adfb..ad97336305d2b 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -26,7 +26,7 @@ throw_range = 5 custom_materials = list(/datum/material/iron=500) breakouttime = 1 MINUTES - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 50, STAMINA = 0, BLEED = 0) var/cuffsound = 'sound/weapons/handcuffs.ogg' var/trashtype = null //for disposable cuffs diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm index 9949cd605d231..343af602e3eec 100644 --- a/code/game/objects/items/kitchen.dm +++ b/code/game/objects/items/kitchen.dm @@ -29,7 +29,7 @@ attack_verb_continuous = list("attacks", "stabs", "pokes") attack_verb_simple = list("attack", "stab", "poke") hitsound = 'sound/weapons/bladeslice.ogg' - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 30, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 30, STAMINA = 0, BLEED = 0) var/datum/reagent/forkload //used to eat omelette /obj/item/kitchen/fork/suicide_act(mob/living/carbon/user) diff --git a/code/game/objects/items/knives.dm b/code/game/objects/items/knives.dm index f62317ac872de..e50e6936a0e49 100644 --- a/code/game/objects/items/knives.dm +++ b/code/game/objects/items/knives.dm @@ -20,7 +20,7 @@ attack_verb_simple = list("slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut") sharpness = IS_SHARP_ACCURATE bleed_force = BLEED_CUT - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 50) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 50) var/bayonet = FALSE //Can this be attached to a gun? //wound_bonus = 5 //bare_wound_bonus = 15 @@ -160,7 +160,7 @@ custom_materials = list() attack_verb_continuous = list("shanks", "shivs") attack_verb_simple = list("shank", "shiv") - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) // Shank - Makeshift weapon that can embed on throw /obj/item/knife/shank diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm index 054c9f0083f01..4cf87865de234 100644 --- a/code/game/objects/items/melee/energy.dm +++ b/code/game/objects/items/melee/energy.dm @@ -3,7 +3,7 @@ hitsound_on = 'sound/weapons/blade1.ogg' heat = 3500 max_integrity = 200 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 30, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 100, ACID = 30, STAMINA = 0, BLEED = 0) resistance_flags = FIRE_PROOF light_system = MOVABLE_LIGHT light_range = 3 diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 6d4c517ea8efe..3a8d75dd4122d 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -149,7 +149,7 @@ lefthand_file = null righthand_file = null block_power = 60 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 100) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 100, ACID = 100) /obj/item/melee/sabre/mime/on_exit_storage(datum/component/storage/concrete/R) var/obj/item/storage/belt/sabre/mime/M = R.real_location() diff --git a/code/game/objects/items/pitchfork.dm b/code/game/objects/items/pitchfork.dm index 8cc87560fcb22..1798c49540bde 100644 --- a/code/game/objects/items/pitchfork.dm +++ b/code/game/objects/items/pitchfork.dm @@ -16,7 +16,7 @@ sharpness = IS_SHARP bleed_force = BLEED_CUT max_integrity = 200 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 30, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 100, ACID = 30, STAMINA = 0, BLEED = 0) resistance_flags = FIRE_PROOF /obj/item/pitchfork/ComponentInitialize() diff --git a/code/game/objects/items/pneumaticCannon.dm b/code/game/objects/items/pneumaticCannon.dm index 55fe304b9fa8d..3e50090fc46b4 100644 --- a/code/game/objects/items/pneumaticCannon.dm +++ b/code/game/objects/items/pneumaticCannon.dm @@ -15,7 +15,7 @@ item_state = "bulldog" lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi' - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 60, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 60, ACID = 50, STAMINA = 0, BLEED = 0) var/maxWeightClass = 20 //The max weight of items that can fit into the cannon var/loadedWeightClass = 0 //The weight of items currently in the cannon var/obj/item/tank/internals/tank = null //The gas tank that is drawn from to fire things diff --git a/code/game/objects/items/powerfist.dm b/code/game/objects/items/powerfist.dm index f558447a11618..b47431380f49b 100644 --- a/code/game/objects/items/powerfist.dm +++ b/code/game/objects/items/powerfist.dm @@ -14,7 +14,7 @@ throw_range = 7 w_class = WEIGHT_CLASS_NORMAL item_flags = ISWEAPON - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 40, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 100, ACID = 40, STAMINA = 0, BLEED = 0) resistance_flags = FIRE_PROOF var/click_delay = 1.5 var/fisto_setting = 1 diff --git a/code/game/objects/items/religion.dm b/code/game/objects/items/religion.dm index 30a5b22125a64..46838cd44f9aa 100644 --- a/code/game/objects/items/religion.dm +++ b/code/game/objects/items/religion.dm @@ -298,7 +298,7 @@ desc = "Metal boots, they look heavy." icon_state = "crusader" w_class = WEIGHT_CLASS_NORMAL - armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 40, BOMB = 60, BIO = 0, RAD = 0, FIRE = 60, ACID = 60, STAMINA = 30, BLEED = 60) //does this even do anything on boots? + armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 40, BOMB = 60, BIO = 0, FIRE = 60, ACID = 60, STAMINA = 30, BLEED = 60) //does this even do anything on boots? clothing_flags = NOSLIP cold_protection = FEET min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT diff --git a/code/game/objects/items/singularityhammer.dm b/code/game/objects/items/singularityhammer.dm index ad2ae95a1219a..c7b0524babfc2 100644 --- a/code/game/objects/items/singularityhammer.dm +++ b/code/game/objects/items/singularityhammer.dm @@ -14,7 +14,7 @@ throw_range = 1 w_class = WEIGHT_CLASS_HUGE item_flags = ISWEAPON - armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 0, BOMB = 50, BIO = 0, RAD = 0, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 0, BOMB = 50, BIO = 0, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) resistance_flags = FIRE_PROOF | ACID_PROOF force_string = "LORD SINGULOTH HIMSELF" var/charged = 5 diff --git a/code/game/objects/items/spear.dm b/code/game/objects/items/spear.dm index ae7aaa4f2a6aa..1c65f2df40317 100644 --- a/code/game/objects/items/spear.dm +++ b/code/game/objects/items/spear.dm @@ -21,7 +21,7 @@ sharpness = IS_SHARP bleed_force = BLEED_CUT max_integrity = 200 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 30, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 30, STAMINA = 0, BLEED = 0) var/war_cry = "AAAAARGH!!!" var/icon_prefix = "spearglass" diff --git a/code/game/objects/items/stacks/sheets/mineral/glass.dm b/code/game/objects/items/stacks/sheets/mineral/glass.dm index 80f392130647d..dd96b39d42cd3 100644 --- a/code/game/objects/items/stacks/sheets/mineral/glass.dm +++ b/code/game/objects/items/stacks/sheets/mineral/glass.dm @@ -17,7 +17,7 @@ icon_state = "sheet-glass" item_state = "sheet-glass" mats_per_unit = list(/datum/material/glass=MINERAL_MATERIAL_AMOUNT) - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 100, STAMINA = 0, BLEED = 0) resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/glass grind_results = list(/datum/reagent/silicon = 20) @@ -70,7 +70,7 @@ icon_state = "sheet-rglass" item_state = "sheet-rglass" custom_materials = list(/datum/material/iron=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass=MINERAL_MATERIAL_AMOUNT) - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 70, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 70, ACID = 100, STAMINA = 0, BLEED = 0) resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/rglass grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/iron = 10) @@ -115,7 +115,7 @@ item_state = "sheet-pglass" mats_per_unit = list(/datum/material/alloy/plasmaglass=MINERAL_MATERIAL_AMOUNT) material_type = /datum/material/alloy/plasmaglass - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 75, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 75, ACID = 100, STAMINA = 0, BLEED = 0) resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/plasmaglass grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/toxin/plasma = 10) @@ -152,7 +152,7 @@ icon_state = "sheet-prglass" item_state = "sheet-prglass" mats_per_unit = list(/datum/material/alloy/plasmaglass=MINERAL_MATERIAL_AMOUNT, /datum/material/iron = MINERAL_MATERIAL_AMOUNT * 0.5) - armor = list(MELEE = 20, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 20, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 80, ACID = 100, STAMINA = 0, BLEED = 0) resistance_flags = ACID_PROOF material_flags = NONE merge_type = /obj/item/stack/sheet/plasmarglass @@ -173,7 +173,7 @@ item_state = "sheet-titaniumglass" mats_per_unit = list(/datum/material/alloy/titaniumglass=MINERAL_MATERIAL_AMOUNT) material_type = /datum/material/alloy/titaniumglass - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 80, ACID = 100, STAMINA = 0, BLEED = 0) resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/titaniumglass @@ -189,7 +189,7 @@ icon_state = "sheet-plastitaniumglass" item_state = "sheet-plastitaniumglass" mats_per_unit = list(/datum/material/titanium=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/plasma=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass=MINERAL_MATERIAL_AMOUNT) - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 80, ACID = 100, STAMINA = 0, BLEED = 0) resistance_flags = ACID_PROOF material_flags = NONE merge_type = /obj/item/stack/sheet/plastitaniumglass @@ -215,7 +215,7 @@ attack_verb_simple = list("stab", "slash", "slice", "cut") hitsound = 'sound/weapons/bladeslice.ogg' resistance_flags = ACID_PROOF - armor = list(MELEE = 100, BULLET = 0, LASER = 0, ENERGY = 100, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 100, BULLET = 0, LASER = 0, ENERGY = 100, BOMB = 0, BIO = 0, FIRE = 50, ACID = 100, STAMINA = 0, BLEED = 0) max_integrity = 40 sharpness = IS_SHARP bleed_force = BLEED_SURFACE diff --git a/code/game/objects/items/stacks/sheets/mineral/metals.dm b/code/game/objects/items/stacks/sheets/mineral/metals.dm index cdcb2c53bd51d..7807b19b771b2 100644 --- a/code/game/objects/items/stacks/sheets/mineral/metals.dm +++ b/code/game/objects/items/stacks/sheets/mineral/metals.dm @@ -60,7 +60,7 @@ Metals Sheets material_type = /datum/material/alloy/plasteel throwforce = 10 flags_1 = CONDUCT_1 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 80, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 100, ACID = 80, STAMINA = 0, BLEED = 0) resistance_flags = FIRE_PROOF merge_type = /obj/item/stack/sheet/plasteel grind_results = list(/datum/reagent/iron = 20, /datum/reagent/toxin/plasma = 20) diff --git a/code/game/objects/items/stacks/sheets/organic/wood.dm b/code/game/objects/items/stacks/sheets/organic/wood.dm index 9219242ab69fe..aa80eb22196ca 100644 --- a/code/game/objects/items/stacks/sheets/organic/wood.dm +++ b/code/game/objects/items/stacks/sheets/organic/wood.dm @@ -18,7 +18,7 @@ Woods Sheets icon = 'icons/obj/stacks/organic.dmi' mats_per_unit = list(/datum/material/wood=MINERAL_MATERIAL_AMOUNT) sheettype = "wood" - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 0, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 0, STAMINA = 0, BLEED = 0) resistance_flags = FLAMMABLE merge_type = /obj/item/stack/sheet/wood material_type = /datum/material/wood @@ -39,7 +39,7 @@ Woods Sheets icon = 'icons/obj/stacks/organic.dmi' force = 10 throwforce = 10 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 0, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 0, STAMINA = 0, BLEED = 0) resistance_flags = FLAMMABLE merge_type = /obj/item/stack/sheet/bamboo grind_results = list("carbon" = 5) diff --git a/code/game/objects/items/stacks/tiles/tile_iron.dm b/code/game/objects/items/stacks/tiles/tile_iron.dm index 45a4781f85605..fb4d68f8fe93a 100644 --- a/code/game/objects/items/stacks/tiles/tile_iron.dm +++ b/code/game/objects/items/stacks/tiles/tile_iron.dm @@ -10,7 +10,7 @@ throwforce = 10 flags_1 = CONDUCT_1 turf_type = /turf/open/floor/iron - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 70, STAMINA = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 100, ACID = 70, STAMINA = 0) resistance_flags = FIRE_PROOF matter_amount = 1 cost = 125 diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index 413f29af2861d..da20e4b57dd92 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -45,7 +45,7 @@ item_state = "holdingpack" resistance_flags = FIRE_PROOF item_flags = NO_MAT_REDEMPTION - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 60, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 60, ACID = 50, STAMINA = 0, BLEED = 0) component_type = /datum/component/storage/concrete/bluespace/bag_of_holding /obj/item/storage/backpack/holding/clown @@ -81,7 +81,7 @@ worn_icon_state = "baguette" resistance_flags = FIRE_PROOF item_flags = NO_MAT_REDEMPTION - armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 100, BIO = 100, RAD = 100, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 100, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) component_type = /datum/component/storage/concrete/bluespace/bag_of_holding /obj/item/storage/backpack/hammerspace/ComponentInitialize() @@ -466,11 +466,11 @@ new /obj/item/razor(src) new /obj/item/reagent_containers/medspray/sterilizine(src) new /obj/item/blood_filter(src) - + /obj/item/storage/backpack/duffelbag/med/implant name = "surplus implants duffel bag" desc = "A large duffel bag for holding implants - this one has a material inlay with space for various implants." - + /obj/item/storage/backpack/duffelbag/med/implant/PopulateContents() var/implants = list(/obj/item/organ/cyberimp/arm/janitor, /obj/item/organ/cyberimp/arm/botany, diff --git a/code/game/objects/items/storage/secure.dm b/code/game/objects/items/storage/secure.dm index 58cfd2010c330..155c6dbd56d41 100644 --- a/code/game/objects/items/storage/secure.dm +++ b/code/game/objects/items/storage/secure.dm @@ -213,7 +213,7 @@ It is made out of the same material as the station's Black Box and is designed t There appears to be a small amount of surface corrosion. It doesn't look like it could withstand much of an explosion. \ It remains quite flush against the wall, and there only seems to be enough room to fit something as slim as an ID card." can_hack_open = FALSE - armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 70, BIO = 100, RAD = 100, FIRE = 80, ACID = 70); + armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 70, BIO = 100, FIRE = 80, ACID = 70); max_integrity = 300 color = "#ffdd33" diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/stunbaton.dm index 3db83f01c93c6..87309fe3dcc25 100644 --- a/code/game/objects/items/stunbaton.dm +++ b/code/game/objects/items/stunbaton.dm @@ -13,7 +13,7 @@ item_flags = ISWEAPON attack_verb_continuous = list("enforces the law upon") attack_verb_simple = list("enforce the law upon") - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 50, BIO = 0, RAD = 0, FIRE = 80, ACID = 80, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 50, BIO = 0, FIRE = 80, ACID = 80, STAMINA = 0, BLEED = 0) var/stunforce = 40 var/turned_on = FALSE diff --git a/code/game/objects/items/tanks/tanks.dm b/code/game/objects/items/tanks/tanks.dm index 6405e4b22a110..673e8fd5c6493 100644 --- a/code/game/objects/items/tanks/tanks.dm +++ b/code/game/objects/items/tanks/tanks.dm @@ -17,7 +17,7 @@ throw_range = 4 custom_materials = list(/datum/material/iron = 500) actions_types = list(/datum/action/item_action/set_internals) - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 10, BIO = 0, RAD = 0, FIRE = 80, ACID = 30, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 10, BIO = 0, FIRE = 80, ACID = 30, STAMINA = 0, BLEED = 0) var/datum/gas_mixture/air_contents = null var/distribute_pressure = ONE_ATMOSPHERE var/integrity = 3 diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm index 7c7c944d047eb..9fd49b0c694b9 100644 --- a/code/game/objects/items/tanks/watertank.dm +++ b/code/game/objects/items/tanks/watertank.dm @@ -12,7 +12,7 @@ slowdown = 1 actions_types = list(/datum/action/item_action/toggle_mister) max_integrity = 200 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 30, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 100, ACID = 30, STAMINA = 0, BLEED = 0) resistance_flags = FIRE_PROOF var/obj/item/noz diff --git a/code/game/objects/items/teleportation.dm b/code/game/objects/items/teleportation.dm index ec9d47cfe22a4..468027b837fb2 100644 --- a/code/game/objects/items/teleportation.dm +++ b/code/game/objects/items/teleportation.dm @@ -110,7 +110,7 @@ throw_speed = 3 throw_range = 5 custom_materials = list(/datum/material/iron=10000) - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 30, BIO = 0, RAD = 0, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 30, BIO = 0, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF var/list/active_portal_pairs var/max_portal_pairs = 3 diff --git a/code/game/objects/items/tools/crowbar.dm b/code/game/objects/items/tools/crowbar.dm index 7caa4d083a85e..786e1c87b3036 100644 --- a/code/game/objects/items/tools/crowbar.dm +++ b/code/game/objects/items/tools/crowbar.dm @@ -17,7 +17,7 @@ attack_verb_simple = list("attack", "bash", "batter", "bludgeon", "whack") tool_behaviour = TOOL_CROWBAR toolspeed = 1 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 30, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 30, STAMINA = 0, BLEED = 0) drop_sound = 'sound/items/handling/crowbar_drop.ogg' pickup_sound = 'sound/items/handling/crowbar_pickup.ogg' diff --git a/code/game/objects/items/tools/powertools.dm b/code/game/objects/items/tools/powertools.dm index e53106267b310..764b3f4afc8c9 100644 --- a/code/game/objects/items/tools/powertools.dm +++ b/code/game/objects/items/tools/powertools.dm @@ -6,7 +6,7 @@ righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' w_class = WEIGHT_CLASS_SMALL custom_materials = list(/datum/material/iron=150,/datum/material/silver=50,/datum/material/titanium=25) //done for balance reasons, making them high value for research, but harder to get - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 30, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 30, STAMINA = 0, BLEED = 0) flags_1 = CONDUCT_1 slot_flags = ITEM_SLOT_BELT toolspeed = 0.7 diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm index 59b08705a8ea2..932055575c021 100644 --- a/code/game/objects/items/tools/screwdriver.dm +++ b/code/game/objects/items/tools/screwdriver.dm @@ -26,7 +26,7 @@ greyscale_config_inhand_left = /datum/greyscale_config/screwdriver_inhand_left greyscale_config_inhand_right = /datum/greyscale_config/screwdriver_inhand_right greyscale_config_belt = /datum/greyscale_config/screwdriver_belt - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 30, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 30, STAMINA = 0, BLEED = 0) drop_sound = 'sound/items/handling/screwdriver_drop.ogg' pickup_sound = 'sound/items/handling/screwdriver_pickup.ogg' /// If the item should be assigned a random color diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index 5f78cff0474f6..a5cca65c9a462 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -26,7 +26,7 @@ throw_speed = 3 throw_range = 5 w_class = WEIGHT_CLASS_SMALL - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 30, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 100, ACID = 30, STAMINA = 0, BLEED = 0) resistance_flags = FIRE_PROOF custom_materials = list(/datum/material/iron=70, /datum/material/glass=30) diff --git a/code/game/objects/items/tools/wirecutters.dm b/code/game/objects/items/tools/wirecutters.dm index 485c62322bd7a..c292069d48dc6 100644 --- a/code/game/objects/items/tools/wirecutters.dm +++ b/code/game/objects/items/tools/wirecutters.dm @@ -22,7 +22,7 @@ pickup_sound = 'sound/items/handling/wirecutter_pickup.ogg' tool_behaviour = TOOL_WIRECUTTER toolspeed = 1 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 30, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 30, STAMINA = 0, BLEED = 0) var/random_color = TRUE var/static/list/wirecutter_colors = list( "blue" = "#1861d5", diff --git a/code/game/objects/items/tools/wrench.dm b/code/game/objects/items/tools/wrench.dm index 28c09bf616be7..8461b31f93ec0 100644 --- a/code/game/objects/items/tools/wrench.dm +++ b/code/game/objects/items/tools/wrench.dm @@ -20,7 +20,7 @@ attack_verb_simple = list("bash", "batter", "bludgeon", "whack") tool_behaviour = TOOL_WRENCH toolspeed = 1 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 30, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 30, STAMINA = 0, BLEED = 0) /obj/item/wrench/suicide_act(mob/living/user) user.visible_message("[user] is beating [user.p_them()]self to death with [src]! It looks like [user.p_theyre()] trying to commit suicide!") diff --git a/code/game/objects/items/vending_items.dm b/code/game/objects/items/vending_items.dm index a740e0baad725..0c90c6b6c8eaf 100644 --- a/code/game/objects/items/vending_items.dm +++ b/code/game/objects/items/vending_items.dm @@ -17,7 +17,7 @@ throw_speed = 1 throw_range = 7 w_class = WEIGHT_CLASS_BULKY - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 70, ACID = 30, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 70, ACID = 30, STAMINA = 0, BLEED = 0) // Built automatically from the corresponding vending machine. // If null, considered to be full. Otherwise, is list(/typepath = amount). diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm index 2c34e1f6cca52..4048d37314275 100644 --- a/code/game/objects/items/weaponry.dm +++ b/code/game/objects/items/weaponry.dm @@ -13,7 +13,7 @@ attack_verb_continuous = list("bans") attack_verb_simple = list("ban") max_integrity = 200 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 70, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 100, ACID = 70, STAMINA = 0, BLEED = 0) resistance_flags = FIRE_PROOF /obj/item/banhammer/suicide_act(mob/living/user) @@ -87,7 +87,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 sharpness = IS_SHARP bleed_force = BLEED_DEEP_WOUND max_integrity = 200 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 100, ACID = 50, STAMINA = 0, BLEED = 0) resistance_flags = FIRE_PROOF /obj/item/claymore/Initialize(mapload) @@ -242,7 +242,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut") block_level = 0 block_power = 30 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 100, ACID = 50, STAMINA = 0, BLEED = 0) /obj/item/katana name = "katana" @@ -268,7 +268,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 sharpness = IS_SHARP bleed_force = BLEED_DEEP_WOUND max_integrity = 200 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 100, ACID = 50, STAMINA = 0, BLEED = 0) resistance_flags = FIRE_PROOF /obj/item/katana/cursed diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 3f97e790cae44..13458c20cead1 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -11,7 +11,7 @@ /obj/structure/Initialize(mapload) if (!armor) - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 50, STAMINA = 0, BLEED = 0) . = ..() if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)) QUEUE_SMOOTH(src) diff --git a/code/game/objects/structures/barsigns.dm b/code/game/objects/structures/barsigns.dm index d47d71b3fa1d0..051aa3dfca476 100644 --- a/code/game/objects/structures/barsigns.dm +++ b/code/game/objects/structures/barsigns.dm @@ -6,7 +6,7 @@ req_access = list(ACCESS_BAR) max_integrity = 500 integrity_failure = 0.5 - armor = list(MELEE = 20, BULLET = 20, LASER = 20, ENERGY = 100, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 20, BULLET = 20, LASER = 20, ENERGY = 100, BOMB = 0, BIO = 0, FIRE = 50, ACID = 50, STAMINA = 0, BLEED = 0) buildable_sign = 0 var/panel_open = FALSE diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index f6d0983296766..29c01900d29e2 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -7,7 +7,7 @@ drag_slowdown = 1.5 // Same as a prone mob max_integrity = 200 integrity_failure = 0.25 - armor = list(MELEE = 20, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 10, BIO = 0, RAD = 0, FIRE = 70, ACID = 60, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 20, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 10, BIO = 0, FIRE = 70, ACID = 60, STAMINA = 0, BLEED = 0) blocks_emissive = EMISSIVE_BLOCK_GENERIC pass_flags_self = LETPASSCLICKS | PASSSTRUCTURE var/contents_initialised = FALSE diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm index f459dda04fb4a..63fd142e5434c 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm @@ -4,7 +4,7 @@ locked = TRUE icon_state = "secure" max_integrity = 250 - armor = list(MELEE = 30, BULLET = 50, LASER = 50, ENERGY = 100, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 80, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 30, BULLET = 50, LASER = 50, ENERGY = 100, BOMB = 0, BIO = 0, FIRE = 80, ACID = 80, STAMINA = 0, BLEED = 0) secure = TRUE /obj/structure/closet/secure_closet/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) diff --git a/code/game/objects/structures/crates_lockers/crates/secure.dm b/code/game/objects/structures/crates_lockers/crates/secure.dm index a3b28f10edaf0..bb220f1441169 100644 --- a/code/game/objects/structures/crates_lockers/crates/secure.dm +++ b/code/game/objects/structures/crates_lockers/crates/secure.dm @@ -5,7 +5,7 @@ secure = TRUE locked = TRUE max_integrity = 500 - armor = list(MELEE = 30, BULLET = 50, LASER = 50, ENERGY = 100, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 80, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 30, BULLET = 50, LASER = 50, ENERGY = 100, BOMB = 0, BIO = 0, FIRE = 80, ACID = 80, STAMINA = 0, BLEED = 0) var/tamperproof = 0 icon_door = "crate" diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index a2d071256fd45..ab099b00366b6 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -6,7 +6,7 @@ density = TRUE anchored = TRUE resistance_flags = ACID_PROOF - armor = list(MELEE = 30, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 10, BIO = 0, RAD = 0, FIRE = 70, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 30, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 10, BIO = 0, FIRE = 70, ACID = 100, STAMINA = 0, BLEED = 0) max_integrity = 200 integrity_failure = 0.25 var/obj/item/showpiece = null diff --git a/code/game/objects/structures/fireaxe.dm b/code/game/objects/structures/fireaxe.dm index b417c19d64091..1d97a36972bb8 100644 --- a/code/game/objects/structures/fireaxe.dm +++ b/code/game/objects/structures/fireaxe.dm @@ -5,7 +5,7 @@ icon_state = "fireaxe" anchored = TRUE density = FALSE - armor = list(MELEE = 50, BULLET = 20, LASER = 0, ENERGY = 100, BOMB = 10, BIO = 100, RAD = 100, FIRE = 90, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 50, BULLET = 20, LASER = 0, ENERGY = 100, BOMB = 10, BIO = 100, FIRE = 90, ACID = 50, STAMINA = 0, BLEED = 0) max_integrity = 150 integrity_failure = 0.33 layer = ABOVE_WINDOW_LAYER diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 753abd9bc564d..32c34df0d9fea 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -13,7 +13,7 @@ z_flags = Z_BLOCK_IN_DOWN | Z_BLOCK_IN_UP pressure_resistance = 5*ONE_ATMOSPHERE layer = BELOW_OBJ_LAYER - armor = list(MELEE = 50, BULLET = 70, LASER = 70, ENERGY = 100, BOMB = 10, BIO = 100, RAD = 100, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 50, BULLET = 70, LASER = 70, ENERGY = 100, BOMB = 10, BIO = 100, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) max_integrity = 50 integrity_failure = 0.4 var/rods_type = /obj/item/stack/rods diff --git a/code/game/objects/structures/holosign.dm b/code/game/objects/structures/holosign.dm index e4704b0e9e266..afa56ecde9fbf 100644 --- a/code/game/objects/structures/holosign.dm +++ b/code/game/objects/structures/holosign.dm @@ -6,7 +6,7 @@ icon = 'icons/effects/effects.dmi' anchored = TRUE max_integrity = 1 - armor = list(MELEE = 0, BULLET = 50, LASER = 50, ENERGY = 50, BOMB = 0, BIO = 0, RAD = 0, FIRE = 20, ACID = 20, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 50, LASER = 50, ENERGY = 50, BOMB = 0, BIO = 0, FIRE = 20, ACID = 20, STAMINA = 0, BLEED = 0) layer = BELOW_OBJ_LAYER var/obj/item/holosign_creator/projector diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index 8efc68e382e4f..29f14b3a77412 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -9,7 +9,7 @@ canSmoothWith = list(SMOOTH_GROUP_OPEN_FLOOR, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_LATTICE) density = FALSE anchored = TRUE - armor = list(MELEE = 50, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 50, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 80, ACID = 50, STAMINA = 0, BLEED = 0) max_integrity = 50 layer = LATTICE_LAYER //under pipes plane = FLOOR_PLANE diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index 4a9790843926e..c7f1eacf3dc4d 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -11,7 +11,7 @@ icon = 'icons/obj/doors/mineral_doors.dmi' icon_state = "metal" max_integrity = 200 - armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 100, BOMB = 10, BIO = 100, RAD = 100, FIRE = 50, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 100, BOMB = 10, BIO = 100, FIRE = 50, ACID = 50, STAMINA = 0, BLEED = 0) CanAtmosPass = ATMOS_PASS_DENSITY rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE rad_insulation = RAD_MEDIUM_INSULATION diff --git a/code/game/objects/structures/plasticflaps.dm b/code/game/objects/structures/plasticflaps.dm index ac850ce157a0d..53184beed0a78 100644 --- a/code/game/objects/structures/plasticflaps.dm +++ b/code/game/objects/structures/plasticflaps.dm @@ -3,7 +3,7 @@ desc = "Heavy duty, airtight, plastic flaps. Definitely can't get past those. No way." icon = 'icons/obj/stationobjs.dmi' icon_state = "plasticflaps" - armor = list(MELEE = 100, BULLET = 80, LASER = 80, ENERGY = 100, BOMB = 50, BIO = 100, RAD = 100, FIRE = 50, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 100, BULLET = 80, LASER = 80, ENERGY = 100, BOMB = 50, BIO = 100, FIRE = 50, ACID = 50, STAMINA = 0, BLEED = 0) density = FALSE anchored = TRUE layer = BELOW_OBJ_LAYER diff --git a/code/game/objects/structures/signs/_signs.dm b/code/game/objects/structures/signs/_signs.dm index 64077859247e6..43d3d6adec9d7 100644 --- a/code/game/objects/structures/signs/_signs.dm +++ b/code/game/objects/structures/signs/_signs.dm @@ -5,7 +5,7 @@ density = FALSE layer = SIGN_LAYER max_integrity = 100 - armor = list(MELEE = 50, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 50, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 50, STAMINA = 0, BLEED = 0) var/buildable_sign = 1 //unwrenchable and modifiable rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index ccd47398717ab..4ae2a97884cb3 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -287,7 +287,7 @@ canSmoothWith = null max_integrity = 70 resistance_flags = ACID_PROOF - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 80, ACID = 100, STAMINA = 0, BLEED = 0) var/list/debris = list() /obj/structure/table/glass/Initialize(mapload) @@ -355,7 +355,7 @@ buildstack = /obj/item/stack/sheet/plasmaglass glass_shard_type = /obj/item/shard/plasma max_integrity = 270 - armor = list(MELEE = 10, BULLET = 5, LASER = 0, ENERGY = 0, BOMB = 10, BIO = 0, RAD = 0, FIRE = 80, ACID = 100) + armor = list(MELEE = 10, BULLET = 5, LASER = 0, ENERGY = 0, BOMB = 10, BIO = 0, FIRE = 80, ACID = 100) /obj/structure/table/glass/plasma/Initialize(mapload) . = ..() @@ -476,7 +476,7 @@ buildstack = /obj/item/stack/sheet/plasteel max_integrity = 200 integrity_failure = 0.25 - armor = list(MELEE = 10, BULLET = 30, LASER = 30, ENERGY = 100, BOMB = 20, BIO = 0, RAD = 0, FIRE = 80, ACID = 70, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 10, BULLET = 30, LASER = 30, ENERGY = 100, BOMB = 20, BIO = 0, FIRE = 80, ACID = 70, STAMINA = 0, BLEED = 0) /obj/structure/table/reinforced/deconstruction_hints(mob/user) if(deconstruction_ready) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index d4e0708538617..badcea1ce0b35 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -10,7 +10,7 @@ max_integrity = 50 can_be_unanchored = TRUE resistance_flags = ACID_PROOF - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 80, ACID = 100, STAMINA = 0, BLEED = 0) CanAtmosPass = ATMOS_PASS_PROC rad_insulation = RAD_VERY_LIGHT_INSULATION rad_flags = RAD_PROTECT_CONTENTS @@ -399,7 +399,7 @@ icon_state = "rwindow" reinf = TRUE heat_resistance = 1600 - armor = list(MELEE = 50, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 25, BIO = 100, RAD = 100, FIRE = 80, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 50, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 25, BIO = 100, FIRE = 80, ACID = 100, STAMINA = 0, BLEED = 0) max_integrity = 100 explosion_block = 1 glass_type = /obj/item/stack/sheet/rglass @@ -424,7 +424,7 @@ icon_state = "plasmawindow" reinf = FALSE heat_resistance = 25000 - armor = list(MELEE = 75, BULLET = 5, LASER = 0, ENERGY = 0, BOMB = 45, BIO = 100, RAD = 100, FIRE = 99, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 75, BULLET = 5, LASER = 0, ENERGY = 0, BOMB = 45, BIO = 100, FIRE = 99, ACID = 100, STAMINA = 0, BLEED = 0) max_integrity = 300 glass_type = /obj/item/stack/sheet/plasmaglass rad_insulation = RAD_NO_INSULATION @@ -456,7 +456,7 @@ icon_state = "plasmarwindow" reinf = TRUE heat_resistance = 50000 - armor = list(MELEE = 85, BULLET = 20, LASER = 0, ENERGY = 0, BOMB = 60, BIO = 100, RAD = 100, FIRE = 99, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 85, BULLET = 20, LASER = 0, ENERGY = 0, BOMB = 60, BIO = 100, FIRE = 99, ACID = 100, STAMINA = 0, BLEED = 0) max_integrity = 500 explosion_block = 2 glass_type = /obj/item/stack/sheet/plasmarglass @@ -487,7 +487,7 @@ icon_state = "duwindow" reinf = TRUE heat_resistance = 50000 - armor = list(MELEE = 45, BULLET = 20, LASER = 0, ENERGY = 0, BOMB = 60, BIO = 100, RAD = 100, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 45, BULLET = 20, LASER = 0, ENERGY = 0, BOMB = 60, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) max_integrity = 500 explosion_block = 2 glass_type = /obj/item/stack/sheet/mineral/uranium @@ -619,7 +619,7 @@ flags_1 = PREVENT_CLICK_UNDER_1 reinf = TRUE heat_resistance = 1600 - armor = list(MELEE = 50, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 50, BIO = 100, RAD = 100, FIRE = 80, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 50, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 50, BIO = 100, FIRE = 80, ACID = 100, STAMINA = 0, BLEED = 0) explosion_block = 3 glass_type = /obj/item/stack/sheet/titaniumglass glass_amount = 2 @@ -649,7 +649,7 @@ flags_1 = PREVENT_CLICK_UNDER_1 reinf = TRUE heat_resistance = 1600 - armor = list(MELEE = 50, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 50, BIO = 100, RAD = 100, FIRE = 80, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 50, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 50, BIO = 100, FIRE = 80, ACID = 100, STAMINA = 0, BLEED = 0) explosion_block = 3 glass_type = /obj/item/stack/sheet/plastitaniumglass glass_amount = 2 @@ -676,7 +676,7 @@ decon_speed = 10 CanAtmosPass = ATMOS_PASS_YES resistance_flags = FLAMMABLE - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) breaksound = 'sound/items/poster_ripped.ogg' hitsound = 'sound/weapons/slashmiss.ogg' var/static/mutable_appearance/torn = mutable_appearance('icons/obj/smooth_structures/windows/paperframes.dmi',icon_state = "torn", layer = ABOVE_OBJ_LAYER - 0.1) diff --git a/code/game/shuttle_engines.dm b/code/game/shuttle_engines.dm index 3e75c43a45649..18f35cee3a89d 100644 --- a/code/game/shuttle_engines.dm +++ b/code/game/shuttle_engines.dm @@ -8,7 +8,7 @@ icon = 'icons/turf/shuttle.dmi' resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF max_integrity = 500 - armor = list(MELEE = 100, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 70, STAMINA = 0, BLEED = 0) //default + ignores melee + armor = list(MELEE = 100, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 70, STAMINA = 0, BLEED = 0) //default + ignores melee /obj/structure/shuttle/engine name = "engine" diff --git a/code/game/turfs/closed/wall/reinf_walls.dm b/code/game/turfs/closed/wall/reinf_walls.dm index 6369006e63474..7218bf10d700a 100644 --- a/code/game/turfs/closed/wall/reinf_walls.dm +++ b/code/game/turfs/closed/wall/reinf_walls.dm @@ -22,7 +22,7 @@ ) /turf/closed/wall/r_wall/get_armour_list() - return list(MELEE = 30, BULLET = 30, LASER = 20, ENERGY = 20, BOMB = 10, BIO = 100, RAD = 100, FIRE = 80, ACID = 70, STAMINA = 0, BLEED = 0) + return list(MELEE = 30, BULLET = 30, LASER = 20, ENERGY = 20, BOMB = 10, BIO = 100, FIRE = 80, ACID = 70, STAMINA = 0, BLEED = 0) /turf/closed/wall/r_wall/deconstruction_hints(mob/user) switch(d_state) diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm index 22d7187f89a31..b1ffd2a87c94e 100644 --- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm +++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm @@ -13,7 +13,7 @@ icon_state = "vest_stealth" item_state = "armor" blood_overlay_type = "armor" - armor = list(MELEE = 15, BULLET = 15, LASER = 15, ENERGY = 15, BOMB = 15, BIO = 15, RAD = 15, FIRE = 70, ACID = 70, STAMINA = 30, BLEED = 40) + armor = list(MELEE = 15, BULLET = 15, LASER = 15, ENERGY = 15, BOMB = 15, BIO = 15, FIRE = 70, ACID = 70, STAMINA = 30, BLEED = 40) actions_types = list(/datum/action/item_action/hands_free/activate) allowed = list( /obj/item/abductor, @@ -28,8 +28,8 @@ /// Cooldown in seconds var/combat_cooldown = 20 var/datum/icon_snapshot/disguise - var/stealth_armor = list(MELEE = 15, BULLET = 15, LASER = 15, ENERGY = 15, BOMB = 15, BIO = 15, RAD = 15, FIRE = 70, ACID = 70, STAMINA = 30, BLEED = 40) - var/combat_armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 50, BOMB = 50, BIO = 50, RAD = 50, FIRE = 90, ACID = 90, STAMINA = 60, BLEED = 80) + var/stealth_armor = list(MELEE = 15, BULLET = 15, LASER = 15, ENERGY = 15, BOMB = 15, BIO = 15, FIRE = 70, ACID = 70, STAMINA = 30, BLEED = 40) + var/combat_armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 50, BOMB = 50, BIO = 50, FIRE = 90, ACID = 90, STAMINA = 60, BLEED = 80) /obj/item/clothing/suit/armor/abductor/vest/Initialize(mapload) . = ..() @@ -876,5 +876,5 @@ Congratulations! You are now trained for invasive xenobiology research!"} icon_state = "abductor-suit" item_state = "bl_suit" worn_icon = 'icons/mob/clothing/under/syndicate.dmi' - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 10, BIO = 10, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 10, BIO = 10, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) can_adjust = FALSE diff --git a/code/modules/antagonists/blob/structures/_blob.dm b/code/modules/antagonists/blob/structures/_blob.dm index e7870b87acfaf..aa18323b68155 100644 --- a/code/modules/antagonists/blob/structures/_blob.dm +++ b/code/modules/antagonists/blob/structures/_blob.dm @@ -12,7 +12,7 @@ CanAtmosPass = ATMOS_PASS_PROC var/point_return = 0 //How many points the blob gets back when it removes a blob of that type. If less than 0, blob cannot be removed. max_integrity = 30 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 70, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 80, ACID = 70, STAMINA = 0, BLEED = 0) var/health_regen = 2 //how much health this blob regens when pulsed var/pulse_timestamp = 0 //we got pulsed when? var/heal_timestamp = 0 //we got healed when? diff --git a/code/modules/antagonists/blob/structures/core.dm b/code/modules/antagonists/blob/structures/core.dm index 5ed9ce87c3833..09a60324e0cdf 100644 --- a/code/modules/antagonists/blob/structures/core.dm +++ b/code/modules/antagonists/blob/structures/core.dm @@ -5,7 +5,7 @@ desc = "A huge, pulsating yellow mass." max_integrity = 400 max_hit_damage = 40 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 75, ACID = 90, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 75, ACID = 90, STAMINA = 0, BLEED = 0) explosion_block = 6 point_return = -1 health_regen = 0 //we regen in Life() instead of when pulsed diff --git a/code/modules/antagonists/blob/structures/node.dm b/code/modules/antagonists/blob/structures/node.dm index 89ba25e521558..4cccd7536f60c 100644 --- a/code/modules/antagonists/blob/structures/node.dm +++ b/code/modules/antagonists/blob/structures/node.dm @@ -5,7 +5,7 @@ desc = "A large, pulsating yellow mass." max_integrity = 200 max_hit_damage = 40 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 65, ACID = 90, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 65, ACID = 90, STAMINA = 0, BLEED = 0) health_regen = 3 point_return = 25 resistance_flags = LAVA_PROOF diff --git a/code/modules/antagonists/blob/structures/shield.dm b/code/modules/antagonists/blob/structures/shield.dm index f39f8613c25e7..dc7008579e4e9 100644 --- a/code/modules/antagonists/blob/structures/shield.dm +++ b/code/modules/antagonists/blob/structures/shield.dm @@ -9,7 +9,7 @@ explosion_block = 3 point_return = 4 atmosblock = TRUE - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 90, ACID = 90, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 90, ACID = 90, STAMINA = 0, BLEED = 0) /obj/structure/blob/shield/scannerreport() if(atmosblock) diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm index 39da9eafa0d9c..6cfaa4127c731 100644 --- a/code/modules/antagonists/changeling/powers/mutations.dm +++ b/code/modules/antagonists/changeling/powers/mutations.dm @@ -403,7 +403,7 @@ item_flags = DROPDEL clothing_flags = STOPSPRESSUREDAMAGE | HEADINTERNALS //Not THICKMATERIAL because it's organic tissue, so if somebody tries to inject something into it, it still ends up in your blood. (also balance but muh fluff) allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/oxygen) - armor = list(MELEE = 35, BULLET = 25, LASER = 25, ENERGY = 30, BOMB = 30, BIO = 20, RAD = 20, FIRE = 90, ACID = 90, STAMINA = 10, BLEED = 80)//Bit less armoured than the Syndicate space suit + armor = list(MELEE = 35, BULLET = 25, LASER = 25, ENERGY = 30, BOMB = 30, BIO = 20, FIRE = 90, ACID = 90, STAMINA = 10, BLEED = 80)//Bit less armoured than the Syndicate space suit slowdown = 0.2 var/datum/reagent/salbutamol = /datum/reagent/medicine/salbutamol actions_types = list() @@ -436,7 +436,7 @@ desc = "A covering of armored pressure and temperature-resistant organic tissue with a glass-like chitin front." item_flags = DROPDEL clothing_flags = STOPSPRESSUREDAMAGE - armor = list(MELEE = 35, BULLET = 25, LASER = 25, ENERGY = 30, BOMB = 30, BIO = 20, RAD = 20, FIRE = 90, ACID = 90, STAMINA = 10, BLEED = 80) + armor = list(MELEE = 35, BULLET = 25, LASER = 25, ENERGY = 30, BOMB = 30, BIO = 20, FIRE = 90, ACID = 90, STAMINA = 10, BLEED = 80) flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH /obj/item/clothing/head/helmet/space/changeling/Initialize(mapload) @@ -469,7 +469,7 @@ item_state = null item_flags = DROPDEL body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - armor = list(MELEE = 40, BULLET = 40, LASER = 50, ENERGY = 50, BOMB = 25, BIO = 0, RAD = 0, FIRE = 25, ACID = 25, STAMINA = 30, BLEED = 90) + armor = list(MELEE = 40, BULLET = 40, LASER = 50, ENERGY = 50, BOMB = 25, BIO = 0, FIRE = 25, ACID = 25, STAMINA = 30, BLEED = 90) flags_inv = HIDEJUMPSUIT cold_protection = 0 heat_protection = 0 @@ -488,7 +488,7 @@ icon_state = "lingarmorhelmet" item_state = null item_flags = DROPDEL - armor = list(MELEE = 40, BULLET = 40, LASER = 50, ENERGY = 50, BOMB = 25, BIO = 0, RAD = 0, FIRE = 25, ACID = 25, STAMINA = 30, BLEED = 90) + armor = list(MELEE = 40, BULLET = 40, LASER = 50, ENERGY = 50, BOMB = 25, BIO = 0, FIRE = 25, ACID = 25, STAMINA = 30, BLEED = 90) flags_inv = HIDEEARS|HIDEHAIR|HIDEEYES|HIDEFACIALHAIR|HIDEFACE|HIDESNOUT /obj/item/clothing/head/helmet/changeling/Initialize(mapload) diff --git a/code/modules/antagonists/clock_cult/clockwork_turfs.dm b/code/modules/antagonists/clock_cult/clockwork_turfs.dm index 36a9381d42eac..1c0e6569a4f59 100644 --- a/code/modules/antagonists/clock_cult/clockwork_turfs.dm +++ b/code/modules/antagonists/clock_cult/clockwork_turfs.dm @@ -546,7 +546,7 @@ icon_state = "clockwork_window_single" resistance_flags = FIRE_PROOF | ACID_PROOF max_integrity = 80 - armor = list(MELEE = 40, BULLET = -20, LASER = 0, ENERGY = 0, BOMB = 25, BIO = 100, RAD = 100, FIRE = 80, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 40, BULLET = -20, LASER = 0, ENERGY = 0, BOMB = 25, BIO = 100, FIRE = 80, ACID = 100, STAMINA = 0, BLEED = 0) explosion_block = 2 //fancy AND hard to destroy. the most useful combination. decon_speed = 40 glass_type = /obj/item/stack/sheet/brass diff --git a/code/modules/antagonists/clock_cult/items/brass_clothing.dm b/code/modules/antagonists/clock_cult/items/brass_clothing.dm index 28ef84e13a5ca..913eb66628c96 100644 --- a/code/modules/antagonists/clock_cult/items/brass_clothing.dm +++ b/code/modules/antagonists/clock_cult/items/brass_clothing.dm @@ -5,7 +5,7 @@ icon_state = "clockwork_cuirass" worn_icon = 'icons/mob/clothing/suits/armor.dmi' worn_icon_state = "clockwork_cuirass" - armor = list(MELEE = 50, BULLET = 60, LASER = 30, ENERGY = 80, BOMB = 80, BIO = 100, RAD = 100, FIRE = 100, ACID = 100, STAMINA = 60, BLEED = 60) + armor = list(MELEE = 50, BULLET = 60, LASER = 30, ENERGY = 80, BOMB = 80, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 60, BLEED = 60) slowdown = 0.6 resistance_flags = FIRE_PROOF | ACID_PROOF w_class = WEIGHT_CLASS_BULKY @@ -39,14 +39,14 @@ worn_icon_state = "clockwork_cuirass_speed" slowdown = -0.3 resistance_flags = FIRE_PROOF | ACID_PROOF - armor = list(MELEE = 40, BULLET = 40, LASER = 10, ENERGY = -20, BOMB = 60, BIO = 100, RAD = 100, FIRE = 100, ACID = 100, STAMINA = 30, BLEED = 40) + armor = list(MELEE = 40, BULLET = 40, LASER = 10, ENERGY = -20, BOMB = 60, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 30, BLEED = 40) /obj/item/clothing/suit/clockwork/cloak name = "shrouding cloak" desc = "A faltering cloak that bends light around it, distorting the user's appearance, making it hard to see them with the naked eye. However, it provides very little protection." icon_state = "clockwork_cloak" worn_icon_state = "clockwork_cloak" - armor = list(MELEE = 10, BULLET = 60, LASER = 40, ENERGY = 20, BOMB = 40, BIO = 100, RAD = 100, FIRE = 100, ACID = 100, STAMINA = 20, BLEED = 20) + armor = list(MELEE = 10, BULLET = 60, LASER = 40, ENERGY = 20, BOMB = 40, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 20, BLEED = 20) slowdown = 0.4 resistance_flags = FIRE_PROOF | ACID_PROOF var/shroud_active = FALSE @@ -143,7 +143,7 @@ desc = "A strong, brass helmet worn by the soldiers of the Ratvarian armies. Includes an integrated light-dimmer for flash protection, as well as occult-grade muffling for factory based environments." icon = 'icons/obj/clothing/clockwork_garb.dmi' icon_state = "clockwork_helmet" - armor = list(MELEE = 50, BULLET = 60, LASER = 30, ENERGY = 80, BOMB = 80, BIO = 100, RAD = 100, FIRE = 100, ACID = 100, STAMINA = 60, BLEED = 60) + armor = list(MELEE = 50, BULLET = 60, LASER = 30, ENERGY = 80, BOMB = 80, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 60, BLEED = 60) resistance_flags = FIRE_PROOF | ACID_PROOF w_class = WEIGHT_CLASS_BULKY flash_protect = 1 @@ -168,4 +168,4 @@ heat_protection = HANDS max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT resistance_flags = NONE - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 50, STAMINA = 0, BLEED = 0, BLEED = 20) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 80, ACID = 50, STAMINA = 0, BLEED = 0, BLEED = 20) diff --git a/code/modules/antagonists/clock_cult/scriptures/ocular_warden.dm b/code/modules/antagonists/clock_cult/scriptures/ocular_warden.dm index 9197614fe896b..4bf9c5033c3a8 100644 --- a/code/modules/antagonists/clock_cult/scriptures/ocular_warden.dm +++ b/code/modules/antagonists/clock_cult/scriptures/ocular_warden.dm @@ -32,7 +32,7 @@ break_message = "A black ooze leaks from the ocular warden as it slowly sinks to the ground." icon_state = "ocular_warden" max_integrity = 60 - armor = list(MELEE = -80, BULLET = -50, LASER = 40, ENERGY = 40, BOMB = 20, BIO = 0, RAD = 0, STAMINA = 0, BLEED = 0) + armor = list(MELEE = -80, BULLET = -50, LASER = 40, ENERGY = 40, BOMB = 20, BIO = 0, STAMINA = 0, BLEED = 0) var/cooldown /obj/structure/destructible/clockwork/ocular_warden/process(delta_time) diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index 6af798845c3a3..1dc9d2a2a6044 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -138,7 +138,7 @@ Striking a noncultist, however, will tear their flesh."} desc = "A torn, dust-caked hood. Strange letters line the inside." flags_inv = HIDEFACE|HIDEHAIR|HIDEEARS flags_cover = HEADCOVERSEYES - armor = list(MELEE = 30, BULLET = 30, LASER = 20, ENERGY = 20, BOMB = 25, BIO = 10, RAD = 0, FIRE = 10, ACID = 10, STAMINA = 40, BLEED = 20) + armor = list(MELEE = 30, BULLET = 30, LASER = 20, ENERGY = 20, BOMB = 25, BIO = 10, FIRE = 10, ACID = 10, STAMINA = 40, BLEED = 20) cold_protection = HEAD min_cold_protection_temperature = HELMET_MIN_TEMP_PROTECT heat_protection = HEAD @@ -153,7 +153,7 @@ Striking a noncultist, however, will tear their flesh."} item_state = "cultrobes" body_parts_covered = CHEST|GROIN|LEGS|ARMS allowed = list(/obj/item/tome, /obj/item/melee/cultblade) - armor = list(MELEE = 30, BULLET = 30, LASER = 20, ENERGY = 20, BOMB = 25, BIO = 10, RAD = 0, FIRE = 10, ACID = 10, STAMINA = 40, BLEED = 20) + armor = list(MELEE = 30, BULLET = 30, LASER = 20, ENERGY = 20, BOMB = 25, BIO = 10, FIRE = 10, ACID = 10, STAMINA = 40, BLEED = 20) flags_inv = HIDEJUMPSUIT cold_protection = CHEST|GROIN|LEGS|ARMS min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT @@ -187,7 +187,7 @@ Striking a noncultist, however, will tear their flesh."} item_state = null desc = "A helm worn by the followers of Nar'Sie." flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDEEARS|HIDEEYES|HIDESNOUT - armor = list(MELEE = 50, BULLET = 30, LASER = 50, ENERGY = 20, BOMB = 25, BIO = 10, RAD = 0, FIRE = 10, ACID = 10, STAMINA = 50, BLEED = 50) + armor = list(MELEE = 50, BULLET = 30, LASER = 50, ENERGY = 20, BOMB = 25, BIO = 10, FIRE = 10, ACID = 10, STAMINA = 50, BLEED = 50) flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH /obj/item/clothing/suit/magusred @@ -199,7 +199,7 @@ Striking a noncultist, however, will tear their flesh."} item_state = null body_parts_covered = CHEST|GROIN|LEGS|ARMS allowed = list(/obj/item/tome, /obj/item/melee/cultblade) - armor = list(MELEE = 50, BULLET = 30, LASER = 50, ENERGY = 20, BOMB = 25, BIO = 10, RAD = 0, FIRE = 10, ACID = 10, STAMINA = 50, BLEED = 20) + armor = list(MELEE = 50, BULLET = 30, LASER = 50, ENERGY = 20, BOMB = 25, BIO = 10, FIRE = 10, ACID = 10, STAMINA = 50, BLEED = 20) flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT /obj/item/sharpener/cult @@ -220,7 +220,7 @@ Striking a noncultist, however, will tear their flesh."} icon_state = "cult_armor" item_state = null w_class = WEIGHT_CLASS_BULKY - armor = list(MELEE = 40, BULLET = 30, LASER = 40, ENERGY = 30, BOMB = 50, BIO = 30, RAD = 30, FIRE = 50, ACID = 60, STAMINA = 40, BLEED = 20) + armor = list(MELEE = 40, BULLET = 30, LASER = 40, ENERGY = 30, BOMB = 50, BIO = 30, FIRE = 50, ACID = 60, STAMINA = 40, BLEED = 20) hoodtype = /obj/item/clothing/head/hooded/cult_hoodie /// if anyone can equip this. used by the prefs menu var/allow_any = FALSE @@ -242,7 +242,7 @@ Striking a noncultist, however, will tear their flesh."} name = "empowered cultist helmet" desc = "Empowered helmet which creates a powerful shield around the user." icon_state = "cult_hoodalt" - armor = list(MELEE = 40, BULLET = 30, LASER = 40, ENERGY = 30, BOMB = 50, BIO = 30, RAD = 30, FIRE = 50, ACID = 60, STAMINA = 40, BLEED = 20) + armor = list(MELEE = 40, BULLET = 30, LASER = 40, ENERGY = 30, BOMB = 50, BIO = 30, FIRE = 50, ACID = 60, STAMINA = 40, BLEED = 20) /obj/item/clothing/suit/hooded/cultrobes/cult_shield/equipped(mob/living/user, slot) ..() @@ -257,14 +257,14 @@ Striking a noncultist, however, will tear their flesh."} name = "flagellant's robes" desc = "Blood-soaked robes infused with dark magic; allows the user to move at inhuman speeds, but at the cost of reduced protection." allowed = list(/obj/item/tome, /obj/item/melee/cultblade) - armor = list(MELEE = 10, BULLET = 20, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 40, BLEED = 20) + armor = list(MELEE = 10, BULLET = 20, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 40, BLEED = 20) slowdown = -0.4 hoodtype = /obj/item/clothing/head/hooded/cult_hoodie/berserkerhood /obj/item/clothing/head/hooded/cult_hoodie/berserkerhood name = "flagellant's hood" desc = "Blood-soaked hood infused with dark magic." - armor = list(MELEE = 10, BULLET = 20, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 40, BLEED = 20) + armor = list(MELEE = 10, BULLET = 20, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 40, BLEED = 20) /obj/item/clothing/suit/hooded/cultrobes/berserker/equipped(mob/living/user, slot) ..() diff --git a/code/modules/antagonists/heretic/items/heretic_armor.dm b/code/modules/antagonists/heretic/items/heretic_armor.dm index 35815ff66ae45..ae61f91b32f06 100644 --- a/code/modules/antagonists/heretic/items/heretic_armor.dm +++ b/code/modules/antagonists/heretic/items/heretic_armor.dm @@ -31,7 +31,7 @@ allowed = list(/obj/item/melee/sickly_blade) hoodtype = /obj/item/clothing/head/hooded/cult_hoodie/eldritch // Slightly better than normal cult robes - armor = list(MELEE = 50, BULLET = 50, LASER = 50,ENERGY = 50, BOMB = 35, BIO = 20, RAD = 20, FIRE = 20, ACID = 20, STAMINA = 50, BLEED = 40) + armor = list(MELEE = 50, BULLET = 50, LASER = 50,ENERGY = 50, BOMB = 35, BIO = 20, FIRE = 20, ACID = 20, STAMINA = 50, BLEED = 40) /obj/item/clothing/suit/hooded/cultrobes/eldritch/examine(mob/user) . = ..() @@ -51,7 +51,7 @@ flags_cover = NONE desc = "Black like tar and doesn't reflect any light. Runic symbols line the outside, with each flash you lose comprehension of what you are seeing." item_flags = EXAMINE_SKIP - armor = list(MELEE = 30, BULLET = 30, LASER = 30,ENERGY = 30, BOMB = 15, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 30, BLEED = 40) + armor = list(MELEE = 30, BULLET = 30, LASER = 30,ENERGY = 30, BOMB = 15, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 30, BLEED = 40) /obj/item/clothing/head/hooded/cult_hoodie/void/Initialize(mapload) . = ..() @@ -66,7 +66,7 @@ hoodtype = /obj/item/clothing/head/hooded/cult_hoodie/void flags_inv = NONE // slightly worse than normal cult robes - armor = list(MELEE = 30, BULLET = 30, LASER = 30,ENERGY = 30, BOMB = 15, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 30, BLEED = 40) + armor = list(MELEE = 30, BULLET = 30, LASER = 30,ENERGY = 30, BOMB = 15, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 30, BLEED = 40) body_parts_covered = CHEST|GROIN|ARMS pocket_storage_component_path = /datum/component/storage/concrete/pockets/void_cloak qdel_hood = TRUE diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm index 1da124706b09f..f59ade68831e2 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm @@ -654,7 +654,7 @@ This is here to make the tiles around the station mininuke change when it's arme icon_state = "nucleardisk" persistence_replacement = /obj/item/disk/nuclear/fake max_integrity = 250 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 30, BIO = 0, RAD = 0, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 30, BIO = 0, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF var/fake = FALSE var/turf/lastlocation diff --git a/code/modules/antagonists/space_dragon/carp_rift.dm b/code/modules/antagonists/space_dragon/carp_rift.dm index 643119e949ebc..a693c8705324e 100644 --- a/code/modules/antagonists/space_dragon/carp_rift.dm +++ b/code/modules/antagonists/space_dragon/carp_rift.dm @@ -60,7 +60,7 @@ /obj/structure/carp_rift name = "carp rift" desc = "A rift akin to the ones space carp use to travel long distances." - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 100, BOMB = 50, BIO = 100, RAD = 100, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 100, BOMB = 50, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) max_integrity = 300 max_hit_damage = 50 icon = 'icons/obj/carp_rift.dmi' diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index f02f560c3ab11..262ff1ac2f795 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -70,7 +70,7 @@ req_access = list(ACCESS_ATMOSPHERICS) max_integrity = 250 integrity_failure = 0.33 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 100, BOMB = 0, BIO = 100, RAD = 100, FIRE = 90, ACID = 30, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 100, BOMB = 0, BIO = 100, FIRE = 90, ACID = 30, STAMINA = 0, BLEED = 0) resistance_flags = FIRE_PROOF clicksound = 'sound/machines/terminal_select.ogg' layer = ABOVE_WINDOW_LAYER diff --git a/code/modules/atmospherics/machinery/atmosmachinery.dm b/code/modules/atmospherics/machinery/atmosmachinery.dm index f484ea71a372d..96bc4473dd8bd 100644 --- a/code/modules/atmospherics/machinery/atmosmachinery.dm +++ b/code/modules/atmospherics/machinery/atmosmachinery.dm @@ -57,7 +57,7 @@ normalize_cardinal_directions() nodes = new(device_type) if (!armor) - armor = list(MELEE = 25, BULLET = 10, LASER = 10, ENERGY = 100, BOMB = 0, BIO = 100, RAD = 100, FIRE = 100, ACID = 70, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 25, BULLET = 10, LASER = 10, ENERGY = 100, BOMB = 0, BIO = 100, FIRE = 100, ACID = 70, STAMINA = 0, BLEED = 0) ..() if(process) SSair.start_processing_machine(src) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index 3ef275765c9ce..3d34d3f9abb15 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -8,7 +8,7 @@ icon_state = "pod-off" density = TRUE max_integrity = 350 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 100, BOMB = 0, BIO = 100, RAD = 100, FIRE = 30, ACID = 30, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 100, BOMB = 0, BIO = 100, FIRE = 30, ACID = 30, STAMINA = 0, BLEED = 0) layer = ABOVE_WINDOW_LAYER state_open = FALSE circuit = /obj/item/circuitboard/machine/cryo_tube diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm index e7e7c4650972b..dc849b33e1c31 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm @@ -7,7 +7,7 @@ density = TRUE max_integrity = 300 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 100, BOMB = 0, BIO = 100, RAD = 100, FIRE = 80, ACID = 30, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 100, BOMB = 0, BIO = 100, FIRE = 80, ACID = 30, STAMINA = 0, BLEED = 0) layer = OBJ_LAYER circuit = /obj/item/circuitboard/machine/thermomachine diff --git a/code/modules/atmospherics/machinery/other/meter.dm b/code/modules/atmospherics/machinery/other/meter.dm index 24d3e44239728..7ccd173e510ac 100644 --- a/code/modules/atmospherics/machinery/other/meter.dm +++ b/code/modules/atmospherics/machinery/other/meter.dm @@ -9,7 +9,7 @@ idle_power_usage = 2 active_power_usage = 4 max_integrity = 150 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 100, BOMB = 0, BIO = 100, RAD = 100, FIRE = 40, ACID = 0, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 100, BOMB = 0, BIO = 100, FIRE = 40, ACID = 0, STAMINA = 0, BLEED = 0) var/frequency = 0 var/atom/target var/target_layer = PIPING_LAYER_DEFAULT diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index d828301a6a128..4caf7c9d7fa2f 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -9,7 +9,7 @@ greyscale_colors = "#ffff00#000000" density = TRUE volume = 1000 - armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 100, BOMB = 10, BIO = 100, RAD = 100, FIRE = 80, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 100, BOMB = 10, BIO = 100, FIRE = 80, ACID = 50, STAMINA = 0, BLEED = 0) max_integrity = 250 integrity_failure = 0.4 pressure_resistance = 7 * ONE_ATMOSPHERE diff --git a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm index 36f8f066a4066..bd1f9d53d6c5d 100644 --- a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm +++ b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm @@ -3,7 +3,7 @@ icon = 'icons/obj/atmos.dmi' use_power = NO_POWER_USE max_integrity = 250 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 100, BOMB = 0, BIO = 100, RAD = 100, FIRE = 60, ACID = 30, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 100, BOMB = 0, BIO = 100, FIRE = 60, ACID = 30, STAMINA = 0, BLEED = 0) anchored = FALSE interacts_with_air = TRUE diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm index 1aa6d774f215a..e28a7bba1ecb3 100644 --- a/code/modules/awaymissions/mission_code/snowdin.dm +++ b/code/modules/awaymissions/mission_code/snowdin.dm @@ -543,7 +543,7 @@ /obj/item/clothing/under/syndicate/coldres name = "insulated tactical turtleneck" desc = "A nondescript and slightly suspicious-looking turtleneck with digital camouflage cargo pants. The interior has been padded with special insulation for both warmth and protection." - armor = list(MELEE = 20, BULLET = 10, LASER = 0, ENERGY = 5, BOMB = 0, BIO = 0, RAD = 0, FIRE = 25, ACID = 25, STAMINA = 30, BLEED = 10) + armor = list(MELEE = 20, BULLET = 10, LASER = 0, ENERGY = 5, BOMB = 0, BIO = 0, FIRE = 25, ACID = 25, STAMINA = 30, BLEED = 10) cold_protection = CHEST|GROIN|ARMS|LEGS min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT diff --git a/code/modules/cargo/supplypod.dm b/code/modules/cargo/supplypod.dm index 6f7043fd0ac3b..6d5f7728bcad8 100644 --- a/code/modules/cargo/supplypod.dm +++ b/code/modules/cargo/supplypod.dm @@ -12,7 +12,7 @@ delivery_icon = null can_weld_shut = FALSE divable = FALSE - armor = list(MELEE = 30, BULLET = 50, LASER = 50, ENERGY = 100, BOMB = 100, BIO = 0, RAD = 0, FIRE = 100, ACID = 80, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 30, BULLET = 50, LASER = 50, ENERGY = 100, BOMB = 100, BIO = 0, FIRE = 100, ACID = 80, STAMINA = 0, BLEED = 0) anchored = TRUE //So it cant slide around after landing anchorable = FALSE flags_1 = PREVENT_CONTENTS_EXPLOSION_1 diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm index 90bec770bbb80..f4c1f3f0c391e 100644 --- a/code/modules/clothing/chameleon.dm +++ b/code/modules/clothing/chameleon.dm @@ -356,7 +356,7 @@ random_sensor = FALSE resistance_flags = NONE can_adjust = FALSE - armor = list(MELEE = 10, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 10, BLEED = 10) + armor = list(MELEE = 10, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 50, STAMINA = 10, BLEED = 10) var/datum/action/item_action/chameleon/change/chameleon_action @@ -433,7 +433,7 @@ item_state = "armor" blood_overlay_type = "armor" resistance_flags = NONE - armor = list(MELEE = 10, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 10, BLEED = 10) + armor = list(MELEE = 10, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 50, STAMINA = 10, BLEED = 10) var/datum/action/item_action/chameleon/change/chameleon_action @@ -477,7 +477,7 @@ icon_state = "meson" item_state = "meson" resistance_flags = NONE - armor = list(MELEE = 10, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 10, BLEED = 10) + armor = list(MELEE = 10, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 50, STAMINA = 10, BLEED = 10) var/datum/action/item_action/chameleon/change/chameleon_action @@ -530,7 +530,7 @@ worn_icon_state = "ygloves" resistance_flags = NONE - armor = list(MELEE = 10, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 10, BLEED = 10) + armor = list(MELEE = 10, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 50, STAMINA = 10, BLEED = 10) var/datum/action/item_action/chameleon/change/chameleon_action @@ -581,7 +581,7 @@ min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT heat_protection = HANDS max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT - armor = list(MELEE = 10, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 10, BLEED = 10) + armor = list(MELEE = 10, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 50, STAMINA = 10, BLEED = 10) /obj/item/clothing/head/chameleon name = "grey cap" @@ -591,7 +591,7 @@ clothing_flags = SNUG_FIT icon_state = "greysoft" resistance_flags = NONE - armor = list(MELEE = 5, BULLET = 5, LASER = 5, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 10, BLEED = 10) + armor = list(MELEE = 5, BULLET = 5, LASER = 5, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 50, STAMINA = 10, BLEED = 10) var/datum/action/item_action/chameleon/change/chameleon_action @@ -655,7 +655,7 @@ // The camohat, I mean, holographic hat projection, is part of the // drone itself. clothing_flags = SNUG_FIT - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) // which means it offers no protection, it's just air and light /obj/item/clothing/head/chameleon/drone/Initialize(mapload) @@ -709,7 +709,7 @@ icon_state = "gas_alt" item_state = "gas_alt" resistance_flags = NONE - armor = list(MELEE = 5, BULLET = 5, LASER = 5, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 10, BLEED = 10) + armor = list(MELEE = 5, BULLET = 5, LASER = 5, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 50, STAMINA = 10, BLEED = 10) clothing_flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|HIDEFACIALHAIR|HIDESNOUT gas_transfer_coefficient = 0.01 @@ -778,7 +778,7 @@ /obj/item/clothing/mask/chameleon/drone //Same as the drone chameleon hat, undroppable and no protection - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0, BLEED = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0, BLEED = 10) // Can drones use the voice changer part? Let's not find out. voice_change = FALSE @@ -803,7 +803,7 @@ desc = "A pair of black shoes." permeability_coefficient = 0.05 resistance_flags = NONE - armor = list(MELEE = 10, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 10, BLEED = 10) + armor = list(MELEE = 10, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 50, STAMINA = 10, BLEED = 10) pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes var/datum/action/item_action/chameleon/change/chameleon_action @@ -1043,7 +1043,7 @@ desc = "A neosilk clip-on tie." icon_state = "blacktie" resistance_flags = NONE - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 50, STAMINA = 0, BLEED = 0) /obj/item/clothing/neck/chameleon var/datum/action/item_action/chameleon/change/chameleon_action diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm index 7eb20bdca3c0c..b5abd199ee886 100644 --- a/code/modules/clothing/glasses/_glasses.dm +++ b/code/modules/clothing/glasses/_glasses.dm @@ -144,7 +144,7 @@ actions_types = list(/datum/action/item_action/toggle_research_scanner) glass_colour_type = /datum/client_colour/glass_colour/purple resistance_flags = ACID_PROOF - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 80, ACID = 100, STAMINA = 0, BLEED = 0) /obj/item/clothing/glasses/science/item_action_slot_check(slot) if(slot == ITEM_SLOT_EYES) @@ -156,7 +156,7 @@ icon_state = "prescscihud" emissive_state = "prehud_emissive" resistance_flags = NONE - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 20, ACID = 40, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 20, ACID = 40, STAMINA = 0, BLEED = 0) vision_correction = 1 /obj/item/clothing/glasses/science/sciencesun diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm index 7b6e4a9108017..bb98856881266 100644 --- a/code/modules/clothing/gloves/color.dm +++ b/code/modules/clothing/gloves/color.dm @@ -178,7 +178,7 @@ heat_protection = HANDS max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT strip_delay = 60 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 70, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 70, ACID = 50, STAMINA = 0, BLEED = 0) /obj/item/clothing/gloves/color/latex name = "latex gloves" diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index e993df33d96ca..f2d99c884f3f6 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -25,7 +25,7 @@ heat_protection = HANDS max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT resistance_flags = NONE - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 70, ACID = 30, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 70, ACID = 30, STAMINA = 0, BLEED = 0) /obj/item/clothing/gloves/combat name = "combat gloves" @@ -41,7 +41,7 @@ heat_protection = HANDS max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT resistance_flags = NONE - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 50, STAMINA = 20, BLEED = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 80, ACID = 50, STAMINA = 20, BLEED = 10) /obj/item/clothing/gloves/bracer name = "bone bracers" @@ -57,7 +57,7 @@ min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT resistance_flags = NONE - armor = list(MELEE = 15, BULLET = 35, LASER = 35, ENERGY = 20, BOMB = 35, BIO = 35, RAD = 35, FIRE = 0, ACID = 0, STAMINA = 20, BLEED = 20) + armor = list(MELEE = 15, BULLET = 35, LASER = 35, ENERGY = 20, BOMB = 35, BIO = 35, FIRE = 0, ACID = 0, STAMINA = 20, BLEED = 20) /obj/item/clothing/gloves/rapid name = "Gloves of the North Star" diff --git a/code/modules/clothing/head/beanie.dm b/code/modules/clothing/head/beanie.dm index 5e2360d757310..2ef298633d6c3 100644 --- a/code/modules/clothing/head/beanie.dm +++ b/code/modules/clothing/head/beanie.dm @@ -89,7 +89,7 @@ name = "durathread beanie" desc = "A beanie made from durathread, its resilient fibres provide some protection to the wearer." icon_state = "beaniedurathread" - armor = list(MELEE = 15, BULLET = 25, LASER = 15, ENERGY = 5, BOMB = 10, BIO = 0, RAD = 0, FIRE = 30, ACID = 5, STAMINA = 20, BLEED = 40) + armor = list(MELEE = 15, BULLET = 25, LASER = 15, ENERGY = 5, BOMB = 10, BIO = 0, FIRE = 30, ACID = 5, STAMINA = 20, BLEED = 40) /obj/item/clothing/head/beanie/waldo name = "red striped bobble hat" diff --git a/code/modules/clothing/head/cakehat.dm b/code/modules/clothing/head/cakehat.dm index c461b585a9c62..c10817b43a6f9 100644 --- a/code/modules/clothing/head/cakehat.dm +++ b/code/modules/clothing/head/cakehat.dm @@ -10,7 +10,7 @@ righthand_file = 'icons/mob/inhands/clothing_righthand.dmi' hitsound = 'sound/weapons/tap.ogg' flags_inv = HIDEEARS|HIDEHAIR - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 0) light_range = 2 //luminosity when on flags_cover = HEADCOVERSEYES heat = 1000 //use round numbers, guh diff --git a/code/modules/clothing/head/costume.dm b/code/modules/clothing/head/costume.dm index 23e23c5b6dcd0..8df86e5fd74d0 100644 --- a/code/modules/clothing/head/costume.dm +++ b/code/modules/clothing/head/costume.dm @@ -126,7 +126,7 @@ icon = 'icons/obj/clothing/clockwork_garb.dmi' icon_state = "clockwork_helmet_old" flags_inv = HIDEEARS|HIDEHAIR - armor = list(MELEE = 5, BULLET = 0, LASER = -5, ENERGY = 0, BOMB = 10, BIO = 0, RAD = 0, FIRE = 20, ACID = 20, STAMINA = 30) + armor = list(MELEE = 5, BULLET = 0, LASER = -5, ENERGY = 0, BOMB = 10, BIO = 0, FIRE = 20, ACID = 20, STAMINA = 30) /obj/item/clothing/head/hooded/flashsuit name = "flash button" @@ -163,7 +163,7 @@ desc = "Spaceworthy and it looks like a space carp's head, smells like one too." icon_state = "carp_helm" item_state = "syndicate" - armor = list(MELEE = 20, BULLET = 10, LASER = 20, ENERGY = 20, BOMB = 30, BIO = 100, RAD = 75, FIRE = 60, ACID = 75, STAMINA = 40) + armor = list(MELEE = 20, BULLET = 10, LASER = 20, ENERGY = 20, BOMB = 30, BIO = 100, FIRE = 60, ACID = 75, STAMINA = 40) light_system = NO_LIGHT_SUPPORT light_range = 0 //luminosity when on actions_types = list() @@ -175,13 +175,13 @@ /obj/item/clothing/head/hooded/carp_hood/spaceproof/old name = "battered carp helmet" desc = "It's covered in bite marks and scratches, yet seems to be still perfectly functional." - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, RAD = 50, FIRE = 80, ACID = 70, STAMINA = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 80, ACID = 70, STAMINA = 10) /obj/item/clothing/suit/hooded/carp_costume/spaceproof/old name = "battered carp space suit" desc = "It's covered in bite marks and scratches, yet seems to be still perfectly functional." slowdown = 1 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, RAD = 50, FIRE = 80, ACID = 70, STAMINA = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 80, ACID = 70, STAMINA = 10) allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/multitool) hoodtype = /obj/item/clothing/head/hooded/carp_hood/spaceproof/old @@ -209,11 +209,11 @@ /obj/item/clothing/suit/hooded/bee_costume/syndie name = "BLF costume" - armor = list(MELEE = 20, BULLET = 20, LASER = 20, ENERGY = 40, BOMB = 0, BIO = 60, RAD = 0, FIRE = 0, ACID = 50, STAMINA = 40) + armor = list(MELEE = 20, BULLET = 20, LASER = 20, ENERGY = 40, BOMB = 0, BIO = 60, FIRE = 0, ACID = 50, STAMINA = 40) hoodtype = /obj/item/clothing/head/hooded/bee_hood/syndie /obj/item/clothing/head/hooded/bee_hood/syndie - armor = list(MELEE = 20, BULLET = 20, LASER = 20, ENERGY = 40, BOMB = 0, BIO = 60, RAD = 0, FIRE = 0, ACID = 50, STAMINA = 40) + armor = list(MELEE = 20, BULLET = 20, LASER = 20, ENERGY = 40, BOMB = 0, BIO = 60, FIRE = 0, ACID = 50, STAMINA = 40) /obj/item/clothing/head/hooded/human_head name = "bloated human head" diff --git a/code/modules/clothing/head/crown.dm b/code/modules/clothing/head/crown.dm index 885baaccb51d0..85b2787542228 100644 --- a/code/modules/clothing/head/crown.dm +++ b/code/modules/clothing/head/crown.dm @@ -2,7 +2,7 @@ name = "crown" desc = "A crown fit for a king, a petty king maybe." icon_state = "crown" - armor = list(MELEE = 15, BULLET = 0, LASER = 0, ENERGY = 15, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 50, STAMINA = 40) + armor = list(MELEE = 15, BULLET = 0, LASER = 0, ENERGY = 15, BOMB = 0, BIO = 0, FIRE = 100, ACID = 50, STAMINA = 40) resistance_flags = FIRE_PROOF dynamic_hair_suffix = "" diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index 53a77aaffcd89..2d845abdd844d 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -7,7 +7,7 @@ desc = "A piece of headgear used in dangerous working conditions to protect the head. Comes with a built-in flashlight." icon_state = "hardhat0_yellow" item_state = null - armor = list(MELEE = 15, BULLET = 5, LASER = 20, ENERGY = 10, BOMB = 20, BIO = 10, RAD = 20, FIRE = 100, ACID = 50, STAMINA = 20, BLEED = 60) + armor = list(MELEE = 15, BULLET = 5, LASER = 20, ENERGY = 10, BOMB = 20, BIO = 10, FIRE = 100, ACID = 50, STAMINA = 20, BLEED = 60) flags_inv = NONE actions_types = list(/datum/action/item_action/toggle_helmet_light) resistance_flags = FIRE_PROOF @@ -173,7 +173,7 @@ hat_type = "pumpkin" flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT clothing_flags = SNUG_FIT - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 10) light_range = 2 //luminosity when on flags_cover = HEADCOVERSEYES @@ -187,7 +187,7 @@ item_state = null hat_type = "reindeer" flags_inv = 0 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 0) light_range = 1 //luminosity when on dynamic_hair_suffix = "" diff --git a/code/modules/clothing/head/hat.dm b/code/modules/clothing/head/hat.dm index 1ec1a0b6b5979..b352ddf5c4d2e 100644 --- a/code/modules/clothing/head/hat.dm +++ b/code/modules/clothing/head/hat.dm @@ -8,7 +8,7 @@ desc = "It's good to be emperor." item_state = "that" flags_inv = NONE - armor = list(MELEE = 30, BULLET = 15, LASER = 30, ENERGY = 10, BOMB = 25, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 30) + armor = list(MELEE = 30, BULLET = 15, LASER = 30, ENERGY = 10, BOMB = 25, BIO = 0, FIRE = 50, ACID = 50, STAMINA = 30) strip_delay = 80 clothing_flags = SNUG_FIT // prevents bypassing the strip delay @@ -18,7 +18,7 @@ desc = "Worn by the finest of CentCom commanders. Inside the lining of the cap, lies two faint initials." item_state = "that" flags_inv = 0 - armor = list(MELEE = 30, BULLET = 15, LASER = 30, ENERGY = 10, BOMB = 25, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 30) + armor = list(MELEE = 30, BULLET = 15, LASER = 30, ENERGY = 10, BOMB = 25, BIO = 0, FIRE = 50, ACID = 50, STAMINA = 30) strip_delay = (8 SECONDS) /obj/item/clothing/head/costume/canada @@ -44,7 +44,7 @@ icon_state = "plaguedoctor" clothing_flags = THICKMATERIAL | BLOCK_GAS_SMOKE_EFFECT | SNUG_FIT permeability_coefficient = 0.01 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 0, ACID = 0, STAMINA = 0) flags_inv = HIDEHAIR /obj/item/clothing/head/costume/nursehat diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 9f53df84a6946..f9fd9f19c58ca 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -5,7 +5,7 @@ worn_icon = 'icons/mob/clothing/head/helmet.dmi' icon_state = "helmet" item_state = "helmet" - armor = list(MELEE = 35, BULLET = 30, LASER = 30, ENERGY = 40, BOMB = 25, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 30, BLEED = 50) + armor = list(MELEE = 35, BULLET = 30, LASER = 30, ENERGY = 40, BOMB = 25, BIO = 0, FIRE = 50, ACID = 50, STAMINA = 30, BLEED = 50) flags_inv = HIDEEARS cold_protection = HEAD heat_protection = HEAD @@ -57,7 +57,7 @@ desc = "A bulletproof combat helmet that excels in protecting the wearer against traditional projectile weaponry and explosives to a minor extent." icon_state = "helmetalt" item_state = "helmetalt" - armor = list(MELEE = 15, BULLET = 60, LASER = 10, ENERGY = 15, BOMB = 40, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 30, BLEED = 50) + armor = list(MELEE = 15, BULLET = 60, LASER = 10, ENERGY = 15, BOMB = 40, BIO = 0, FIRE = 50, ACID = 50, STAMINA = 30, BLEED = 50) /obj/item/clothing/head/helmet/alt/Initialize(mapload) . = ..() @@ -116,7 +116,7 @@ item_state = "helmet" toggle_message = "You pull the visor down on" alt_toggle_message = "You push the visor up on" - armor = list(MELEE = 50, BULLET = 10, LASER = 10, ENERGY = 15, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 80, STAMINA = 50, BLEED = 70) + armor = list(MELEE = 50, BULLET = 10, LASER = 10, ENERGY = 15, BOMB = 0, BIO = 0, FIRE = 80, ACID = 80, STAMINA = 50, BLEED = 70) flags_inv = HIDEEARS|HIDEFACE|HIDESNOUT strip_delay = 80 actions_types = list(/datum/action/item_action/toggle) @@ -172,7 +172,7 @@ desc = "An extremely robust, space-worthy helmet in a nefarious red and black stripe pattern." icon_state = "swatsyndie" item_state = "swatsyndie" - armor = list(MELEE = 40, BULLET = 30, LASER = 30, ENERGY = 40, BOMB = 50, BIO = 90, RAD = 20, FIRE = 50, ACID = 50, STAMINA = 50, BLEED = 70) + armor = list(MELEE = 40, BULLET = 30, LASER = 30, ENERGY = 40, BOMB = 50, BIO = 90, FIRE = 50, ACID = 50, STAMINA = 50, BLEED = 70) cold_protection = HEAD min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT heat_protection = HEAD @@ -198,7 +198,7 @@ flags_inv = HIDEEARS|HIDEHAIR icon_state = "thunderdome" item_state = "thunderdome" - armor = list(MELEE = 80, BULLET = 80, LASER = 50, ENERGY = 50, BOMB = 100, BIO = 100, RAD = 100, FIRE = 90, ACID = 90, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 80, BULLET = 80, LASER = 50, ENERGY = 50, BOMB = 100, BIO = 100, FIRE = 90, ACID = 90, STAMINA = 0, BLEED = 0) cold_protection = HEAD min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT heat_protection = HEAD @@ -208,14 +208,14 @@ /obj/item/clothing/head/helmet/thunderdome/holosuit cold_protection = null heat_protection = null - armor = list(MELEE = 10, BULLET = 10, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 10, BULLET = 10, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) /obj/item/clothing/head/helmet/roman name = "\improper Roman helmet" desc = "An ancient helmet made of bronze and leather." flags_inv = HIDEEARS|HIDEHAIR flags_cover = HEADCOVERSEYES - armor = list(MELEE = 25, BULLET = 0, LASER = 25, ENERGY = 30, BOMB = 10, BIO = 0, RAD = 0, FIRE = 100, ACID = 50, STAMINA = 40, BLEED = 50) + armor = list(MELEE = 25, BULLET = 0, LASER = 25, ENERGY = 30, BOMB = 10, BIO = 0, FIRE = 100, ACID = 50, STAMINA = 40, BLEED = 50) resistance_flags = FIRE_PROOF icon_state = "roman" item_state = "roman" @@ -223,7 +223,7 @@ /obj/item/clothing/head/helmet/roman/fake desc = "An ancient helmet made of plastic and leather." - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0, BLEED = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0, BLEED = 10) /obj/item/clothing/head/helmet/roman/legionnaire name = "\improper Roman legionnaire helmet" @@ -233,7 +233,7 @@ /obj/item/clothing/head/helmet/roman/legionnaire/fake desc = "An ancient helmet made of plastic and leather. Has a red crest on top of it." - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0, BLEED = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0, BLEED = 10) /obj/item/clothing/head/helmet/gladiator name = "gladiator helmet" @@ -249,7 +249,7 @@ icon_state = "redtaghelm" flags_cover = HEADCOVERSEYES item_state = "redtaghelm" - armor = list(MELEE = 15, BULLET = 10, LASER = 20, ENERGY = 30, BOMB = 20, BIO = 0, RAD = 0, FIRE = 0, ACID = 50, STAMINA = 10, BLEED = 10) + armor = list(MELEE = 15, BULLET = 10, LASER = 20, ENERGY = 30, BOMB = 20, BIO = 0, FIRE = 0, ACID = 50, STAMINA = 10, BLEED = 10) /obj/item/clothing/head/helmet/bluetaghelm name = "blue laser tag helmet" @@ -257,14 +257,14 @@ icon_state = "bluetaghelm" flags_cover = HEADCOVERSEYES item_state = "bluetaghelm" - armor = list(MELEE = 15, BULLET = 10, LASER = 20, ENERGY = 30, BOMB = 20, BIO = 0, RAD = 0, FIRE = 0, ACID = 50, STAMINA = 10, BLEED = 10) + armor = list(MELEE = 15, BULLET = 10, LASER = 20, ENERGY = 30, BOMB = 20, BIO = 0, FIRE = 0, ACID = 50, STAMINA = 10, BLEED = 10) /obj/item/clothing/head/helmet/knight name = "medieval helmet" desc = "A classic metal helmet." icon_state = "knight_green" item_state = "knight_green" - armor = list(MELEE = 50, BULLET = 10, LASER = 10, ENERGY = 10, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 80, STAMINA = 50, BLEED = 10) + armor = list(MELEE = 50, BULLET = 10, LASER = 10, ENERGY = 10, BOMB = 0, BIO = 0, FIRE = 80, ACID = 80, STAMINA = 50, BLEED = 10) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH strip_delay = 80 @@ -287,7 +287,7 @@ desc = "An intimidating tribal helmet, it doesn't look very comfortable." flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDESNOUT flags_cover = HEADCOVERSEYES - armor = list(MELEE = 35, BULLET = 25, LASER = 25, ENERGY = 10, BOMB = 25, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 20, BLEED = 40) + armor = list(MELEE = 35, BULLET = 25, LASER = 25, ENERGY = 10, BOMB = 25, BIO = 0, FIRE = 50, ACID = 50, STAMINA = 20, BLEED = 40) icon_state = "skull" item_state = "skull" strip_delay = 100 @@ -298,7 +298,7 @@ icon_state = "durathread" item_state = "durathread" resistance_flags = FLAMMABLE - armor = list(MELEE = 20, BULLET = 40, LASER = 30, ENERGY = 5, BOMB = 15, BIO = 0, RAD = 0, FIRE = 40, ACID = 50, STAMINA = 30, BLEED = 60) + armor = list(MELEE = 20, BULLET = 40, LASER = 30, ENERGY = 5, BOMB = 15, BIO = 0, FIRE = 40, ACID = 50, STAMINA = 30, BLEED = 60) strip_delay = 60 /obj/item/clothing/head/helmet/rus_helmet @@ -306,7 +306,7 @@ desc = "It can hold a bottle of vodka." icon_state = "rus_helmet" item_state = "rus_helmet" - armor = list(MELEE = 25, BULLET = 30, LASER = 0, ENERGY = 15, BOMB = 10, BIO = 0, RAD = 20, FIRE = 20, ACID = 50, STAMINA = 20, BLEED = 15) + armor = list(MELEE = 25, BULLET = 30, LASER = 0, ENERGY = 15, BOMB = 10, BIO = 0, FIRE = 20, ACID = 50, STAMINA = 20, BLEED = 15) pocket_storage_component_path = /datum/component/storage/concrete/pockets/helmet /obj/item/clothing/head/helmet/rus_ushanka @@ -317,7 +317,7 @@ body_parts_covered = HEAD cold_protection = HEAD min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT - armor = list(MELEE = 25, BULLET = 20, LASER = 20, ENERGY = 10, BOMB = 20, BIO = 50, RAD = 20, FIRE = -10, ACID = 50, STAMINA = 20, BLEED = 15) + armor = list(MELEE = 25, BULLET = 20, LASER = 20, ENERGY = 10, BOMB = 20, BIO = 50, FIRE = -10, ACID = 50, STAMINA = 20, BLEED = 15) /obj/item/clothing/head/helmet/outlaw name = "outlaw's hat" @@ -328,4 +328,4 @@ item_state = "cowboy" worn_icon_state = "cowboy_outlaw" body_parts_covered = HEAD - armor = list(MELEE = 25, BULLET = 25, LASER = 20, ENERGY = 10, BOMB = 30, BIO = 30, RAD = 20, FIRE = 0, ACID = 40, STAMINA = 25, BLEED = 15) + armor = list(MELEE = 25, BULLET = 25, LASER = 20, ENERGY = 10, BOMB = 30, BIO = 30, FIRE = 0, ACID = 40, STAMINA = 25, BLEED = 15) diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index debc8f0c7bc1d..f39861b430ead 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -32,7 +32,7 @@ icon_state = "captain" item_state = "that" flags_inv = 0 - armor = list(MELEE = 25, BULLET = 15, LASER = 25, ENERGY = 30, BOMB = 25, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 30, BLEED = 30) + armor = list(MELEE = 25, BULLET = 15, LASER = 25, ENERGY = 30, BOMB = 25, BIO = 0, FIRE = 50, ACID = 50, STAMINA = 30, BLEED = 30) strip_delay = 60 dog_fashion = /datum/dog_fashion/head/captain dying_key = DYE_REGISTRY_CAP @@ -50,7 +50,7 @@ name = "head of personnel's cap" icon_state = "hopcap" desc = "The symbol of true bureaucratic micromanagement." - armor = list(MELEE = 25, BULLET = 15, LASER = 25, ENERGY = 30, BOMB = 25, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 30, BLEED = 15) + armor = list(MELEE = 25, BULLET = 15, LASER = 25, ENERGY = 30, BOMB = 25, BIO = 0, FIRE = 50, ACID = 50, STAMINA = 30, BLEED = 15) dog_fashion = /datum/dog_fashion/head/hop dying_key = DYE_REGISTRY_CAP @@ -74,7 +74,7 @@ /obj/item/clothing/head/fedora/det_hat name = "detective's fedora" desc = "There's only one man who can sniff out the dirty stench of crime, and he's likely wearing this hat." - armor = list(MELEE = 25, BULLET = 5, LASER = 25, ENERGY = 30, BOMB = 0, BIO = 0, RAD = 0, FIRE = 30, ACID = 50, STAMINA = 25, BLEED = 20) + armor = list(MELEE = 25, BULLET = 5, LASER = 25, ENERGY = 30, BOMB = 0, BIO = 0, FIRE = 30, ACID = 50, STAMINA = 25, BLEED = 20) icon_state = "detective" item_state = "det_hat" var/candy_cooldown = 0 @@ -171,7 +171,7 @@ name = "durathread beret" desc = "A beret made from durathread, its resilient fibres provide some protection to the wearer." icon_state = "beretdurathread" - armor = list(MELEE = 15, BULLET = 25, LASER = 15, ENERGY = 20, BOMB = 10, BIO = 0, RAD = 0, FIRE = 30, ACID = 5, STAMINA = 20, BLEED = 45) + armor = list(MELEE = 15, BULLET = 25, LASER = 15, ENERGY = 20, BOMB = 10, BIO = 0, FIRE = 30, ACID = 5, STAMINA = 20, BLEED = 45) //Security @@ -179,7 +179,7 @@ name = "head of security cap" desc = "The robust standard-issue cap of the Head of Security. For showing the officers who's in charge." icon_state = "hoscap" - armor = list(MELEE = 40, BULLET = 30, LASER = 25, ENERGY = 30, BOMB = 25, BIO = 10, RAD = 0, FIRE = 50, ACID = 60, STAMINA = 30, BLEED = 30) + armor = list(MELEE = 40, BULLET = 30, LASER = 25, ENERGY = 30, BOMB = 25, BIO = 10, FIRE = 50, ACID = 60, STAMINA = 30, BLEED = 30) strip_delay = 80 dynamic_hair_suffix = "" dying_key = DYE_REGISTRY_CAP @@ -205,7 +205,7 @@ name = "warden's police hat" desc = "It's a special armored hat issued to the Warden of a security force. Protects the head from impacts." icon_state = "policehelm" - armor = list(MELEE = 40, BULLET = 30, LASER = 30, ENERGY = 30, BOMB = 25, BIO = 0, RAD = 0, FIRE = 30, ACID = 60, STAMINA = 30, BLEED = 25) + armor = list(MELEE = 40, BULLET = 30, LASER = 30, ENERGY = 30, BOMB = 25, BIO = 0, FIRE = 30, ACID = 60, STAMINA = 30, BLEED = 25) strip_delay = 60 dog_fashion = /datum/dog_fashion/head/warden @@ -282,14 +282,14 @@ name = "corporate warden beret" desc = "A special black beret with the Warden's insignia in the middle. This one is commonly worn by wardens of the corporation." icon_state = "beret_corporate_warden" - armor = list(MELEE = 40, BULLET = 30, LASER = 30, ENERGY = 30, BOMB = 25, BIO = 0, RAD = 0, FIRE = 30, ACID = 60, STAMINA = 30, BLEED = 25) + armor = list(MELEE = 40, BULLET = 30, LASER = 30, ENERGY = 30, BOMB = 25, BIO = 0, FIRE = 30, ACID = 60, STAMINA = 30, BLEED = 25) strip_delay = 60 /obj/item/clothing/head/beret/sec name = "security beret" desc = "A robust beret with the security insignia emblazoned on it. Uses reinforced fabric to offer sufficient protection." icon_state = "beret_badge" - armor = list(MELEE = 35, BULLET = 30, LASER = 30, ENERGY = 40, BOMB = 25, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 30, BLEED = 25) + armor = list(MELEE = 35, BULLET = 30, LASER = 30, ENERGY = 40, BOMB = 25, BIO = 0, FIRE = 50, ACID = 50, STAMINA = 30, BLEED = 25) strip_delay = 60 dog_fashion = null @@ -297,14 +297,14 @@ name = "corporate security beret" desc = "A special black beret for the mundane life of a corporate security officer." icon_state = "beret_corporate_officer" - armor = list(MELEE = 40, BULLET = 30, LASER = 30, ENERGY = 30, BOMB = 25, BIO = 0, RAD = 0, FIRE = 20, ACID = 50, STAMINA = 30, BLEED = 25) + armor = list(MELEE = 40, BULLET = 30, LASER = 30, ENERGY = 30, BOMB = 25, BIO = 0, FIRE = 20, ACID = 50, STAMINA = 30, BLEED = 25) strip_delay = 60 /obj/item/clothing/head/beret/spacepol name = "spacepol officer beret" desc = "A special black beret for the mundane life of a SpacePol officer." icon_state = "beret_corporate_officer" - armor = list(MELEE = 40, BULLET = 30, LASER = 30, ENERGY = 30, BOMB = 25, BIO = 0, RAD = 0, FIRE = 20, ACID = 50, STAMINA = 30, BLEED = 25) + armor = list(MELEE = 40, BULLET = 30, LASER = 30, ENERGY = 30, BOMB = 25, BIO = 0, FIRE = 20, ACID = 50, STAMINA = 30, BLEED = 25) strip_delay = 60 /obj/item/clothing/head/beret/sec/navyhos @@ -316,7 +316,7 @@ name = "warden's beret" desc = "A special beret with the Warden's insignia emblazoned on it. For wardens with class." icon_state = "wardenberet" - armor = list(MELEE = 40, BULLET = 30, LASER = 30, ENERGY = 10, BOMB = 25, BIO = 0, RAD = 0, FIRE = 30, ACID = 50, STAMINA = 30, BLEED = 25) + armor = list(MELEE = 40, BULLET = 30, LASER = 30, ENERGY = 10, BOMB = 25, BIO = 0, FIRE = 30, ACID = 50, STAMINA = 30, BLEED = 25) strip_delay = 60 /obj/item/clothing/head/beret/sec/navyofficer @@ -333,35 +333,35 @@ name = "engineering beret" desc = "A beret with the engineering insignia emblazoned on it. For engineers that are more inclined towards style than safety." icon_state = "beret_engineering" - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 10, FIRE = 10, ACID = 0, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 10, ACID = 0, STAMINA = 0, BLEED = 0) strip_delay = 60 /obj/item/clothing/head/beret/atmos name = "atmospherics beret" desc = "A beret for those who have shown immaculate proficienty in piping. Or plumbing." icon_state = "beret_atmospherics" - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 10, FIRE = 10, ACID = 0, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 10, ACID = 0, STAMINA = 0, BLEED = 0) strip_delay = 60 /obj/item/clothing/head/beret/ce name = "chief engineer beret" desc = "A white beret with the engineering insignia emblazoned on it. Its owner knows what they're doing. Probably." icon_state = "beret_ce" - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 20, FIRE = 30, ACID = 0, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 30, ACID = 0, STAMINA = 0, BLEED = 0) strip_delay = 60 /obj/item/clothing/head/beret/sci name = "science beret" desc = "A purple beret with the science insignia emblazoned on it. It has that authentic burning plasma smell." icon_state = "beret_sci" - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 5, BIO = 5, RAD = 0, FIRE = 5, ACID = 10, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 5, BIO = 5, FIRE = 5, ACID = 10, STAMINA = 0, BLEED = 0) strip_delay = 60 /obj/item/clothing/head/beret/supply name = "supply beret" desc = "A brown beret with the supply insignia emblazoned on it. You can't help but wonder how much it'd sell for." icon_state = "beret_supply" - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 10, FIRE = 10, ACID = 0, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 10, ACID = 0, STAMINA = 0, BLEED = 0) strip_delay = 60 //Medical @@ -369,14 +369,14 @@ name = "medical beret" desc = "A white beret with a blue cross finely threaded into it. It has that sterile smell about it." icon_state = "beret_med" - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 20, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 20, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) strip_delay = 60 /obj/item/clothing/head/beret/cmo name = "chief medical officer beret" desc = "A baby blue beret with the insignia of Medistan. It smells very sterile." icon_state = "beret_cmo" - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 30, RAD = 10, FIRE = 0, ACID = 20, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 30, FIRE = 0, ACID = 20, STAMINA = 0, BLEED = 0) strip_delay = 60 //CentCom diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index d90996a26bbc4..711eceef6f44f 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -19,7 +19,7 @@ custom_materials = list(/datum/material/iron=1750, /datum/material/glass=400) flash_protect = 2 tint = 2 - armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 60, STAMINA = 5) + armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 100, ACID = 60, STAMINA = 5) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDESNOUT actions_types = list(/datum/action/item_action/toggle) visor_flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDESNOUT diff --git a/code/modules/clothing/head/soft_caps.dm b/code/modules/clothing/head/soft_caps.dm index ffeb296e16c42..cc197ad3e4afa 100644 --- a/code/modules/clothing/head/soft_caps.dm +++ b/code/modules/clothing/head/soft_caps.dm @@ -100,7 +100,7 @@ desc = "It's a robust baseball hat in tasteful red colour." icon_state = "secsoft" soft_color = "sec" - armor = list(MELEE = 30, BULLET = 25, LASER = 25, ENERGY = 10, BOMB = 25, BIO = 0, RAD = 0, FIRE = 20, ACID = 50, STAMINA = 30, BLEED = 10) + armor = list(MELEE = 30, BULLET = 25, LASER = 25, ENERGY = 10, BOMB = 25, BIO = 0, FIRE = 20, ACID = 50, STAMINA = 30, BLEED = 10) strip_delay = 60 /obj/item/clothing/head/soft/sec/brig_physician diff --git a/code/modules/clothing/head/tinfoilhat.dm b/code/modules/clothing/head/tinfoilhat.dm index d7474119fadd2..0e5aac952c4bf 100644 --- a/code/modules/clothing/head/tinfoilhat.dm +++ b/code/modules/clothing/head/tinfoilhat.dm @@ -4,7 +4,7 @@ icon_state = "foilhat" item_state = null clothing_flags = EFFECT_HAT | SNUG_FIT - armor = list(MELEE = 0, BULLET = 0, LASER = -5, ENERGY = 0, BOMB = 0, BIO = 0, RAD = -5, FIRE = 0, ACID = 0, STAMINA = 50) + armor = list(MELEE = 0, BULLET = 0, LASER = -5, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 50) equip_delay_other = 140 var/datum/brain_trauma/mild/phobia/conspiracies/paranoia var/mutable_appearance/psychic_overlay @@ -61,7 +61,7 @@ item_state = "tinfoil_envirohelm" strip_delay = 150 clothing_flags = STOPSPRESSUREDAMAGE | EFFECT_HAT | SNUG_FIT | HEADINTERNALS - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 50) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 50, ACID = 50, STAMINA = 50) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR light_system = MOVABLE_LIGHT light_range = 4 diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index 0b11d95207a2c..07daadfa15b98 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -28,7 +28,7 @@ custom_materials = list(/datum/material/iron=4000, /datum/material/glass=2000) flash_protect = 2 tint = 2 - armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 55, STAMINA = 15, BLEED = 5) + armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 100, ACID = 55, STAMINA = 15, BLEED = 5) actions_types = list(/datum/action/item_action/toggle) flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|HIDESNOUT flags_cover = MASKCOVERSEYES @@ -53,7 +53,7 @@ desc = "A modernised version of the classic design, this mask will not only filter out toxins but it can also be connected to an air supply." icon_state = "plaguedoctor" item_state = "gas_mask" - armor = list(MELEE = 0, BULLET = 0, LASER = 2, ENERGY = 2, BOMB = 0, BIO = 75, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 2, ENERGY = 2, BOMB = 0, BIO = 75, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) /obj/item/clothing/mask/gas/syndicate name = "syndicate mask" diff --git a/code/modules/clothing/masks/hailer.dm b/code/modules/clothing/masks/hailer.dm index 7dd01b5036195..e3b03cf0c29b9 100644 --- a/code/modules/clothing/masks/hailer.dm +++ b/code/modules/clothing/masks/hailer.dm @@ -33,7 +33,7 @@ aggressiveness = 3 flags_inv = HIDEFACIALHAIR | HIDEFACE | HIDEEYES | HIDEEARS | HIDEHAIR | HIDESNOUT visor_flags_inv = 0 - armor = list(MELEE = 10, BULLET = 5, LASER = 5, ENERGY = 5, BOMB = 0, BIO = 50, RAD = 0, FIRE = 20, ACID = 40, STAMINA = 30, BLEED = 30) + armor = list(MELEE = 10, BULLET = 5, LASER = 5, ENERGY = 5, BOMB = 0, BIO = 50, FIRE = 20, ACID = 40, STAMINA = 30, BLEED = 30) /obj/item/clothing/mask/gas/sechailer/swat/spacepol name = "spacepol mask" diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index 36de595d0c701..d4dd5f766121b 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -28,7 +28,7 @@ visor_flags_cover = MASKCOVERSMOUTH gas_transfer_coefficient = 0.9 permeability_coefficient = 0.01 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 25, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 25, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) actions_types = list(/datum/action/item_action/adjust) /obj/item/clothing/mask/surgical/attack_self(mob/user) diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm index 6e3a364ab8ff3..bec86b1900578 100644 --- a/code/modules/clothing/shoes/magboots.dm +++ b/code/modules/clothing/shoes/magboots.dm @@ -65,7 +65,7 @@ icon_state = "advmag0" magboot_state = "advmag" slowdown_active = SHOES_SLOWDOWN - armor = list(MELEE = 40, BULLET = 30, LASER = 25, ENERGY = 25, BOMB = 50, BIO = 30, RAD = 30, FIRE = 90, ACID = 50, STAMINA = 30, BLEED = 40) + armor = list(MELEE = 40, BULLET = 30, LASER = 25, ENERGY = 25, BOMB = 50, BIO = 30, FIRE = 90, ACID = 50, STAMINA = 30, BLEED = 40) clothing_flags = NOSLIP /obj/item/clothing/shoes/magboots/commando/attack_self(mob/user) //Code for the passive no-slip of the commando magboots to always apply, kind of a shit code solution though. diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index 062fd6927148f..e6e826a32f602 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -6,7 +6,7 @@ item_state = "jackboots" lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' - armor = list(MELEE = 25, BULLET = 25, LASER = 25, ENERGY = 25, BOMB = 50, BIO = 10, RAD = 0, FIRE = 70, ACID = 50, STAMINA = 30, BLEED = 20) + armor = list(MELEE = 25, BULLET = 25, LASER = 25, ENERGY = 25, BOMB = 50, BIO = 10, FIRE = 70, ACID = 50, STAMINA = 30, BLEED = 20) strip_delay = 40 resistance_flags = NONE permeability_coefficient = 0.05 //Thick soles, and covers the ankle @@ -17,7 +17,7 @@ desc = "High speed, no drag combat boots." permeability_coefficient = 0.01 clothing_flags = NOSLIP - armor = list(MELEE = 40, BULLET = 30, LASER = 25, ENERGY = 25, BOMB = 50, BIO = 30, RAD = 30, FIRE = 90, ACID = 50, STAMINA = 30, BLEED = 20) + armor = list(MELEE = 40, BULLET = 30, LASER = 25, ENERGY = 25, BOMB = 50, BIO = 30, FIRE = 90, ACID = 50, STAMINA = 30, BLEED = 20) /obj/item/clothing/shoes/sandal desc = "A pair of rather plain wooden sandals." @@ -50,7 +50,7 @@ strip_delay = 30 equip_delay_other = 50 resistance_flags = NONE - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 40, ACID = 75, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 40, ACID = 75, STAMINA = 0, BLEED = 0) can_be_bloody = FALSE custom_price = 100 diff --git a/code/modules/clothing/spacesuits/_spacesuits.dm b/code/modules/clothing/spacesuits/_spacesuits.dm index 10f1173c51507..fa46bf2736967 100644 --- a/code/modules/clothing/spacesuits/_spacesuits.dm +++ b/code/modules/clothing/spacesuits/_spacesuits.dm @@ -11,7 +11,7 @@ desc = "A special helmet with solar UV shielding to protect your eyes from harmful rays." clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | SNUG_FIT | HEADINTERNALS permeability_coefficient = 0.01 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, RAD = 50, FIRE = 80, ACID = 70, STAMINA = 10, BLEED = 50) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 80, ACID = 70, STAMINA = 10, BLEED = 50) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT dynamic_hair_suffix = "" dynamic_fhair_suffix = "" @@ -43,7 +43,7 @@ /obj/item/tank/internals, ) slowdown = 1 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, RAD = 50, FIRE = 80, ACID = 70, STAMINA = 10, BLEED = 50) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 80, ACID = 70, STAMINA = 10, BLEED = 50) flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT_OFF diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm index a9dbc7b1f9c47..0bc8fe78f8cfb 100644 --- a/code/modules/clothing/spacesuits/chronosuit.dm +++ b/code/modules/clothing/spacesuits/chronosuit.dm @@ -4,7 +4,7 @@ icon_state = "chronohelmet" item_state = "chronohelmet" slowdown = 1 - armor = list(MELEE = 60, BULLET = 60, LASER = 60, ENERGY = 60, BOMB = 30, BIO = 90, RAD = 90, FIRE = 100, ACID = 100, STAMINA = 70, BLEED = 80) + armor = list(MELEE = 60, BULLET = 60, LASER = 60, ENERGY = 60, BOMB = 30, BIO = 90, FIRE = 100, ACID = 100, STAMINA = 70, BLEED = 80) resistance_flags = FIRE_PROOF | ACID_PROOF var/obj/item/clothing/suit/space/chronos/suit @@ -24,7 +24,7 @@ icon_state = "chronosuit" item_state = "chronosuit" actions_types = list(/datum/action/item_action/toggle_spacesuit, /datum/action/item_action/toggle) - armor = list(MELEE = 60, BULLET = 60, LASER = 60, ENERGY = 60, BOMB = 30, BIO = 90, RAD = 90, FIRE = 100, ACID = 1000, STAMINA = 70, BLEED = 80) + armor = list(MELEE = 60, BULLET = 60, LASER = 60, ENERGY = 60, BOMB = 30, BIO = 90, FIRE = 100, ACID = 1000, STAMINA = 70, BLEED = 80) resistance_flags = FIRE_PROOF | ACID_PROOF var/list/chronosafe_items = list(/obj/item/chrono_eraser, /obj/item/gun/energy/chrono_gun) var/obj/item/clothing/head/helmet/space/chronos/helmet diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 448e6be1c812e..b2c6a910b9e77 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -10,7 +10,7 @@ icon_state = "hardsuit0-engineering" item_state = "eng_helm" max_integrity = 300 - armor = list(MELEE = 10, BULLET = 5, LASER = 10, ENERGY = 15, BOMB = 10, BIO = 100, RAD = 75, FIRE = 50, ACID = 75, STAMINA = 20, BLEED = 70) + armor = list(MELEE = 10, BULLET = 5, LASER = 10, ENERGY = 15, BOMB = 10, BIO = 100, FIRE = 50, ACID = 75, STAMINA = 20, BLEED = 70) light_system = MOVABLE_LIGHT_DIRECTIONAL light_range = 4 light_power = 1 @@ -136,7 +136,7 @@ icon_state = "hardsuit-engineering" item_state = "eng_hardsuit" max_integrity = 300 - armor = list(MELEE = 10, BULLET = 5, LASER = 10, ENERGY = 15, BOMB = 10, BIO = 100, RAD = 75, FIRE = 50, ACID = 75, STAMINA = 20, BLEED = 70) + armor = list(MELEE = 10, BULLET = 5, LASER = 10, ENERGY = 15, BOMB = 10, BIO = 100, FIRE = 50, ACID = 75, STAMINA = 20, BLEED = 70) allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/t_scanner, /obj/item/construction/rcd, /obj/item/pipe_dispenser) siemens_coefficient = 0 var/obj/item/clothing/head/helmet/space/hardsuit/helmet @@ -281,7 +281,7 @@ desc = "A special helmet designed for work in a hazardous, low-pressure environment. Has radiation shielding." icon_state = "hardsuit0-engineering" item_state = "eng_helm" - armor = list(MELEE = 30, BULLET = 5, LASER = 10, ENERGY = 12, BOMB = 10, BIO = 100, RAD = 75, FIRE = 100, ACID = 75, STAMINA = 20, BLEED = 70) + armor = list(MELEE = 30, BULLET = 5, LASER = 10, ENERGY = 12, BOMB = 10, BIO = 100, FIRE = 100, ACID = 75, STAMINA = 20, BLEED = 70) hardsuit_type = "engineering" resistance_flags = FIRE_PROOF @@ -290,7 +290,7 @@ desc = "A special suit that protects against hazardous, low pressure environments. Has radiation shielding." icon_state = "hardsuit-engineering" item_state = "eng_hardsuit" - armor = list(MELEE = 30, BULLET = 5, LASER = 10, ENERGY = 15, BOMB = 10, BIO = 100, RAD = 75, FIRE = 100, ACID = 75, STAMINA = 20, BLEED = 70) + armor = list(MELEE = 30, BULLET = 5, LASER = 10, ENERGY = 15, BOMB = 10, BIO = 100, FIRE = 100, ACID = 75, STAMINA = 20, BLEED = 70) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine resistance_flags = FIRE_PROOF @@ -301,7 +301,7 @@ icon_state = "hardsuit0-atmospherics" item_state = "atmo_helm" hardsuit_type = "atmospherics" - armor = list(MELEE = 30, BULLET = 5, LASER = 10, ENERGY = 15, BOMB = 10, BIO = 100, RAD = 25, FIRE = 100, ACID = 75, STAMINA = 20, BLEED = 70) + armor = list(MELEE = 30, BULLET = 5, LASER = 10, ENERGY = 15, BOMB = 10, BIO = 100, FIRE = 100, ACID = 75, STAMINA = 20, BLEED = 70) heat_protection = HEAD //Uncomment to enable firesuit protection max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT @@ -310,7 +310,7 @@ desc = "A special suit that protects against hazardous, low pressure environments. Has thermal shielding." icon_state = "hardsuit-atmospherics" item_state = "atmo_hardsuit" - armor = list(MELEE = 30, BULLET = 5, LASER = 10, ENERGY = 15, BOMB = 10, BIO = 100, RAD = 25, FIRE = 100, ACID = 75, STAMINA = 20, BLEED = 70) + armor = list(MELEE = 30, BULLET = 5, LASER = 10, ENERGY = 15, BOMB = 10, BIO = 100, FIRE = 100, ACID = 75, STAMINA = 20, BLEED = 70) heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS //Uncomment to enable firesuit protection max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine/atmos @@ -323,7 +323,7 @@ icon_state = "hardsuit0-white" item_state = "ce_helm" hardsuit_type = "white" - armor = list(MELEE = 40, BULLET = 5, LASER = 10, ENERGY = 15, BOMB = 50, BIO = 100, RAD = 100, FIRE = 100, ACID = 90, STAMINA = 30, BLEED = 70) + armor = list(MELEE = 40, BULLET = 5, LASER = 10, ENERGY = 15, BOMB = 50, BIO = 100, FIRE = 100, ACID = 90, STAMINA = 30, BLEED = 70) heat_protection = HEAD max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT @@ -332,7 +332,7 @@ name = "advanced hardsuit" desc = "An advanced suit that protects against hazardous, low pressure environments. Shines with a high polish." item_state = "ce_hardsuit" - armor = list(MELEE = 40, BULLET = 5, LASER = 10, ENERGY = 20, BOMB = 50, BIO = 100, RAD = 100, FIRE = 100, ACID = 90, STAMINA = 30, BLEED = 70) + armor = list(MELEE = 40, BULLET = 5, LASER = 10, ENERGY = 20, BOMB = 50, BIO = 100, FIRE = 100, ACID = 90, STAMINA = 30, BLEED = 70) heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine/elite @@ -349,7 +349,7 @@ max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF heat_protection = HEAD - armor = list(MELEE = 30, BULLET = 5, LASER = 10, ENERGY = 15, BOMB = 50, BIO = 100, RAD = 50, FIRE = 50, ACID = 75, STAMINA = 40, BLEED = 70) + armor = list(MELEE = 30, BULLET = 5, LASER = 10, ENERGY = 15, BOMB = 50, BIO = 100, FIRE = 50, ACID = 75, STAMINA = 40, BLEED = 70) light_range = 7 allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator) high_pressure_multiplier = 0.6 @@ -366,7 +366,7 @@ max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF supports_variations = DIGITIGRADE_VARIATION - armor = list(MELEE = 30, BULLET = 5, LASER = 10, ENERGY = 20, BOMB = 50, BIO = 100, RAD = 50, FIRE = 50, ACID = 75, STAMINA = 40, BLEED = 70) + armor = list(MELEE = 30, BULLET = 5, LASER = 10, ENERGY = 20, BOMB = 50, BIO = 100, FIRE = 50, ACID = 75, STAMINA = 40, BLEED = 70) allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/storage/bag/ore, /obj/item/pickaxe) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/mining heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS @@ -384,7 +384,7 @@ item_state = "death_commando_mask" hardsuit_type = "exploration" heat_protection = HEAD - armor = list(MELEE = 35, BULLET = 15, LASER = 20, ENERGY = 10, BOMB = 50, BIO = 100, RAD = 50, FIRE = 50, ACID = 75, STAMINA = 20, BLEED = 70) + armor = list(MELEE = 35, BULLET = 15, LASER = 20, ENERGY = 10, BOMB = 50, BIO = 100, FIRE = 50, ACID = 75, STAMINA = 20, BLEED = 70) light_range = 6 allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator) actions_types = list( @@ -409,7 +409,7 @@ desc = "An advanced space-proof hardsuit designed to protect against off-station threats. Despite looking remarkably similar to the mining hardsuit \ Nanotrasen officials note that it is unique in every way and the design has not been copied in any way." item_state = "exploration_hardsuit" - armor = list(MELEE = 35, BULLET = 15, LASER = 20, ENERGY = 10, BOMB = 50, BIO = 100, RAD = 50, FIRE = 50, ACID = 75, STAMINA = 20, BLEED = 70) + armor = list(MELEE = 35, BULLET = 15, LASER = 20, ENERGY = 10, BOMB = 50, BIO = 100, FIRE = 50, ACID = 75, STAMINA = 20, BLEED = 70) allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/storage/bag/ore, /obj/item/pickaxe) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/exploration heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS @@ -422,7 +422,7 @@ icon_state = "hardsuit0-cybersun" item_state = "death_commando_mask" hardsuit_type = "cybersun" - armor = list(MELEE = 30, BULLET = 35, LASER = 15, ENERGY = 15, BOMB = 60, BIO = 100, RAD = 55, FIRE = 30, ACID = 60, STAMINA = 15, BLEED = 70) + armor = list(MELEE = 30, BULLET = 35, LASER = 15, ENERGY = 15, BOMB = 60, BIO = 100, FIRE = 30, ACID = 60, STAMINA = 15, BLEED = 70) strip_delay = 600 /obj/item/clothing/suit/space/hardsuit/cybersun @@ -431,7 +431,7 @@ desc = "A bulky, protective suit designed to protect against the perils facing Cybersun Employed Engineers, Researchers, and more as they head from the safety of \ more stable employment to the dangers of Nanotrasen Controlled Deep Space. Designed to get the job done despite on-site hazards in derelicts, laser armor was \ sacrificed in favor of more effective blunt armor plates and radiation shielding." - armor = list(MELEE = 30, BULLET = 35, LASER = 15, ENERGY = 15, BOMB = 60, BIO = 100, RAD = 55, FIRE = 30, ACID = 60, STAMINA = 15, BLEED = 70) + armor = list(MELEE = 30, BULLET = 35, LASER = 15, ENERGY = 15, BOMB = 60, BIO = 100, FIRE = 30, ACID = 60, STAMINA = 15, BLEED = 70) hardsuit_type = "cybersun" item_state = "death_commando_mask" helmettype = /obj/item/clothing/head/helmet/space/hardsuit/cybersun @@ -445,7 +445,7 @@ icon_state = "hardsuit1-syndi" item_state = "syndie_helm" hardsuit_type = "syndi" - armor = list(MELEE = 40, BULLET = 50, LASER = 30, ENERGY = 55, BOMB = 35, BIO = 100, RAD = 50, FIRE = 50, ACID = 90, STAMINA = 60, BLEED = 70) + armor = list(MELEE = 40, BULLET = 50, LASER = 30, ENERGY = 55, BOMB = 35, BIO = 100, FIRE = 50, ACID = 90, STAMINA = 60, BLEED = 70) on = TRUE var/obj/item/clothing/suit/space/hardsuit/syndi/linkedsuit = null actions_types = list( @@ -536,7 +536,7 @@ hardsuit_type = "syndi" w_class = WEIGHT_CLASS_NORMAL supports_variations = DIGITIGRADE_VARIATION - armor = list(MELEE = 40, BULLET = 50, LASER = 30, ENERGY = 55, BOMB = 35, BIO = 100, RAD = 50, FIRE = 50, ACID = 90, STAMINA = 60, BLEED = 70) + armor = list(MELEE = 40, BULLET = 50, LASER = 30, ENERGY = 55, BOMB = 35, BIO = 100, FIRE = 50, ACID = 90, STAMINA = 60, BLEED = 70) allowed = list(/obj/item/gun, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi jetpack = /obj/item/tank/jetpack/suit @@ -611,7 +611,7 @@ alt_desc = "An elite version of the syndicate helmet, with improved armour and fireproofing. It is in combat mode. Property of Gorlex Marauders." icon_state = "hardsuit0-syndielite" hardsuit_type = "syndielite" - armor = list(MELEE = 60, BULLET = 60, LASER = 50, ENERGY = 80, BOMB = 55, BIO = 100, RAD = 70, FIRE = 100, ACID = 100, STAMINA = 80, BLEED = 70) + armor = list(MELEE = 60, BULLET = 60, LASER = 50, ENERGY = 80, BOMB = 55, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 80, BLEED = 70) heat_protection = HEAD max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | ACID_PROOF @@ -623,7 +623,7 @@ icon_state = "hardsuit0-syndielite" hardsuit_type = "syndielite" helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/elite - armor = list(MELEE = 60, BULLET = 60, LASER = 50, ENERGY = 80, BOMB = 55, BIO = 100, RAD = 70, FIRE = 100, ACID = 100, STAMINA = 80, BLEED = 70) + armor = list(MELEE = 60, BULLET = 60, LASER = 50, ENERGY = 80, BOMB = 55, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 80, BLEED = 70) heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | ACID_PROOF @@ -659,7 +659,7 @@ item_state = "wiz_helm" hardsuit_type = "wiz" resistance_flags = FIRE_PROOF | ACID_PROOF //No longer shall our kind be foiled by lone chemists with spray bottles! - armor = list(MELEE = 40, BULLET = 40, LASER = 40, ENERGY = 50, BOMB = 35, BIO = 100, RAD = 50, FIRE = 100, ACID = 100, STAMINA = 70, BLEED = 70) + armor = list(MELEE = 40, BULLET = 40, LASER = 40, ENERGY = 50, BOMB = 35, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 70, BLEED = 70) heat_protection = HEAD //Uncomment to enable firesuit protection max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT @@ -670,7 +670,7 @@ item_state = "wiz_hardsuit" w_class = WEIGHT_CLASS_NORMAL resistance_flags = FIRE_PROOF | ACID_PROOF - armor = list(MELEE = 40, BULLET = 40, LASER = 40, ENERGY = 50, BOMB = 35, BIO = 100, RAD = 50, FIRE = 100, ACID = 100, STAMINA = 70, BLEED = 70) + armor = list(MELEE = 40, BULLET = 40, LASER = 40, ENERGY = 50, BOMB = 35, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 70, BLEED = 70) allowed = list(/obj/item/teleportation_scroll, /obj/item/tank/internals) heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS //Uncomment to enable firesuit protection max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT @@ -693,7 +693,7 @@ item_state = "medical_helm" hardsuit_type = "medical" flash_protect = 0 - armor = list(MELEE = 30, BULLET = 5, LASER = 10, ENERGY = 15, BOMB = 10, BIO = 100, RAD = 60, FIRE = 60, ACID = 75, STAMINA = 20, BLEED = 70) + armor = list(MELEE = 30, BULLET = 5, LASER = 10, ENERGY = 15, BOMB = 10, BIO = 100, FIRE = 60, ACID = 75, STAMINA = 20, BLEED = 70) clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | SNUG_FIT | SCAN_REAGENTS | HEADINTERNALS /obj/item/clothing/suit/space/hardsuit/medical @@ -703,7 +703,7 @@ item_state = "medical_hardsuit" supports_variations = DIGITIGRADE_VARIATION allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/storage/firstaid, /obj/item/healthanalyzer, /obj/item/stack/medical) - armor = list(MELEE = 30, BULLET = 5, LASER = 10, ENERGY = 15, BOMB = 10, BIO = 100, RAD = 60, FIRE = 60, ACID = 75, STAMINA = 20, BLEED = 70) + armor = list(MELEE = 30, BULLET = 5, LASER = 10, ENERGY = 15, BOMB = 10, BIO = 100, FIRE = 60, ACID = 75, STAMINA = 20, BLEED = 70) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/medical slowdown = 0.5 @@ -724,7 +724,7 @@ hardsuit_type = "rd" resistance_flags = ACID_PROOF | FIRE_PROOF max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT - armor = list(MELEE = 30, BULLET = 5, LASER = 10, ENERGY = 15, BOMB = 100, BIO = 100, RAD = 60, FIRE = 60, ACID = 80, STAMINA = 30, BLEED = 70) + armor = list(MELEE = 30, BULLET = 5, LASER = 10, ENERGY = 15, BOMB = 100, BIO = 100, FIRE = 60, ACID = 80, STAMINA = 30, BLEED = 70) var/obj/machinery/doppler_array/integrated/bomb_radar clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | SNUG_FIT | SCAN_REAGENTS | HEADINTERNALS actions_types = list( @@ -758,7 +758,7 @@ max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT //Same as an emergency firesuit. Not ideal for extended exposure. allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/gun/energy/wormhole_projector, /obj/item/hand_tele, /obj/item/aicard) - armor = list(MELEE = 30, BULLET = 5, LASER = 10, ENERGY = 15, BOMB = 100, BIO = 100, RAD = 60, FIRE = 60, ACID = 80, STAMINA = 30, BLEED = 70) + armor = list(MELEE = 30, BULLET = 5, LASER = 10, ENERGY = 15, BOMB = 100, BIO = 100, FIRE = 60, ACID = 80, STAMINA = 30, BLEED = 70) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/rd cell = /obj/item/stock_parts/cell/super @@ -773,7 +773,7 @@ icon_state = "hardsuit0-sec" item_state = "sec_helm" hardsuit_type = "sec" - armor = list(MELEE = 35, BULLET = 35, LASER = 30, ENERGY = 50, BOMB = 40, BIO = 100, RAD = 50, FIRE = 75, ACID = 75, STAMINA = 50, BLEED = 70) + armor = list(MELEE = 35, BULLET = 35, LASER = 30, ENERGY = 50, BOMB = 40, BIO = 100, FIRE = 75, ACID = 75, STAMINA = 50, BLEED = 70) /obj/item/clothing/suit/space/hardsuit/security @@ -782,7 +782,7 @@ desc = "A bulky, armored suit designed to protect security personnel in low pressure environments." item_state = "sec_hardsuit" supports_variations = DIGITIGRADE_VARIATION - armor = list(MELEE = 35, BULLET = 35, LASER = 30, ENERGY = 50, BOMB = 40, BIO = 100, RAD = 50, FIRE = 75, ACID = 75, STAMINA = 50, BLEED = 70) + armor = list(MELEE = 35, BULLET = 35, LASER = 30, ENERGY = 50, BOMB = 40, BIO = 100, FIRE = 75, ACID = 75, STAMINA = 50, BLEED = 70) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security /obj/item/clothing/suit/space/hardsuit/security/Initialize(mapload) @@ -795,7 +795,7 @@ desc = "A bulky, armored helmet designed to protect security personnel in low pressure environments. This one has markings for the head of security." icon_state = "hardsuit0-hos" hardsuit_type = "hos" - armor = list(MELEE = 35, BULLET = 35, LASER = 30, ENERGY = 50, BOMB = 40, BIO = 100, RAD = 50, FIRE = 75, ACID = 75, STAMINA = 50, BLEED = 70) + armor = list(MELEE = 35, BULLET = 35, LASER = 30, ENERGY = 50, BOMB = 40, BIO = 100, FIRE = 75, ACID = 75, STAMINA = 50, BLEED = 70) /obj/item/clothing/suit/space/hardsuit/security/head_of_security @@ -803,7 +803,7 @@ name = "head of security's hardsuit" supports_variations = DIGITIGRADE_VARIATION desc = "A bulky, armored suit designed to protect security personnel in low pressure environments. This one has markings for the head of security." - armor = list(MELEE = 35, BULLET = 35, LASER = 30, ENERGY = 50, BOMB = 40, BIO = 100, RAD = 50, FIRE = 75, ACID = 75, STAMINA = 50, BLEED = 70) + armor = list(MELEE = 35, BULLET = 35, LASER = 30, ENERGY = 50, BOMB = 40, BIO = 100, FIRE = 75, ACID = 75, STAMINA = 50, BLEED = 70) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security/hos jetpack = /obj/item/tank/jetpack/suit cell = /obj/item/stock_parts/cell/super @@ -814,7 +814,7 @@ icon_state = "swat2helm" item_state = "swat2helm" desc = "A tactical SWAT helmet MK.II." - armor = list(MELEE = 40, BULLET = 50, LASER = 50, ENERGY = 60, BOMB = 50, BIO = 100, RAD = 50, FIRE = 100, ACID = 100, STAMINA = 60, BLEED = 70) + armor = list(MELEE = 40, BULLET = 50, LASER = 50, ENERGY = 60, BOMB = 50, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 60, BLEED = 70) resistance_flags = FIRE_PROOF | ACID_PROOF flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT heat_protection = HEAD @@ -828,7 +828,7 @@ desc = "A MK.II SWAT suit with streamlined joints and armor made out of superior materials, insulated against intense heat. The most advanced tactical armor available." icon_state = "swat2" item_state = "swat2" - armor = list(MELEE = 40, BULLET = 50, LASER = 50, ENERGY = 60, BOMB = 50, BIO = 100, RAD = 50, FIRE = 100, ACID = 100, STAMINA = 60, BLEED = 70) + armor = list(MELEE = 40, BULLET = 50, LASER = 50, ENERGY = 60, BOMB = 50, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 60, BLEED = 70) resistance_flags = FIRE_PROOF | ACID_PROOF heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT //this needed to be added a long fucking time ago @@ -860,7 +860,7 @@ desc = "A special helmet designed for work in a hazardous, low-humor environment. Has radiation shielding." icon_state = "hardsuit0-clown" item_state = "hardsuit0-clown" - armor = list(MELEE = 30, BULLET = 5, LASER = 10, ENERGY = 20, BOMB = 10, BIO = 100, RAD = 75, FIRE = 60, ACID = 30, STAMINA = 20, BLEED = 70) + armor = list(MELEE = 30, BULLET = 5, LASER = 10, ENERGY = 20, BOMB = 10, BIO = 100, FIRE = 60, ACID = 30, STAMINA = 20, BLEED = 70) hardsuit_type = "clown" /obj/item/clothing/suit/space/hardsuit/clown @@ -868,7 +868,7 @@ desc = "A special suit that protects against hazardous, low humor environments. Has radiation shielding. Only a true clown can wear it." icon_state = "hardsuit-clown" item_state = "clown_hardsuit" - armor = list(MELEE = 30, BULLET = 5, LASER = 10, ENERGY = 20, BOMB = 10, BIO = 100, RAD = 75, FIRE = 60, ACID = 30, STAMINA = 20, BLEED = 70) + armor = list(MELEE = 30, BULLET = 5, LASER = 10, ENERGY = 20, BOMB = 10, BIO = 100, FIRE = 60, ACID = 30, STAMINA = 20, BLEED = 70) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/clown /obj/item/clothing/suit/space/hardsuit/clown/mob_can_equip(mob/M, mob/living/equipper, slot, disable_warning = FALSE, bypass_equip_delay_self = FALSE) @@ -886,7 +886,7 @@ desc = "Early prototype RIG hardsuit helmet, designed to quickly shift over a user's head. Design constraints of the helmet mean it has no inbuilt cameras, thus it restricts the users visability." icon_state = "hardsuit0-ancient" item_state = "anc_helm" - armor = list(MELEE = 30, BULLET = 5, LASER = 5, ENERGY = 10, BOMB = 50, BIO = 100, RAD = 100, FIRE = 100, ACID = 75, STAMINA = 30, BLEED = 70) + armor = list(MELEE = 30, BULLET = 5, LASER = 5, ENERGY = 10, BOMB = 50, BIO = 100, FIRE = 100, ACID = 75, STAMINA = 30, BLEED = 70) allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/gun/energy/plasmacutter, /obj/item/gun/energy/plasmacutter/adv, /obj/item/gun/energy/laser/retro, /obj/item/gun/energy/laser/retro/old, /obj/item/gun/energy/e_gun/old) hardsuit_type = "ancient" resistance_flags = FIRE_PROOF @@ -896,7 +896,7 @@ desc = "Prototype powered RIG hardsuit. Provides excellent protection from the elements of space while being comfortable to move around in, thanks to the powered locomotives. Remains very bulky however." icon_state = "hardsuit-ancient" item_state = "anc_hardsuit" - armor = list(MELEE = 30, BULLET = 5, LASER = 5, ENERGY = 10, BOMB = 50, BIO = 100, RAD = 100, FIRE = 100, ACID = 75, STAMINA = 30, BLEED = 70) + armor = list(MELEE = 30, BULLET = 5, LASER = 5, ENERGY = 10, BOMB = 50, BIO = 100, FIRE = 100, ACID = 75, STAMINA = 30, BLEED = 70) allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/storage/bag/ore, /obj/item/pickaxe, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/gun/energy/laser/retro, /obj/item/gun/energy/laser/retro/old, /obj/item/gun/energy/e_gun/old) slowdown = 3 helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ancient @@ -912,7 +912,7 @@ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security/hos allowed = null supports_variations = DIGITIGRADE_VARIATION - armor = list(MELEE = 30, BULLET = 15, LASER = 30, ENERGY = 40, BOMB = 10, BIO = 100, RAD = 50, FIRE = 100, ACID = 100, STAMINA = 60, BLEED = 70) + armor = list(MELEE = 30, BULLET = 15, LASER = 30, ENERGY = 40, BOMB = 10, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 60, BLEED = 70) resistance_flags = FIRE_PROOF | ACID_PROOF /obj/item/clothing/suit/space/hardsuit/shielded/setup_shielding() @@ -932,7 +932,7 @@ worn_icon = 'icons/mob/clothing/suits/ctf.dmi' icon_state = "standard" // Adding TRAIT_NODROP is done when the CTF spawner equips people - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) // CTF gear gives no protection outside of the shield + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) // CTF gear gives no protection outside of the shield allowed = null greyscale_config = /datum/greyscale_config/ctf_standard greyscale_config_worn = /datum/greyscale_config/ctf_standard_worn @@ -999,7 +999,7 @@ icon_state = "hardsuit1-syndi" item_state = "syndie_hardsuit" hardsuit_type = "syndi" - armor = list(MELEE = 40, BULLET = 50, LASER = 30, ENERGY = 40, BOMB = 35, BIO = 100, RAD = 50, FIRE = 100, ACID = 100, STAMINA = 60, BLEED = 70) + armor = list(MELEE = 40, BULLET = 50, LASER = 30, ENERGY = 40, BOMB = 35, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 60, BLEED = 70) allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi slowdown = 0 @@ -1035,7 +1035,7 @@ icon_state = "hardsuit1-syndi" item_state = "syndie_helm" hardsuit_type = "syndi" - armor = list(MELEE = 40, BULLET = 50, LASER = 30, ENERGY = 40, BOMB = 35, BIO = 100, RAD = 50, FIRE = 100, ACID = 100, STAMINA = 60, BLEED = 70) + armor = list(MELEE = 40, BULLET = 50, LASER = 30, ENERGY = 40, BOMB = 35, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 60, BLEED = 70) actions_types = list( /datum/action/item_action/toggle_helmet_light, /datum/action/item_action/toggle_beacon_hud @@ -1065,7 +1065,7 @@ icon_state = "deathsquad" item_state = "swat_suit" hardsuit_type = "syndi" - armor = list(MELEE = 80, BULLET = 80, LASER = 50, ENERGY =60, BOMB = 100, BIO = 100, RAD = 100, FIRE = 100, ACID = 100, STAMINA = 100, BLEED = 100) + armor = list(MELEE = 80, BULLET = 80, LASER = 50, ENERGY =60, BOMB = 100, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 100, BLEED = 100) strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT jetpack = /obj/item/tank/jetpack/suit @@ -1081,7 +1081,7 @@ icon_state = "deathsquad" item_state = "deathsquad" hardsuit_type = "syndi" - armor = list(MELEE = 80, BULLET = 80, LASER = 50, ENERGY = 60, BOMB = 100, BIO = 100, RAD = 100, FIRE = 100, ACID = 100, STAMINA = 100, BLEED = 100) + armor = list(MELEE = 80, BULLET = 80, LASER = 50, ENERGY = 60, BOMB = 100, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 100, BLEED = 100) strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT actions_types = list() @@ -1108,7 +1108,7 @@ desc = "A somehow spaceworthy set of armor with outstanding protection against almost everything. Comes in an oddly nostalgic green. " icon_state = "doomguy" item_state = "doomguy" - armor = list(MELEE = 135, BULLET = 135, LASER = 135, ENERGY = 135, BOMB = 135, BIO = 100, RAD = 100, FIRE = 100, ACID = 100, STAMINA = 100, BLEED = 100) + armor = list(MELEE = 135, BULLET = 135, LASER = 135, ENERGY = 135, BOMB = 135, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 100, BLEED = 100) strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | ACID_PROOF | LAVA_PROOF @@ -1123,7 +1123,7 @@ desc = "A dusty old helmet, somehow capable of resisting the strongest of blows." icon_state = "doomguy" item_state = "doomguy" - armor = list(MELEE = 135, BULLET = 135, LASER = 135, ENERGY = 135, BOMB = 135, BIO = 100, RAD = 100, FIRE = 100, ACID = 100, STAMINA = 100, BLEED = 100) + armor = list(MELEE = 135, BULLET = 135, LASER = 135, ENERGY = 135, BOMB = 135, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 100, BLEED = 100) strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT actions_types = list() diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index af61ae8dab4be..49a157c01e8cc 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -22,7 +22,7 @@ Contains: desc = "An advanced tactical space helmet." icon_state = "deathsquad" item_state = "deathsquad" - armor = list(MELEE = 80, BULLET = 80, LASER = 50, ENERGY = 50, BOMB = 100, BIO = 100, RAD = 100, FIRE = 100, ACID = 100, STAMINA = 100, BLEED = 100) + armor = list(MELEE = 80, BULLET = 80, LASER = 50, ENERGY = 50, BOMB = 100, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 100, BLEED = 100) strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | ACID_PROOF @@ -37,7 +37,7 @@ Contains: icon_state = "deathsquad" item_state = "swat_suit" allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/knife/combat) - armor = list(MELEE = 80, BULLET = 80, LASER = 50, ENERGY = 50, BOMB = 100, BIO = 100, RAD = 100, FIRE = 100, ACID = 100, STAMINA = 100, BLEED = 100) + armor = list(MELEE = 80, BULLET = 80, LASER = 50, ENERGY = 50, BOMB = 100, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 100, BLEED = 100) strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | ACID_PROOF @@ -56,7 +56,7 @@ Contains: dynamic_hair_suffix = "+generic" dynamic_fhair_suffix = "+generic" flags_inv = 0 - armor = list(MELEE = 80, BULLET = 80, LASER = 50, ENERGY = 50, BOMB = 100, BIO = 100, RAD = 100, FIRE = 100, ACID = 100, STAMINA = 100, BLEED = 100) + armor = list(MELEE = 80, BULLET = 80, LASER = 50, ENERGY = 50, BOMB = 100, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 100, BLEED = 100) strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | ACID_PROOF @@ -75,7 +75,7 @@ Contains: flags_inv = 0 w_class = WEIGHT_CLASS_NORMAL allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals) - armor = list(MELEE = 80, BULLET = 80, LASER = 50, ENERGY = 50, BOMB = 100, BIO = 100, RAD = 100, FIRE = 100, ACID = 100, STAMINA = 100, BLEED = 100) + armor = list(MELEE = 80, BULLET = 80, LASER = 50, ENERGY = 50, BOMB = 100, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 100, BLEED = 100) strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | ACID_PROOF @@ -116,7 +116,7 @@ Contains: worn_icon = 'icons/mob/clothing/head/costume.dmi' icon_state = "pirate" item_state = "pirate" - armor = list(MELEE = 30, BULLET = 50, LASER = 30, ENERGY = 15, BOMB = 30, BIO = 30, RAD = 30, FIRE = 60, ACID = 75, STAMINA = 20, BLEED = 20) + armor = list(MELEE = 30, BULLET = 50, LASER = 30, ENERGY = 15, BOMB = 30, BIO = 30, FIRE = 60, ACID = 75, STAMINA = 20, BLEED = 20) flags_inv = HIDEHAIR strip_delay = 40 equip_delay_other = 20 @@ -137,7 +137,7 @@ Contains: w_class = WEIGHT_CLASS_NORMAL allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/melee/transforming/energy/sword/pirate, /obj/item/clothing/glasses/eyepatch, /obj/item/reagent_containers/food/drinks/bottle/rum) slowdown = 0 - armor = list(MELEE = 30, BULLET = 50, LASER = 30, ENERGY = 15, BOMB = 30, BIO = 30, RAD = 30, FIRE = 60, ACID = 75, STAMINA = 20, BLEED = 20) + armor = list(MELEE = 30, BULLET = 50, LASER = 30, ENERGY = 15, BOMB = 30, BIO = 30, FIRE = 60, ACID = 75, STAMINA = 20, BLEED = 20) strip_delay = 40 equip_delay_other = 20 @@ -147,7 +147,7 @@ Contains: desc = "The integrated helmet of an ERT hardsuit, this one has blue highlights." icon_state = "hardsuit0-ert_commander" item_state = "hardsuit0-ert_commander" - armor = list(MELEE = 65, BULLET = 50, LASER = 50, ENERGY = 50, BOMB = 50, BIO = 100, RAD = 100, FIRE = 80, ACID = 80, STAMINA = 70, BLEED = 70) + armor = list(MELEE = 65, BULLET = 50, LASER = 50, ENERGY = 50, BOMB = 50, BIO = 100, FIRE = 80, ACID = 80, STAMINA = 70, BLEED = 70) strip_delay = 130 light_range = 7 resistance_flags = FIRE_PROOF @@ -185,7 +185,7 @@ Contains: item_state = "ert_command" helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals) - armor = list(MELEE = 65, BULLET = 50, LASER = 50, ENERGY = 50, BOMB = 50, BIO = 100, RAD = 100, FIRE = 80, ACID = 80, STAMINA = 70, BLEED = 70) + armor = list(MELEE = 65, BULLET = 50, LASER = 50, ENERGY = 50, BOMB = 50, BIO = 100, FIRE = 80, ACID = 80, STAMINA = 70, BLEED = 70) slowdown = 0 strip_delay = 130 resistance_flags = FIRE_PROOF @@ -284,7 +284,7 @@ Contains: icon_state = "space" item_state = "eva_suit" desc = "A lightweight space suit with the basic ability to protect the wearer from the vacuum of space during emergencies." - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, RAD = 20, FIRE = 50, ACID = 65, STAMINA = 0, BLEED = 0, BLEED = 30) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 50, ACID = 65, STAMINA = 0, BLEED = 0, BLEED = 30) /obj/item/clothing/head/helmet/space/eva name = "EVA helmet" @@ -292,7 +292,7 @@ Contains: item_state = "eva_helmet" desc = "A lightweight space helmet with the basic ability to protect the wearer from the vacuum of space during emergencies." flash_protect = 0 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, RAD = 20, FIRE = 50, ACID = 65, STAMINA = 0, BLEED = 0, BLEED = 30) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 50, ACID = 65, STAMINA = 0, BLEED = 0, BLEED = 30) /obj/item/clothing/head/helmet/space/freedom name = "eagle helmet" @@ -301,7 +301,7 @@ Contains: worn_icon = 'icons/mob/clothing/head/costume.dmi' icon_state = "griffinhat" item_state = null - armor = list(MELEE = 20, BULLET = 40, LASER = 30, ENERGY = 25, BOMB = 100, BIO = 100, RAD = 100, FIRE = 80, ACID = 80, STAMINA = 10, BLEED = 30) + armor = list(MELEE = 20, BULLET = 40, LASER = 30, ENERGY = 25, BOMB = 100, BIO = 100, FIRE = 80, ACID = 80, STAMINA = 10, BLEED = 30) strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = ACID_PROOF | FIRE_PROOF @@ -312,7 +312,7 @@ Contains: icon_state = "freedom" item_state = "freedom" allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals) - armor = list(MELEE = 20, BULLET = 40, LASER = 30, ENERGY = 25, BOMB = 100, BIO = 100, RAD = 100, FIRE = 80, ACID = 80, STAMINA = 10, BLEED = 30) + armor = list(MELEE = 20, BULLET = 40, LASER = 30, ENERGY = 25, BOMB = 100, BIO = 100, FIRE = 80, ACID = 80, STAMINA = 10, BLEED = 30) strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = ACID_PROOF | FIRE_PROOF @@ -393,7 +393,7 @@ Contains: desc = "A bulky, air-tight helmet meant to protect the user during emergency situations. It doesn't look very durable." icon_state = "syndicate-helm-orange" item_state = "syndicate-helm-orange" - armor = list(MELEE = 5, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, RAD = 10, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 5) + armor = list(MELEE = 5, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 5) strip_delay = 65 flash_protect = 0 @@ -404,7 +404,7 @@ Contains: icon_state = "syndicate-orange" item_state = "syndicate-orange" slowdown = 2 - armor = list(MELEE = 5, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, RAD = 10, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 5) + armor = list(MELEE = 5, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 5) strip_delay = 65 w_class = WEIGHT_CLASS_NORMAL @@ -424,7 +424,7 @@ Contains: icon_state = "hunter" item_state = "swat_suit" allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/knife/combat) - armor = list(melee = 60, bullet = 40, laser = 40, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100, stamina = 70, BLEED = 70) + armor = list(melee = 60, bullet = 40, laser = 40, energy = 50, bomb = 100, bio = 100, fire = 100, acid = 100, stamina = 70, BLEED = 70) strip_delay = 130 resistance_flags = FIRE_PROOF | ACID_PROOF cell = /obj/item/stock_parts/cell/hyper @@ -438,7 +438,7 @@ Contains: max_integrity = 200 desc = "An airtight helmet meant to protect the wearer during emergency situations." permeability_coefficient = 0.01 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 20, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 20, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 10) min_cold_protection_temperature = EMERGENCY_HELM_MIN_TEMP_PROTECT heat_protection = NONE flash_protect = 0 @@ -467,7 +467,7 @@ Contains: species_restricted = null gas_transfer_coefficient = 0.5 permeability_coefficient = 0.5 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 10) allowed = list(/obj/item/flashlight, /obj/item/tank/internals) min_cold_protection_temperature = EMERGENCY_SUIT_MIN_TEMP_PROTECT heat_protection = NONE @@ -483,4 +483,4 @@ Contains: icon_state = "hunter" item_state = "hunter" resistance_flags = FIRE_PROOF | ACID_PROOF - armor = list(MELEE = 5, BULLET = 5, LASER = 5, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 20, BLEED = 40) + armor = list(MELEE = 5, BULLET = 5, LASER = 5, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 20, BLEED = 40) diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm index a5b0dd6acb854..3b94ff02de6e0 100644 --- a/code/modules/clothing/spacesuits/plasmamen.dm +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -5,7 +5,7 @@ name = "EVA plasma envirosuit" desc = "A special plasma containment suit designed to be space-worthy, as well as worn over other clothing. Like its smaller counterpart, it can automatically extinguish the wearer in a crisis, and holds twice as many charges." allowed = list(/obj/item/gun, /obj/item/ammo_casing, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword, /obj/item/restraints/handcuffs, /obj/item/tank) - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, RAD = 0, FIRE = 100, ACID = 75, STAMINA = 0, BLEED = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 100, ACID = 75, STAMINA = 0, BLEED = 10) resistance_flags = FIRE_PROOF icon_state = "plasmaman_suit" item_state = "plasmaman_suit" @@ -51,7 +51,7 @@ strip_delay = 80 flash_protect = 2 tint = 2 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, RAD = 0, FIRE = 100, ACID = 75, STAMINA = 0, BLEED = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 100, ACID = 75, STAMINA = 0, BLEED = 10) resistance_flags = FIRE_PROOF light_system = MOVABLE_LIGHT_DIRECTIONAL light_range = 4 @@ -244,7 +244,7 @@ name = "security envirosuit helmet" desc = "A plasmaman containment helmet designed for security officers, protecting them from burning alive, along-side other undesirables." greyscale_colors = "#9F2A2E#2D2D2D#7D282D" - armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, RAD = 0, FIRE = 100, ACID = 75, STAMINA = 10, BLEED = 10) + armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 100, ACID = 75, STAMINA = 10, BLEED = 10) /obj/item/clothing/head/helmet/space/plasmaman/security/warden name = "warden's envirosuit helmet" @@ -295,7 +295,7 @@ name = "engineering envirosuit helmet" desc = "A space-worthy helmet specially designed for engineer plasmamen, the usual purple stripes being replaced by engineering's orange." greyscale_colors = "#F0DE00#D75600#F0DE00" - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, RAD = 10, FIRE = 100, ACID = 75, STAMINA = 0, BLEED = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 100, ACID = 75, STAMINA = 0, BLEED = 10) max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT /obj/item/clothing/head/helmet/space/plasmaman/engineering/atmospherics @@ -461,7 +461,7 @@ name = "security Mk.II envirosuit helmet" desc = "A stylish new iteration upon the original plasmaman containment helmet design for security officers, retaining all the old protections for a new era of fragile law enforcement." greyscale_colors = "#9F2A2E#2D2D2D" - armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, RAD = 0, FIRE = 100, ACID = 75, STAMINA = 10, BLEED = 10) + armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 100, ACID = 75, STAMINA = 10, BLEED = 10) /obj/item/clothing/head/helmet/space/plasmaman/mark2/security/warden name = "warden's Mk.II envirosuit helmet" @@ -512,7 +512,7 @@ name = "engineering Mk.II envirosuit helmet" desc = "A new iteration upon the classic space-worthy design, painted in classic engineering pigments." greyscale_colors = "#E8D700#D75600" - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, RAD = 10, FIRE = 100, ACID = 75, STAMINA = 0, BLEED = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 100, ACID = 75, STAMINA = 0, BLEED = 10) max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT /obj/item/clothing/head/helmet/space/plasmaman/mark2/engineering/atmospherics @@ -713,7 +713,7 @@ name = "engineering protective envirosuit helmet" desc = "A safer looking re-imagining of the classic space-worthy design, painted in classic engineering pigments." greyscale_colors = "#E8D700#D75600" - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, RAD = 10, FIRE = 100, ACID = 75, STAMINA = 0, BLEED = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 100, ACID = 75, STAMINA = 0, BLEED = 10) max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT /obj/item/clothing/head/helmet/space/plasmaman/protective/engineering/atmospherics diff --git a/code/modules/clothing/spacesuits/swat.dm b/code/modules/clothing/spacesuits/swat.dm index 0d9d3929d15eb..b862a7096dd65 100644 --- a/code/modules/clothing/spacesuits/swat.dm +++ b/code/modules/clothing/spacesuits/swat.dm @@ -12,7 +12,7 @@ /obj/item/tank/internals, /obj/item/knife/combat ) - armor = list(MELEE = 40, BULLET = 30, LASER = 30, ENERGY = 30, BOMB = 50, BIO = 90, RAD = 20, FIRE = 100, ACID = 100, STAMINA = 60) + armor = list(MELEE = 40, BULLET = 30, LASER = 30, ENERGY = 30, BOMB = 50, BIO = 90, FIRE = 100, ACID = 100, STAMINA = 60) strip_delay = 120 resistance_flags = FIRE_PROOF | ACID_PROOF move_sound = list('sound/effects/suitstep1.ogg', 'sound/effects/suitstep2.ogg') diff --git a/code/modules/clothing/spacesuits/syndi.dm b/code/modules/clothing/spacesuits/syndi.dm index 8d6552506a5ca..aaac26f855f6f 100644 --- a/code/modules/clothing/spacesuits/syndi.dm +++ b/code/modules/clothing/spacesuits/syndi.dm @@ -4,7 +4,7 @@ icon_state = "syndicate" item_state = "syndicate" desc = "Has a tag on it: Totally not property of an enemy corporation, honest!" - armor = list(MELEE = 40, BULLET = 50, LASER = 30, ENERGY = 40, BOMB = 30, BIO = 30, RAD = 30, FIRE = 80, ACID = 85, STAMINA = 50, BLEED = 40) + armor = list(MELEE = 40, BULLET = 50, LASER = 30, ENERGY = 40, BOMB = 30, BIO = 30, FIRE = 80, ACID = 85, STAMINA = 50, BLEED = 40) /obj/item/clothing/suit/space/syndicate name = "red space suit" @@ -13,7 +13,7 @@ desc = "Has a tag on it: Totally not property of an enemy corporation, honest!" w_class = WEIGHT_CLASS_NORMAL allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) - armor = list(MELEE = 40, BULLET = 50, LASER = 30, ENERGY = 40, BOMB = 30, BIO = 30, RAD = 30, FIRE = 80, ACID = 85, STAMINA = 50, BLEED = 40) + armor = list(MELEE = 40, BULLET = 50, LASER = 30, ENERGY = 40, BOMB = 30, BIO = 30, FIRE = 80, ACID = 85, STAMINA = 50, BLEED = 40) cell = /obj/item/stock_parts/cell/hyper //Green syndicate space suit diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm index a2411a769ca29..c70694d2540c7 100644 --- a/code/modules/clothing/suits/_suits.dm +++ b/code/modules/clothing/suits/_suits.dm @@ -10,7 +10,7 @@ /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman ) - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 5) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 5) slot_flags = ITEM_SLOT_OCLOTHING var/blood_overlay_type = "suit" var/move_sound = null diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index c4738d10b14c4..df6099112840c 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -11,7 +11,7 @@ equip_delay_other = 40 max_integrity = 250 resistance_flags = NONE - armor = list(MELEE = 30, BULLET = 30, LASER = 30, ENERGY = 40, BOMB = 25, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 30, BLEED = 50) + armor = list(MELEE = 30, BULLET = 30, LASER = 30, ENERGY = 40, BOMB = 25, BIO = 0, FIRE = 50, ACID = 50, STAMINA = 30, BLEED = 50) clothing_flags = THICKMATERIAL slowdown = 0.08 @@ -46,7 +46,7 @@ icon_state = "blueshift" item_state = null custom_premium_price = 600 - armor = list(MELEE = 40, BULLET = 40, LASER = 40, ENERGY = 45, BOMB = 30, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 40) + armor = list(MELEE = 40, BULLET = 40, LASER = 40, ENERGY = 45, BOMB = 30, BIO = 0, FIRE = 50, ACID = 50, STAMINA = 40) slowdown = 0.14 /obj/item/clothing/suit/armor/vest/corporate @@ -55,7 +55,7 @@ icon_state = "secjacket" item_state = "secjacket" body_parts_covered = CHEST|ARMS - armor = list(MELEE = 25, BULLET = 25, LASER = 25, ENERGY = 35, BOMB = 20, BIO = 0, RAD = 0, FIRE = 45, ACID = 45, STAMINA = 30, BLEED = 20) + armor = list(MELEE = 25, BULLET = 25, LASER = 25, ENERGY = 35, BOMB = 20, BIO = 0, FIRE = 45, ACID = 45, STAMINA = 30, BLEED = 20) slowdown = 0.02 /obj/item/clothing/suit/armor/hos @@ -64,7 +64,7 @@ icon_state = "hos" item_state = "greatcoat" body_parts_covered = CHEST|GROIN|ARMS|LEGS - armor = list(MELEE = 30, BULLET = 30, LASER = 30, ENERGY = 40, BOMB = 25, BIO = 0, RAD = 0, FIRE = 70, ACID = 90, STAMINA = 40, BLEED = 40) + armor = list(MELEE = 30, BULLET = 30, LASER = 30, ENERGY = 40, BOMB = 25, BIO = 0, FIRE = 70, ACID = 90, STAMINA = 40, BLEED = 40) cold_protection = CHEST|GROIN|LEGS|ARMS heat_protection = CHEST|GROIN|LEGS|ARMS strip_delay = 80 @@ -115,7 +115,7 @@ icon_state = "capcarapace" item_state = "armor" body_parts_covered = CHEST|GROIN - armor = list(MELEE = 50, BULLET = 40, LASER = 50, ENERGY = 60, BOMB = 25, BIO = 0, RAD = 0, FIRE = 100, ACID = 90, STAMINA = 40, BLEED = 60) + armor = list(MELEE = 50, BULLET = 40, LASER = 50, ENERGY = 60, BOMB = 25, BIO = 0, FIRE = 100, ACID = 90, STAMINA = 40, BLEED = 60) dog_fashion = null resistance_flags = FIRE_PROOF @@ -137,7 +137,7 @@ icon_state = "capjacket" item_state = null body_parts_covered = CHEST|ARMS - armor = list(MELEE = 40, BULLET = 30, LASER = 40, ENERGY = 50, BOMB = 55, BIO = 0, RAD = 0, FIRE = 90, ACID = 80, STAMINA = 40, BLEED = 30) + armor = list(MELEE = 40, BULLET = 30, LASER = 40, ENERGY = 50, BOMB = 55, BIO = 0, FIRE = 90, ACID = 80, STAMINA = 40, BLEED = 30) /obj/item/clothing/suit/armor/riot name = "riot suit" @@ -147,7 +147,7 @@ body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - armor = list(MELEE = 50, BULLET = 10, LASER = 10, ENERGY = 15, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 80, STAMINA = 50, BLEED = 70) + armor = list(MELEE = 50, BULLET = 10, LASER = 10, ENERGY = 15, BOMB = 0, BIO = 0, FIRE = 80, ACID = 80, STAMINA = 50, BLEED = 70) blocks_shove_knockdown = TRUE strip_delay = 80 equip_delay_other = 60 @@ -160,7 +160,7 @@ icon_state = "bonearmor" item_state = "bonearmor" blood_overlay_type = "armor" - armor = list(MELEE = 35, BULLET = 25, LASER = 25, ENERGY = 30, BOMB = 25, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 20, BLEED = 50) + armor = list(MELEE = 35, BULLET = 25, LASER = 25, ENERGY = 30, BOMB = 25, BIO = 0, FIRE = 50, ACID = 50, STAMINA = 20, BLEED = 50) body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS slowdown = 0.1 @@ -170,7 +170,7 @@ icon_state = "bulletproof" item_state = "armor" blood_overlay_type = "armor" - armor = list(MELEE = 15, BULLET = 60, LASER = 10, ENERGY = 10, BOMB = 40, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 40, BLEED = 60) + armor = list(MELEE = 15, BULLET = 60, LASER = 10, ENERGY = 10, BOMB = 40, BIO = 0, FIRE = 50, ACID = 50, STAMINA = 40, BLEED = 60) strip_delay = 70 equip_delay_other = 50 @@ -180,7 +180,7 @@ icon_state = "armor_reflec" item_state = "armor_reflec" blood_overlay_type = "armor" - armor = list(MELEE = 10, BULLET = 10, LASER = 60, ENERGY = 80, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 100, STAMINA = 40, BLEED = 10) + armor = list(MELEE = 10, BULLET = 10, LASER = 60, ENERGY = 80, BOMB = 0, BIO = 0, FIRE = 100, ACID = 100, STAMINA = 40, BLEED = 10) resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF var/hit_reflect_chance = 40 @@ -212,7 +212,7 @@ body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS slowdown = 3 flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - armor = list(MELEE = 80, BULLET = 80, LASER = 50, ENERGY = 60, BOMB = 100, BIO = 100, RAD = 100, FIRE = 90, ACID = 90, STAMINA = 60, BLEED = 70) + armor = list(MELEE = 80, BULLET = 80, LASER = 50, ENERGY = 60, BOMB = 100, BIO = 100, FIRE = 90, ACID = 90, STAMINA = 60, BLEED = 70) move_sound = list('sound/effects/suitstep1.ogg', 'sound/effects/suitstep2.ogg') slowdown = 0.3 @@ -221,7 +221,7 @@ flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - armor = list(MELEE = 80, BULLET = 80, LASER = 50, ENERGY = 60, BOMB = 100, BIO = 100, RAD = 100, FIRE = 90, ACID = 90, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 80, BULLET = 80, LASER = 50, ENERGY = 60, BOMB = 100, BIO = 100, FIRE = 90, ACID = 90, STAMINA = 0, BLEED = 0) move_sound = list('sound/effects/suitstep1.ogg', 'sound/effects/suitstep2.ogg') /obj/item/clothing/suit/armor/tdome/red @@ -238,7 +238,7 @@ /obj/item/clothing/suit/armor/tdome/holosuit name = "thunderdome suit" - armor = list(MELEE = 10, BULLET = 10, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 10, BULLET = 10, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) cold_protection = null heat_protection = null @@ -281,14 +281,14 @@ equip_delay_other = 40 max_integrity = 200 resistance_flags = FLAMMABLE - armor = list(MELEE = 20, BULLET = 40, LASER = 30, ENERGY = 40, BOMB = 15, BIO = 0, RAD = 0, FIRE = 40, ACID = 50, STAMINA = 30, BLEED = 60) + armor = list(MELEE = 20, BULLET = 40, LASER = 30, ENERGY = 40, BOMB = 15, BIO = 0, FIRE = 40, ACID = 50, STAMINA = 30, BLEED = 60) /obj/item/clothing/suit/armor/vest/russian name = "russian vest" desc = "A bulletproof vest with forest camo. Good thing there's plenty of forests to hide in around here, right?" icon_state = "rus_armor" item_state = "rus_armor" - armor = list(MELEE = 25, BULLET = 30, LASER = 0, ENERGY = 15, BOMB = 10, BIO = 0, RAD = 20, FIRE = 20, ACID = 50, STAMINA = 25, BLEED = 20) + armor = list(MELEE = 25, BULLET = 30, LASER = 0, ENERGY = 15, BOMB = 10, BIO = 0, FIRE = 20, ACID = 50, STAMINA = 25, BLEED = 20) slowdown = 0.05 /obj/item/clothing/suit/armor/vest/russian_coat @@ -299,7 +299,7 @@ body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT - armor = list(MELEE = 25, BULLET = 20, LASER = 20, ENERGY = 30, BOMB = 20, BIO = 50, RAD = 20, FIRE = -10, ACID = 50, STAMINA = 30, BLEED = 20) + armor = list(MELEE = 25, BULLET = 20, LASER = 20, ENERGY = 30, BOMB = 20, BIO = 50, FIRE = -10, ACID = 50, STAMINA = 30, BLEED = 20) /obj/item/clothing/suit/armor/centcom_formal name = "\improper CentCom formal coat" @@ -307,7 +307,7 @@ icon_state = "centcom_formal" item_state = "centcom" body_parts_covered = CHEST|GROIN|ARMS - armor = list(MELEE = 35, BULLET = 40, LASER = 40, ENERGY = 50, BOMB = 35, BIO = 10, RAD = 10, FIRE = 10, ACID = 60, STAMINA = 40, BLEED = 20) + armor = list(MELEE = 35, BULLET = 40, LASER = 40, ENERGY = 50, BOMB = 35, BIO = 10, FIRE = 10, ACID = 60, STAMINA = 40, BLEED = 20) /obj/item/clothing/suit/armor/centcom_formal/Initialize(mapload) . = ..() diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm index 3c54e15f9bdeb..683c6968a5c8b 100644 --- a/code/modules/clothing/suits/bio.dm +++ b/code/modules/clothing/suits/bio.dm @@ -8,7 +8,7 @@ item_state = "bio_hood" permeability_coefficient = 0.01 clothing_flags = THICKMATERIAL | BLOCK_GAS_SMOKE_EFFECT | SNUG_FIT - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, RAD = 80, FIRE = 30, ACID = 100, STAMINA = 0, BLEED = 5) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 30, ACID = 100, STAMINA = 0, BLEED = 5) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR|HIDEFACE|HIDESNOUT resistance_flags = ACID_PROOF flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH @@ -27,7 +27,7 @@ body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS slowdown = 1 allowed = list(/obj/item/tank/internals, /obj/item/pen, /obj/item/flashlight/pen, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray) - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, RAD = 80, FIRE = 30, ACID = 100, STAMINA = 0, BLEED = 5) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 30, ACID = 100, STAMINA = 0, BLEED = 5) flags_inv = HIDEGLOVES|HIDEJUMPSUIT strip_delay = 70 equip_delay_other = 70 @@ -53,11 +53,11 @@ //Security biosuit, grey with red stripe across the chest /obj/item/clothing/head/bio_hood/security - armor = list(MELEE = 25, BULLET = 15, LASER = 25, ENERGY = 10, BOMB = 25, BIO = 100, RAD = 80, FIRE = 30, ACID = 100, STAMINA = 20, BLEED = 10) + armor = list(MELEE = 25, BULLET = 15, LASER = 25, ENERGY = 10, BOMB = 25, BIO = 100, FIRE = 30, ACID = 100, STAMINA = 20, BLEED = 10) icon_state = "bio_security" /obj/item/clothing/suit/bio_suit/security - armor = list(MELEE = 25, BULLET = 15, LASER = 25, ENERGY = 10, BOMB = 25, BIO = 100, RAD = 80, FIRE = 30, ACID = 100, STAMINA = 20, BLEED = 10) + armor = list(MELEE = 25, BULLET = 15, LASER = 25, ENERGY = 10, BOMB = 25, BIO = 100, FIRE = 30, ACID = 100, STAMINA = 20, BLEED = 10) icon_state = "bio_security" diff --git a/code/modules/clothing/suits/chaplainsuits.dm b/code/modules/clothing/suits/chaplainsuits.dm index 5ba05f80d4d4f..f65cf14cc116f 100644 --- a/code/modules/clothing/suits/chaplainsuits.dm +++ b/code/modules/clothing/suits/chaplainsuits.dm @@ -9,7 +9,7 @@ body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - armor = list(MELEE = 50, BULLET = 10, LASER = 10, ENERGY = 10, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 80, STAMINA = 35) + armor = list(MELEE = 50, BULLET = 10, LASER = 10, ENERGY = 10, BOMB = 0, BIO = 0, FIRE = 80, ACID = 80, STAMINA = 35) strip_delay = 80 equip_delay_other = 60 @@ -115,7 +115,7 @@ worn_icon = 'icons/mob/clothing/head/chaplain.dmi' icon_state = "knight_templar" item_state = null - armor = list(MELEE = 50, BULLET = 10, LASER = 10, ENERGY = 10, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 80, STAMINA = 40) + armor = list(MELEE = 50, BULLET = 10, LASER = 10, ENERGY = 10, BOMB = 0, BIO = 0, FIRE = 80, ACID = 80, STAMINA = 40) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH strip_delay = 80 @@ -138,7 +138,7 @@ icon_state = "crusader" w_class = WEIGHT_CLASS_NORMAL flags_inv = HIDEHAIR|HIDEEARS|HIDEFACE - armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 40, BOMB = 60, BIO = 0, RAD = 0, FIRE = 60, ACID = 60, STAMINA = 50, BLEED = 60) + armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 40, BOMB = 60, BIO = 0, FIRE = 60, ACID = 60, STAMINA = 50, BLEED = 60) /obj/item/clothing/head/helmet/plate/crusader/blue icon_state = "crusader-blue" @@ -156,7 +156,7 @@ worn_icon = 'icons/mob/large-worn-icons/64x64/head.dmi' item_state = null flags_1 = 0 - armor = list(MELEE = 60, BULLET = 60, LASER = 60, ENERGY = 50, BOMB = 70, BIO = 50, RAD = 50, FIRE = 60, ACID = 60, STAMINA = 60, BLEED = 60) //religion protects you from disease and radiation, honk. + armor = list(MELEE = 60, BULLET = 60, LASER = 60, ENERGY = 50, BOMB = 70, BIO = 50, FIRE = 60, ACID = 60, STAMINA = 60, BLEED = 60) //religion protects you from disease and radiation, honk. worn_x_dimension = 64 worn_y_dimension = 64 @@ -220,7 +220,7 @@ w_class = WEIGHT_CLASS_BULKY slowdown = 2.0 //gotta pretend we're balanced. body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 40, BOMB = 60, BIO = 0, RAD = 0, FIRE = 60, ACID = 60, STAMINA = 50) + armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 40, BOMB = 60, BIO = 0, FIRE = 60, ACID = 60, STAMINA = 50) /obj/item/clothing/suit/chaplainsuit/armor/crusader/red icon_state = "crusader-red" @@ -288,7 +288,7 @@ heat_protection = HANDS max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT resistance_flags = NONE - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 30, ACID = 20, STAMINA = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 30, ACID = 20, STAMINA = 0) /obj/item/clothing/under/rank/civilian/graverobber_under name = "grave robber uniform" diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm index 2e2214d96b77f..f04d3073a3693 100644 --- a/code/modules/clothing/suits/cloaks.dm +++ b/code/modules/clothing/suits/cloaks.dm @@ -63,7 +63,7 @@ icon_state = "goliath_cloak" desc = "A staunch, practical cape made out of numerous monster materials, it is coveted amongst exiles & hermits." allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/spear, /obj/item/spear/bonespear, /obj/item/organ/regenerative_core/legion, /obj/item/knife/combat/bone, /obj/item/knife/combat/survival) - armor = list(MELEE = 50, BULLET = 10, LASER = 25, ENERGY = 10, BOMB = 25, BIO = 0, RAD = 0, FIRE = 60, ACID = 60, STAMINA = 30, BLEED = 20) //a fair alternative to bone armor, requiring alternative materials and gaining a suit slot + armor = list(MELEE = 50, BULLET = 10, LASER = 25, ENERGY = 10, BOMB = 25, BIO = 0, FIRE = 60, ACID = 60, STAMINA = 30, BLEED = 20) //a fair alternative to bone armor, requiring alternative materials and gaining a suit slot hoodtype = /obj/item/clothing/head/hooded/cloakhood/goliath body_parts_covered = CHEST|GROIN|ARMS resistance_flags = FIRE_PROOF @@ -72,7 +72,7 @@ name = "goliath cloak hood" icon_state = "golhood" desc = "A protective & concealing hood." - armor = list(MELEE = 50, BULLET = 10, LASER = 25, ENERGY = 10, BOMB = 25, BIO = 0, RAD = 0, FIRE = 60, ACID = 60, STAMINA = 30, BLEED = 30) + armor = list(MELEE = 50, BULLET = 10, LASER = 25, ENERGY = 10, BOMB = 25, BIO = 0, FIRE = 60, ACID = 60, STAMINA = 30, BLEED = 30) flags_inv = HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR transparent_protection = HIDEMASK resistance_flags = FIRE_PROOF @@ -82,7 +82,7 @@ icon_state = "dragon" desc = "A suit of armour fashioned from the remains of an ash drake." allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe, /obj/item/spear) - armor = list(MELEE = 70, BULLET = 30, LASER = 50, ENERGY = 40, BOMB = 70, BIO = 60, RAD = 50, FIRE = 100, ACID = 100, STAMINA = 30, BLEED = 50) + armor = list(MELEE = 70, BULLET = 30, LASER = 50, ENERGY = 40, BOMB = 70, BIO = 60, FIRE = 100, ACID = 100, STAMINA = 30, BLEED = 50) hoodtype = /obj/item/clothing/head/hooded/cloakhood/drake heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS @@ -95,7 +95,7 @@ name = "drake helm" icon_state = "dragon" desc = "The skull of a dragon." - armor = list(MELEE = 70, BULLET = 30, LASER = 50, ENERGY = 40, BOMB = 70, BIO = 60, RAD = 50, FIRE = 100, ACID = 100, STAMINA = 30, BLEED = 50) + armor = list(MELEE = 70, BULLET = 30, LASER = 50, ENERGY = 40, BOMB = 70, BIO = 60, FIRE = 100, ACID = 100, STAMINA = 30, BLEED = 50) heat_protection = HEAD max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | ACID_PROOF @@ -105,7 +105,7 @@ name = "Heavy bone armor" icon_state = "hbonearmor" desc = "A tribal armor plate, crafted from animal bone. A heavier variation of standard bone armor." - armor = list(MELEE = 40, BULLET = 25, LASER = 30, ENERGY = 30, BOMB = 30, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 20, BLEED = 70) + armor = list(MELEE = 40, BULLET = 25, LASER = 30, ENERGY = 30, BOMB = 30, BIO = 0, FIRE = 50, ACID = 50, STAMINA = 20, BLEED = 70) hoodtype = /obj/item/clothing/head/hooded/cloakhood/bone heat_protection = CHEST|GROIN|LEGS|FEET|ARMS body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS @@ -117,7 +117,7 @@ name = "bone helmet" icon_state = "hskull" desc = "An intimidating tribal helmet, it doesn't look very comfortable." - armor = list(MELEE = 35, BULLET = 25, LASER = 25, ENERGY = 10, BOMB = 25, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 20, BLEED = 50) + armor = list(MELEE = 35, BULLET = 25, LASER = 25, ENERGY = 10, BOMB = 25, BIO = 0, FIRE = 50, ACID = 50, STAMINA = 20, BLEED = 50) heat_protection = HEAD max_heat_protection_temperature = HELMET_MAX_TEMP_PROTECT resistance_flags = NONE diff --git a/code/modules/clothing/suits/costume.dm b/code/modules/clothing/suits/costume.dm index 3df266b753631..56088e71c637e 100644 --- a/code/modules/clothing/suits/costume.dm +++ b/code/modules/clothing/suits/costume.dm @@ -216,7 +216,7 @@ desc = "You broke the rules of the duel, and drew your gun before High Noon. This poncho will rest on your shoulders eternally, just like your shame." icon_state = "ponchoshame_alt" item_state = "ponchoshame_alt" - armor = list(MELEE = 25, BULLET = 25, LASER = 25, ENERGY = 20, BOMB = 30, BIO = 30, RAD = 20, FIRE = 0, ACID = 30, STAMINA = 35) + armor = list(MELEE = 25, BULLET = 25, LASER = 25, ENERGY = 20, BOMB = 30, BIO = 30, FIRE = 0, ACID = 30, STAMINA = 35) body_parts_covered = CHEST|GROIN allowed = list(/obj/item/gun/ballistic/shotgun/lever_action, /obj/item/gun/ballistic/rifle/leveraction, /obj/item/gun/ballistic/revolver) @@ -249,7 +249,7 @@ icon_state = "carp_suit" item_state = "space_suit_syndicate" slowdown = 0 //Space carp magic, never stop believing - armor = list(MELEE = 20, BULLET = 10, LASER = 20, ENERGY = 20, BOMB = 30, BIO = 100, RAD = 75, FIRE = 60, ACID = 75, STAMINA = 40) + armor = list(MELEE = 20, BULLET = 10, LASER = 20, ENERGY = 20, BOMB = 30, BIO = 100, FIRE = 60, ACID = 75, STAMINA = 40) allowed = list( /obj/item/tank/internals, /obj/item/pneumatic_cannon/speargun, @@ -349,7 +349,7 @@ desc = "A big and clanky suit made of bronze that offers no protection and looks very unfashionable. Nice." icon = 'icons/obj/clothing/clockwork_garb.dmi' icon_state = "clockwork_cuirass_old" - armor = list(MELEE = 5, BULLET = 0, LASER = -5, ENERGY = 0, BOMB = 10, BIO = 0, RAD = 0, FIRE = 20, ACID = 20, STAMINA = 30) + armor = list(MELEE = 5, BULLET = 0, LASER = -5, ENERGY = 0, BOMB = 10, BIO = 0, FIRE = 20, ACID = 20, STAMINA = 30) /obj/item/clothing/suit/costume/joker name = "comedian coat" diff --git a/code/modules/clothing/suits/donator.dm b/code/modules/clothing/suits/donator.dm index 1a92a549c9b60..58fe19658f4f3 100644 --- a/code/modules/clothing/suits/donator.dm +++ b/code/modules/clothing/suits/donator.dm @@ -37,6 +37,6 @@ icon_state = "softshell" item_state = "softshell" allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/t_scanner, /obj/item/radio) - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 30, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 30, FIRE = 0, ACID = 0, STAMINA = 0) toggle_noun = "zipper" body_parts_covered = CHEST|GROIN|ARMS diff --git a/code/modules/clothing/suits/hoodies.dm b/code/modules/clothing/suits/hoodies.dm index d321b2295d91d..f7c6661afaa20 100644 --- a/code/modules/clothing/suits/hoodies.dm +++ b/code/modules/clothing/suits/hoodies.dm @@ -8,7 +8,7 @@ body_parts_covered = CHEST|GROIN|ARMS cold_protection = CHEST|GROIN|ARMS min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, FIRE = 0, ACID = 0, STAMINA = 0) allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter) hoodtype = /obj/item/clothing/head/hooded/hoodie diff --git a/code/modules/clothing/suits/jacket.dm b/code/modules/clothing/suits/jacket.dm index 63709a5f038af..5013a271e2d32 100644 --- a/code/modules/clothing/suits/jacket.dm +++ b/code/modules/clothing/suits/jacket.dm @@ -41,7 +41,7 @@ desc = "A thick jacket with a rubbery, water-resistant shell." icon_state = "pufferjacket" item_state = "hostrench" - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 50, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 50, FIRE = 0, ACID = 0, STAMINA = 0) /obj/item/clothing/suit/jacket/puffer/vest name = "puffer vest" @@ -50,7 +50,7 @@ item_state = "armor" body_parts_covered = CHEST|GROIN cold_protection = CHEST|GROIN - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 30, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 30, FIRE = 0, ACID = 0, STAMINA = 0) /obj/item/clothing/suit/jacket/miljacket name = "military jacket" diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 26a9f314d52eb..ebb1eb1687d6a 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -75,7 +75,7 @@ item_state = "det_suit" blood_overlay_type = "coat" body_parts_covered = CHEST|GROIN|ARMS - armor = list(MELEE = 25, BULLET = 10, LASER = 25, ENERGY = 10, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 45, STAMINA = 40, BLEED = 30) + armor = list(MELEE = 25, BULLET = 10, LASER = 25, ENERGY = 10, BOMB = 0, BIO = 0, FIRE = 0, ACID = 45, STAMINA = 40, BLEED = 30) cold_protection = CHEST|GROIN|ARMS heat_protection = CHEST|GROIN|ARMS supports_variations = DIGITIGRADE_VARIATION_NO_NEW_ICON @@ -106,7 +106,7 @@ icon_state = "brig_phys_vest" item_state = "sec_helm"//looks kinda similar, I guess allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/storage/firstaid, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/police/telescopic, /obj/item/soap, /obj/item/sensor_device, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) - armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 30, BLEED = 20) + armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, FIRE = 50, ACID = 50, STAMINA = 30, BLEED = 20) //Engineering /obj/item/clothing/suit/hazardvest @@ -228,7 +228,7 @@ /obj/item/tank/internals, /obj/item/melee/curator_whip ) - armor = list(MELEE = 25, BULLET = 10, LASER = 25, ENERGY = 10, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 45, STAMINA = 30, BLEED = 10) + armor = list(MELEE = 25, BULLET = 10, LASER = 25, ENERGY = 10, BOMB = 0, BIO = 0, FIRE = 0, ACID = 45, STAMINA = 30, BLEED = 10) cold_protection = CHEST|ARMS heat_protection = CHEST|ARMS diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm index 38daa6ea23bad..f55080bacba36 100644 --- a/code/modules/clothing/suits/labcoat.dm +++ b/code/modules/clothing/suits/labcoat.dm @@ -28,7 +28,7 @@ /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman ) - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 50, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 0, BLEED = 5) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 50, FIRE = 50, ACID = 50, STAMINA = 0, BLEED = 5) species_exception = list(/datum/species/golem) /obj/item/clothing/suit/toggle/labcoat/cmo @@ -47,7 +47,7 @@ name = "security medic's labcoat" icon_state = "labcoat_sec" item_state = "labcoat_sec" - armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 10, rad = 0, fire = 50, acid = 50, stamina = 30, BLEED = 10) + armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 10, fire = 50, acid = 50, stamina = 30, BLEED = 10) /obj/item/clothing/suit/toggle/labcoat/mad name = "\proper The Mad's labcoat" diff --git a/code/modules/clothing/suits/reactive_armour.dm b/code/modules/clothing/suits/reactive_armour.dm index bfacbf6ee3390..993f0b7e2234a 100644 --- a/code/modules/clothing/suits/reactive_armour.dm +++ b/code/modules/clothing/suits/reactive_armour.dm @@ -33,7 +33,7 @@ icon_state = "reactiveoff" item_state = "reactiveoff" blood_overlay_type = "armor" - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 10) actions_types = list(/datum/action/item_action/toggle) resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF hit_reaction_chance = 50 diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index f89989b87caa1..3d4a536936264 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -32,7 +32,7 @@ /obj/item/powertool/jaws_of_life ) slowdown = 1 - armor = list(MELEE = 15, BULLET = 5, LASER = 20, ENERGY = 10, BOMB = 20, BIO = 10, RAD = 20, FIRE = 100, ACID = 50, STAMINA = 10, BLEED = 25) + armor = list(MELEE = 15, BULLET = 5, LASER = 20, ENERGY = 10, BOMB = 20, BIO = 10, FIRE = 100, ACID = 50, STAMINA = 10, BLEED = 25) flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS @@ -70,7 +70,7 @@ desc = "Use in case of bomb." icon_state = "bombsuit" clothing_flags = THICKMATERIAL | SNUG_FIT - armor = list(MELEE = 20, BULLET = 0, LASER = 20, ENERGY = 10, BOMB = 100, BIO = 0, RAD = 0, FIRE = 80, ACID = 50, STAMINA = 10, BLEED = 25) + armor = list(MELEE = 20, BULLET = 0, LASER = 20, ENERGY = 10, BOMB = 100, BIO = 0, FIRE = 80, ACID = 50, STAMINA = 10, BLEED = 25) flags_inv = HIDEFACE|HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT dynamic_hair_suffix = "" dynamic_fhair_suffix = "" @@ -95,7 +95,7 @@ clothing_flags = THICKMATERIAL body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS slowdown = 2 - armor = list(MELEE = 20, BULLET = 0, LASER = 20, ENERGY = 10, BOMB = 100, BIO = 0, RAD = 0, FIRE = 80, ACID = 50, STAMINA = 10, BLEED = 25) + armor = list(MELEE = 20, BULLET = 0, LASER = 20, ENERGY = 10, BOMB = 100, BIO = 0, FIRE = 80, ACID = 50, STAMINA = 10, BLEED = 25) flags_inv = HIDEJUMPSUIT heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT @@ -133,7 +133,7 @@ desc = "A hood with radiation protective properties. The label reads, 'Made with lead. Please do not consume insulation.'" clothing_flags = THICKMATERIAL | SNUG_FIT flags_inv = HIDEMASK|HIDEEARS|HIDEFACE|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 60, RAD = 100, FIRE = 30, ACID = 30, STAMINA = 10, BLEED = 15) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 60, FIRE = 30, ACID = 30, STAMINA = 10, BLEED = 15) strip_delay = 60 equip_delay_other = 60 flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH @@ -151,7 +151,7 @@ body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/geiger_counter) slowdown = 1.5 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 60, RAD = 100, FIRE = 30, ACID = 30, STAMINA = 10, BLEED = 15) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 60, FIRE = 30, ACID = 30, STAMINA = 10, BLEED = 15) strip_delay = 60 equip_delay_other = 60 flags_inv = HIDEJUMPSUIT diff --git a/code/modules/clothing/suits/wetfloor.dm b/code/modules/clothing/suits/wetfloor.dm index 3e06527657ac5..5164f9364fadf 100644 --- a/code/modules/clothing/suits/wetfloor.dm +++ b/code/modules/clothing/suits/wetfloor.dm @@ -14,5 +14,5 @@ body_parts_covered = CHEST|GROIN attack_verb_continuous = list("warns", "cautions", "smashes") attack_verb_simple = list("warn", "caution", "smash") - armor = list(MELEE = 5, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0) + armor = list(MELEE = 5, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 0) pocket_storage_component_path = null diff --git a/code/modules/clothing/suits/wintercoats.dm b/code/modules/clothing/suits/wintercoats.dm index c357091cca300..930806ed1b11d 100644 --- a/code/modules/clothing/suits/wintercoats.dm +++ b/code/modules/clothing/suits/wintercoats.dm @@ -10,7 +10,7 @@ body_parts_covered = CHEST|GROIN|ARMS cold_protection = CHEST|GROIN|ARMS min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, FIRE = 0, ACID = 0, STAMINA = 0) allowed = list( /obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, @@ -44,7 +44,7 @@ name = "captain's winter coat" icon_state = "coatcaptain" item_state = "coatcaptain" - armor = list(MELEE = 25, BULLET = 30, LASER = 30, ENERGY = 10, BOMB = 25, BIO = 0, RAD = 0, FIRE = 0, ACID = 50, STAMINA = 20) + armor = list(MELEE = 25, BULLET = 30, LASER = 30, ENERGY = 10, BOMB = 25, BIO = 0, FIRE = 0, ACID = 50, STAMINA = 20) hoodtype = /obj/item/clothing/head/hooded/winterhood/captain /obj/item/clothing/suit/hooded/wintercoat/captain/Initialize(mapload) @@ -60,7 +60,7 @@ icon_state = "coatsecurity" item_state = "coatsecurity" hoodtype = /obj/item/clothing/head/hooded/winterhood/security - armor = list(MELEE = 15, BULLET = 15, LASER = 40, ENERGY = 50, BOMB = 25, BIO = 0, RAD = 0, FIRE = 60, ACID = 45, STAMINA = 40) + armor = list(MELEE = 15, BULLET = 15, LASER = 40, ENERGY = 50, BOMB = 25, BIO = 0, FIRE = 60, ACID = 45, STAMINA = 40) slowdown = 0.04 /obj/item/clothing/suit/hooded/wintercoat/security/Initialize(mapload) @@ -68,7 +68,7 @@ allowed = GLOB.security_wintercoat_allowed /obj/item/clothing/head/hooded/winterhood/security - armor = list(MELEE = 15, BULLET = 15, LASER = 40, ENERGY = 50, BOMB = 25, BIO = 0, RAD = 0, FIRE = 60, ACID = 45, STAMINA = 40) + armor = list(MELEE = 15, BULLET = 15, LASER = 40, ENERGY = 50, BOMB = 25, BIO = 0, FIRE = 60, ACID = 45, STAMINA = 40) icon_state = "winterhood_security" /obj/item/clothing/suit/hooded/wintercoat/detective @@ -91,13 +91,13 @@ /obj/item/storage/fancy/cigarettes, /obj/item/lighter ) - armor = list(MELEE = 25, BULLET = 10, LASER = 25, ENERGY = 10, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 45, STAMINA = 40) + armor = list(MELEE = 25, BULLET = 10, LASER = 25, ENERGY = 10, BOMB = 0, BIO = 0, FIRE = 0, ACID = 45, STAMINA = 40) heat_protection = CHEST|GROIN|ARMS hoodtype = /obj/item/clothing/head/hooded/winterhood/detective /obj/item/clothing/head/hooded/winterhood/detective icon_state = "winterhood_detective" - armor = list(MELEE = 25, BULLET = 10, LASER = 25, ENERGY = 20, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 45, STAMINA = 30) + armor = list(MELEE = 25, BULLET = 10, LASER = 25, ENERGY = 20, BOMB = 0, BIO = 0, FIRE = 0, ACID = 45, STAMINA = 30) /obj/item/clothing/suit/hooded/wintercoat/brigphys name = "brig physician winter coat" @@ -127,12 +127,12 @@ /obj/item/storage/fancy/cigarettes, /obj/item/lighter ) - armor = list(MELEE = 10, BULLET = 0, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 20, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 20) + armor = list(MELEE = 10, BULLET = 0, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 20, FIRE = 50, ACID = 50, STAMINA = 20) hoodtype = /obj/item/clothing/head/hooded/winterhood/brigphys /obj/item/clothing/head/hooded/winterhood/brigphys icon_state = "winterhood_brigphys" - armor = list(MELEE = 10, BULLET = 0, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 20, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 20) + armor = list(MELEE = 10, BULLET = 0, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 20, FIRE = 50, ACID = 50, STAMINA = 20) /obj/item/clothing/suit/hooded/wintercoat/medical name = "medical winter coat" @@ -163,7 +163,7 @@ /obj/item/storage/fancy/cigarettes, /obj/item/lighter ) - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 50, RAD = 0, FIRE = 0, ACID = 45, STAMINA = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 50, FIRE = 0, ACID = 45, STAMINA = 0) hoodtype = /obj/item/clothing/head/hooded/winterhood/medical /obj/item/clothing/head/hooded/winterhood/medical @@ -198,12 +198,12 @@ /obj/item/storage/fancy/cigarettes, /obj/item/lighter ) - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 80, RAD = 0, FIRE = 0, ACID = 15, STAMINA = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 80, FIRE = 0, ACID = 15, STAMINA = 0) hoodtype = /obj/item/clothing/head/hooded/winterhood/virologist /obj/item/clothing/head/hooded/winterhood/virologist icon_state = "winterhood_viro" - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 50, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 50, FIRE = 0, ACID = 0, STAMINA = 0) /obj/item/clothing/suit/hooded/wintercoat/chemist name = "chemist winter coat" @@ -235,7 +235,7 @@ /obj/item/storage/fancy/cigarettes, /obj/item/lighter ) - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 15, BIO = 0, RAD = 0, FIRE = 40, ACID = 40, STAMINA = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 15, BIO = 0, FIRE = 40, ACID = 40, STAMINA = 0) resistance_flags = FIRE_PROOF | ACID_PROOF hoodtype = /obj/item/clothing/head/hooded/winterhood/chemist @@ -276,7 +276,7 @@ /obj/item/storage/fancy/cigarettes, /obj/item/lighter ) - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 20, RAD = 30, FIRE = 0, ACID = 45, STAMINA = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 20, FIRE = 0, ACID = 45, STAMINA = 0) hoodtype = /obj/item/clothing/head/hooded/winterhood/geneticist /obj/item/clothing/head/hooded/winterhood/geneticist @@ -287,7 +287,7 @@ icon_state = "coatscience" item_state = "coatscience" allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/police/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 10, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 10, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 0) hoodtype = /obj/item/clothing/head/hooded/winterhood/science /obj/item/clothing/head/hooded/winterhood/science @@ -297,7 +297,7 @@ name = "engineering winter coat" icon_state = "coatengineer" item_state = "coatengineer" - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 20, FIRE = 30, ACID = 45, STAMINA = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 30, ACID = 45, STAMINA = 0) allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/t_scanner, /obj/item/construction/rcd, /obj/item/pipe_dispenser, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter) hoodtype = /obj/item/clothing/head/hooded/winterhood/engineering @@ -373,7 +373,7 @@ ) max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT heat_protection = CHEST|GROIN|ARMS - armor = list(MELEE = 30, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 50, BIO = 10, RAD = 20, FIRE = 50, ACID = 50, STAMINA = 20) + armor = list(MELEE = 30, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 50, BIO = 10, FIRE = 50, ACID = 50, STAMINA = 20) resistance_flags = FIRE_PROOF high_pressure_multiplier = 0.4 hoodtype = /obj/item/clothing/head/hooded/winterhood/miner @@ -386,7 +386,7 @@ desc = "A hood attached to a heavy winter jacket. It is quite armoured and well suited to explore harsh environments." icon_state = "winterhood_miner" max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT - armor = list(MELEE = 30, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 50, BIO = 10, RAD = 20, FIRE = 50, ACID = 50, STAMINA = 20) + armor = list(MELEE = 30, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 50, BIO = 10, FIRE = 50, ACID = 50, STAMINA = 20) resistance_flags = FIRE_PROOF high_pressure_multiplier = 0.4 @@ -474,7 +474,7 @@ desc = "A luxurious winter coat woven in the bright green and gold colours of Central Command. It has a small pin in the shape of the Nanotrasen logo for a zipper." icon_state = "coatcentcom" item_state = "coatcentcom" - armor = list(MELEE = 35, BULLET = 40, LASER = 40, ENERGY = 50, BOMB = 35, BIO = 10, RAD = 10, FIRE = 10, ACID = 60) + armor = list(MELEE = 35, BULLET = 40, LASER = 40, ENERGY = 50, BOMB = 35, BIO = 10, FIRE = 10, ACID = 60) hoodtype = /obj/item/clothing/head/hooded/winterhood/centcom /obj/item/clothing/suit/hooded/wintercoat/centcom/Initialize(mapload) @@ -483,4 +483,4 @@ /obj/item/clothing/head/hooded/winterhood/centcom icon_state = "hood_centcom" - armor = list(MELEE = 35, BULLET = 40, LASER = 40, ENERGY = 50, BOMB = 35, BIO = 10, RAD = 10, FIRE = 10, ACID = 60) + armor = list(MELEE = 35, BULLET = 40, LASER = 40, ENERGY = 50, BOMB = 35, BIO = 10, FIRE = 10, ACID = 60) diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm index fb3781dbb0315..a35bab70a0b00 100644 --- a/code/modules/clothing/suits/wiz_robe.dm +++ b/code/modules/clothing/suits/wiz_robe.dm @@ -7,7 +7,7 @@ item_state = "wizhat" gas_transfer_coefficient = 0.01 // IT'S MAGICAL OKAY JEEZ +1 TO NOT DIE permeability_coefficient = 0.01 - armor = list(MELEE = 30, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 20, BIO = 20, RAD = 20, FIRE = 100, ACID = 100, STAMINA = 50, BLEED = 60) + armor = list(MELEE = 30, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 20, BIO = 20, FIRE = 100, ACID = 100, STAMINA = 50, BLEED = 60) strip_delay = 50 equip_delay_other = 50 clothing_flags = SNUG_FIT | THICKMATERIAL @@ -38,7 +38,7 @@ icon_state = "wizard-fake" gas_transfer_coefficient = 1 permeability_coefficient = 1 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0, BLEED = 0) resistance_flags = FLAMMABLE dog_fashion = /datum/dog_fashion/head/blue_wizard clothing_flags = NONE @@ -74,7 +74,7 @@ gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 body_parts_covered = CHEST|GROIN|ARMS|LEGS - armor = list(MELEE = 30, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 20, BIO = 20, RAD = 20, FIRE = 100, ACID = 100, STAMINA = 50, BLEED = 60) + armor = list(MELEE = 30, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 20, BIO = 20, FIRE = 100, ACID = 100, STAMINA = 50, BLEED = 60) allowed = list(/obj/item/teleportation_scroll) flags_inv = HIDEJUMPSUIT strip_delay = 50 @@ -143,7 +143,7 @@ item_state = "wizrobe" gas_transfer_coefficient = 1 permeability_coefficient = 1 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0, BLEED = 0) resistance_flags = FLAMMABLE clothing_flags = NONE @@ -153,7 +153,7 @@ icon_state = "marisa" gas_transfer_coefficient = 1 permeability_coefficient = 1 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0, BLEED = 0) resistance_flags = FLAMMABLE clothing_flags = NONE @@ -164,7 +164,7 @@ item_state = "marisarobe" gas_transfer_coefficient = 1 permeability_coefficient = 1 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0, BLEED = 0) resistance_flags = FLAMMABLE clothing_flags = NONE @@ -213,7 +213,7 @@ min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/wizard - armor = list(MELEE = 30, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 20, BIO = 20, RAD = 20, FIRE = 100, ACID = 100, STAMINA = 70, BLEED = 70) + armor = list(MELEE = 30, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 20, BIO = 20, FIRE = 100, ACID = 100, STAMINA = 70, BLEED = 70) slowdown = 0 resistance_flags = FIRE_PROOF | ACID_PROOF @@ -227,7 +227,7 @@ item_state = "battlemage" min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT - armor = list(MELEE = 30, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 20, BIO = 20, RAD = 20, FIRE = 100, ACID = 100, STAMINA = 70, BLEED = 70) + armor = list(MELEE = 30, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 20, BIO = 20, FIRE = 100, ACID = 100, STAMINA = 70, BLEED = 70) actions_types = null //No inbuilt light resistance_flags = FIRE_PROOF | ACID_PROOF diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm index fbbe7af58d8dd..f1703c9fa8cab 100644 --- a/code/modules/clothing/under/_under.dm +++ b/code/modules/clothing/under/_under.dm @@ -5,7 +5,7 @@ body_parts_covered = CHEST|GROIN|LEGS|ARMS permeability_coefficient = 0.9 slot_flags = ITEM_SLOT_ICLOTHING - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 10) drop_sound = 'sound/items/handling/cloth_drop.ogg' pickup_sound = 'sound/items/handling/cloth_pickup.ogg' var/fitted = FEMALE_UNIFORM_FULL // For use in alternate clothing styles for women diff --git a/code/modules/clothing/under/accessories.dm b/code/modules/clothing/under/accessories.dm index e980c273da0fa..aad3698fc6393 100755 --- a/code/modules/clothing/under/accessories.dm +++ b/code/modules/clothing/under/accessories.dm @@ -228,7 +228,7 @@ desc = "An eccentric medal made of plasma." icon_state = "plasma" medaltype = "medal-plasma" - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = -10, ACID = 0, STAMINA = 0, BLEED = 0) //It's made of plasma. Of course it's flammable. + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = -10, ACID = 0, STAMINA = 0, BLEED = 0) //It's made of plasma. Of course it's flammable. custom_materials = list(/datum/material/plasma=1000) /obj/item/clothing/accessory/medal/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) @@ -361,7 +361,7 @@ name = "bone talisman" desc = "A hunter's talisman, some say the old gods smile on those who wear it." icon_state = "talisman" - armor = list(MELEE = 5, BULLET = 5, LASER = 5, ENERGY = 5, BOMB = 20, BIO = 20, RAD = 5, FIRE = 0, ACID = 25, STAMINA = 10, BLEED = 10) + armor = list(MELEE = 5, BULLET = 5, LASER = 5, ENERGY = 5, BOMB = 20, BIO = 20, FIRE = 0, ACID = 25, STAMINA = 10, BLEED = 10) attachment_slot = null /obj/item/clothing/accessory/skullcodpiece @@ -369,7 +369,7 @@ desc = "A skull shaped ornament, intended to protect the important things in life." icon_state = "skull" above_suit = TRUE - armor = list(MELEE = 5, BULLET = 5, LASER = 5, ENERGY = 5, BOMB = 20, BIO = 20, RAD = 5, FIRE = 0, ACID = 25, STAMINA = 10, BLEED = 10) + armor = list(MELEE = 5, BULLET = 5, LASER = 5, ENERGY = 5, BOMB = 20, BIO = 20, FIRE = 0, ACID = 25, STAMINA = 10, BLEED = 10) attachment_slot = GROIN /obj/item/clothing/accessory/holster diff --git a/code/modules/clothing/under/costume.dm b/code/modules/clothing/under/costume.dm index 0713eb1acd085..6763d1114b416 100644 --- a/code/modules/clothing/under/costume.dm +++ b/code/modules/clothing/under/costume.dm @@ -292,7 +292,7 @@ item_state = null worn_icon = 'icons/mob/clothing/under/security.dmi' alt_covers_chest = TRUE - armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 30, ACID = 30, STAMINA = 10, BLEED = 15) + armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 30, ACID = 30, STAMINA = 10, BLEED = 15) strip_delay = 50 alt_covers_chest = TRUE sensor_mode = SENSOR_COORDS diff --git a/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm b/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm index b6153579c1075..5fc56ea3c4799 100644 --- a/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm +++ b/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm @@ -5,7 +5,7 @@ item_state = "plasmaman" icon = 'icons/obj/clothing/under/plasmaman.dmi' worn_icon = 'icons/mob/clothing/under/plasmaman.dmi' - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, RAD = 0, FIRE = 95, ACID = 95, STAMINA = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 95, ACID = 95, STAMINA = 0) body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS can_adjust = FALSE strip_delay = 80 diff --git a/code/modules/clothing/under/jobs/Plasmaman/engineering.dm b/code/modules/clothing/under/jobs/Plasmaman/engineering.dm index e50357a9e4749..b6fd3c1866096 100644 --- a/code/modules/clothing/under/jobs/Plasmaman/engineering.dm +++ b/code/modules/clothing/under/jobs/Plasmaman/engineering.dm @@ -3,7 +3,7 @@ desc = "An air-tight suit designed to be used by plasmamen exployed as engineers, the usual purple stripes being replaced by engineer's orange. It protects the user from fire and acid damage." icon_state = "engineer_envirosuit" item_state = "engineer_envirosuit" - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, RAD = 10, FIRE = 95, ACID = 95, STAMINA = 0, BLEED = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 95, ACID = 95, STAMINA = 0, BLEED = 10) /obj/item/clothing/under/plasmaman/engineering/atmospherics name = "atmospherics plasma envirosuit" diff --git a/code/modules/clothing/under/jobs/Plasmaman/security.dm b/code/modules/clothing/under/jobs/Plasmaman/security.dm index 26282303438f1..ebb420a4b1cc0 100644 --- a/code/modules/clothing/under/jobs/Plasmaman/security.dm +++ b/code/modules/clothing/under/jobs/Plasmaman/security.dm @@ -3,7 +3,7 @@ desc = "A plasmaman containment suit designed for security officers, offering a limited amount of extra protection." icon_state = "security_envirosuit" item_state = "security_envirosuit" - armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, RAD = 0, FIRE = 95, ACID = 95, STAMINA = 10, BLEED = 10) + armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 95, ACID = 95, STAMINA = 10, BLEED = 10) sensor_mode = SENSOR_COORDS random_sensor = FALSE @@ -24,4 +24,4 @@ desc = "A plasmaman containment suit designed for brig physicians. It has a red cross emblasoned on the chest." icon_state = "secmed_envirosuit" item_state = "secmed_envirosuit" - armor = list(MELEE = 5, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, RAD = 0, FIRE = 95, ACID = 95, STAMINA = 10, BLEED = 10) + armor = list(MELEE = 5, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 95, ACID = 95, STAMINA = 10, BLEED = 10) diff --git a/code/modules/clothing/under/jobs/civilian/civilian.dm b/code/modules/clothing/under/jobs/civilian/civilian.dm index a3b979a75cef6..76827ef583708 100644 --- a/code/modules/clothing/under/jobs/civilian/civilian.dm +++ b/code/modules/clothing/under/jobs/civilian/civilian.dm @@ -126,7 +126,7 @@ desc = "It's the official uniform of the station's janitor. It has minor protection from biohazards." name = "janitor's jumpsuit" icon_state = "janitor" - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 10) /obj/item/clothing/under/rank/civilian/janitor/skirt name = "janitor's jumpskirt" diff --git a/code/modules/clothing/under/jobs/command.dm b/code/modules/clothing/under/jobs/command.dm index f915d5ea92f8b..b35ab2e9aa230 100644 --- a/code/modules/clothing/under/jobs/command.dm +++ b/code/modules/clothing/under/jobs/command.dm @@ -3,7 +3,7 @@ name = "captain's jumpsuit" icon_state = "captain" item_state = "b_suit" - armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 30, ACID = 30, STAMINA = 10, BLEED = 10) + armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 30, ACID = 30, STAMINA = 10, BLEED = 10) sensor_mode = SENSOR_COORDS random_sensor = FALSE icon = 'icons/obj/clothing/under/captain.dmi' diff --git a/code/modules/clothing/under/jobs/engineering.dm b/code/modules/clothing/under/jobs/engineering.dm index 88d6289238255..663c013b4e14c 100644 --- a/code/modules/clothing/under/jobs/engineering.dm +++ b/code/modules/clothing/under/jobs/engineering.dm @@ -3,7 +3,7 @@ /obj/item/clothing/under/rank/engineering icon = 'icons/obj/clothing/under/engineering.dmi' worn_icon = 'icons/mob/clothing/under/engineering.dmi' - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 10, FIRE = 60, ACID = 20, STAMINA = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 60, ACID = 20, STAMINA = 0) resistance_flags = NONE /obj/item/clothing/under/rank/engineering/chief_engineer @@ -12,7 +12,7 @@ icon_state = "chiefengineer" item_state = "gy_suit" //TODO replace it worn_icon_state = "chiefengineer" - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 10, FIRE = 80, ACID = 40, STAMINA = 0, BLEED = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 80, ACID = 40, STAMINA = 0, BLEED = 10) resistance_flags = NONE /obj/item/clothing/under/rank/engineering/chief_engineer/skirt @@ -20,7 +20,7 @@ name = "chief engineer's jumpskirt" icon_state = "chiefengineer_skirt" item_state = "gy_suit" - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 7, FIRE = 80, ACID = 40, STAMINA = 0, BLEED = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 80, ACID = 40, STAMINA = 0, BLEED = 10) body_parts_covered = CHEST|GROIN|ARMS can_adjust = FALSE fitted = FEMALE_UNIFORM_TOP @@ -50,7 +50,7 @@ name = "engineer's jumpsuit" icon_state = "engine" item_state = "engi_suit" - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 10, FIRE = 60, ACID = 20, STAMINA = 0, BLEED = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 60, ACID = 20, STAMINA = 0, BLEED = 10) resistance_flags = NONE /obj/item/clothing/under/rank/engineering/engineer/hazard diff --git a/code/modules/clothing/under/jobs/medical.dm b/code/modules/clothing/under/jobs/medical.dm index 996ce9e21a1e1..4d022d6351f7e 100644 --- a/code/modules/clothing/under/jobs/medical.dm +++ b/code/modules/clothing/under/jobs/medical.dm @@ -1,7 +1,7 @@ /obj/item/clothing/under/rank/medical icon = 'icons/obj/clothing/under/medical.dmi' worn_icon = 'icons/mob/clothing/under/medical.dmi' - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 50, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 50, FIRE = 0, ACID = 0, STAMINA = 0) /obj/item/clothing/under/rank/medical/chief_medical_officer desc = "It's a jumpsuit worn by those with the experience to be \"Chief Medical Officer\". It provides minor biological protection." @@ -9,7 +9,7 @@ icon_state = "cmo" item_state = "w_suit" permeability_coefficient = 0.5 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 10) /obj/item/clothing/under/rank/medical/chief_medical_officer/skirt name = "chief medical officer's jumpskirt" @@ -28,7 +28,7 @@ icon_state = "genetics" item_state = "w_suit" permeability_coefficient = 0.5 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 10) /obj/item/clothing/under/rank/medical/geneticist/skirt name = "geneticist's jumpskirt" @@ -47,7 +47,7 @@ icon_state = "virology" item_state = "w_suit" permeability_coefficient = 0.5 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 10) /obj/item/clothing/under/rank/medical/virologist/skirt name = "virologist's jumpskirt" @@ -65,7 +65,7 @@ desc = "A standard jumpsuit used by paramedics onboard space stations. It's made of a special fiber that gives special protection against biohazards." icon_state = "paramedic" permeability_coefficient = 0.5 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 10) can_adjust = FALSE /obj/item/clothing/under/rank/medical/paramedic/skirt @@ -85,7 +85,7 @@ icon_state = "nursesuit" item_state = "w_suit" permeability_coefficient = 0.5 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 10) body_parts_covered = CHEST|GROIN|ARMS fitted = NO_FEMALE_UNIFORM can_adjust = FALSE @@ -96,7 +96,7 @@ icon_state = "medical" item_state = "w_suit" permeability_coefficient = 0.5 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 10) /obj/item/clothing/under/rank/medical/doctor/skirt name = "medical doctor's jumpskirt" @@ -133,7 +133,7 @@ icon_state = "chemistry" item_state = "w_suit" permeability_coefficient = 0.5 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, RAD = 0, FIRE = 50, ACID = 65, STAMINA = 0, BLEED = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, FIRE = 50, ACID = 65, STAMINA = 0, BLEED = 10) /obj/item/clothing/under/rank/medical/chemist/skirt name = "chemist's jumpskirt" diff --git a/code/modules/clothing/under/jobs/rnd.dm b/code/modules/clothing/under/jobs/rnd.dm index 7f17125c3112c..1ca7614ebc938 100644 --- a/code/modules/clothing/under/jobs/rnd.dm +++ b/code/modules/clothing/under/jobs/rnd.dm @@ -7,7 +7,7 @@ desc = "It's a jumpsuit worn by those with the know-how to achieve the position of \"Research Director\". Its fabric provides minor protection from biological contaminants." icon_state = "director" item_state = "w_suit" - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 10, BIO = 10, RAD = 0, FIRE = 0, ACID = 35, STAMINA = 0, BLEED = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 10, BIO = 10, FIRE = 0, ACID = 35, STAMINA = 0, BLEED = 10) can_adjust = TRUE alt_covers_chest = TRUE @@ -27,7 +27,7 @@ name = "research director's tan suit" icon_state = "rdwhimsy" item_state = "rdwhimsy" - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 10, BIO = 10, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 10, BIO = 10, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 10) can_adjust = TRUE alt_covers_chest = TRUE @@ -47,7 +47,7 @@ name = "research director's turtleneck" icon_state = "rdturtle" item_state = "p_suit" - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 10, BIO = 10, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 10, BIO = 10, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 10) can_adjust = TRUE alt_covers_chest = TRUE @@ -76,7 +76,7 @@ item_state = "w_suit" worn_icon_state = "toxinswhite" permeability_coefficient = 0.5 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 10, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 10, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 10) /obj/item/clothing/under/rank/rnd/scientist/skirt name = "scientist's jumpskirt" diff --git a/code/modules/clothing/under/jobs/security.dm b/code/modules/clothing/under/jobs/security.dm index 6dd3db43fc331..a1403c98cc7cb 100644 --- a/code/modules/clothing/under/jobs/security.dm +++ b/code/modules/clothing/under/jobs/security.dm @@ -12,7 +12,7 @@ /obj/item/clothing/under/rank/security icon = 'icons/obj/clothing/under/security.dmi' worn_icon = 'icons/mob/clothing/under/security.dmi' - armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, RAD = 0, FIRE = 30, ACID = 30, STAMINA = 10) + armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, FIRE = 30, ACID = 30, STAMINA = 10) strip_delay = 50 sensor_mode = SENSOR_COORDS random_sensor = FALSE @@ -22,7 +22,7 @@ desc = "A tactical security jumpsuit for officers complete with Nanotrasen belt buckle." icon_state = "rsecurity" item_state = "r_suit" - armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 30, ACID = 30, STAMINA = 10, BLEED = 10) + armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 30, ACID = 30, STAMINA = 10, BLEED = 10) alt_covers_chest = TRUE /obj/item/clothing/under/rank/security/officer/white @@ -71,7 +71,7 @@ desc = "A formal security suit for officers complete with Nanotrasen belt buckle." icon_state = "rwarden" item_state = "r_suit" - armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 30, ACID = 30, STAMINA = 10, BLEED = 10) + armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 30, ACID = 30, STAMINA = 10, BLEED = 10) /obj/item/clothing/under/rank/security/warden/white name = "white security suit" @@ -105,7 +105,7 @@ desc = "Someone who wears this means business." icon_state = "detective" item_state = "det" - armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 30, ACID = 30, STAMINA = 10, BLEED = 10) + armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 30, ACID = 30, STAMINA = 10, BLEED = 10) strip_delay = 50 alt_covers_chest = TRUE sensor_mode = SENSOR_COORDS @@ -148,7 +148,7 @@ desc = "A security jumpsuit decorated for those few with the dedication to achieve the position of Head of Security." icon_state = "rhos" item_state = "r_suit" - armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 50, STAMINA = 10, BLEED = 10) + armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 50, STAMINA = 10, BLEED = 10) strip_delay = 60 alt_covers_chest = TRUE sensor_mode = SENSOR_COORDS diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index fe03c6e7e234a..236c172332031 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -40,7 +40,7 @@ gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 100, BIO = 100, RAD = 100, FIRE = 100, ACID = 100, STAMINA = 100, BLEED = 100) + armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 100, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 100, BLEED = 100) cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS diff --git a/code/modules/clothing/under/syndicate.dm b/code/modules/clothing/under/syndicate.dm index a599447bca044..f78d47a7541af 100644 --- a/code/modules/clothing/under/syndicate.dm +++ b/code/modules/clothing/under/syndicate.dm @@ -4,7 +4,7 @@ icon_state = "syndicate" item_state = "bl_suit" has_sensor = NO_SENSORS - armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 40, STAMINA = 10, BLEED = 25) + armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 40, STAMINA = 10, BLEED = 25) alt_covers_chest = TRUE icon = 'icons/obj/clothing/under/syndicate.dmi' worn_icon = 'icons/mob/clothing/under/syndicate.dmi' @@ -14,7 +14,7 @@ desc = "Just looking at it makes you want to buy an SKS, go into the woods, and -operate-." icon_state = "tactifool" item_state = "bl_suit" - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 40, STAMINA = 0, BLEED = 10) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 40, STAMINA = 0, BLEED = 10) /obj/item/clothing/under/syndicate/sniper name = "Tactical turtleneck suit" @@ -35,7 +35,7 @@ desc = "Badly translated labels tell you to clean this in Vodka. Great for squatting in." icon_state = "trackpants" can_adjust = FALSE - armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 10, BLEED = 15) + armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 10, BLEED = 15) resistance_flags = NONE /obj/item/clothing/under/syndicate/combat @@ -49,5 +49,5 @@ desc = "Military grade tracksuits for frontline squatting." icon_state = "rus_under" can_adjust = FALSE - armor = list(MELEE = 5, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 10, BLEED = 15) + armor = list(MELEE = 5, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 10, BLEED = 15) resistance_flags = NONE diff --git a/code/modules/clothing/under/trek.dm b/code/modules/clothing/under/trek.dm index 3e89917cdc11f..7715bda961436 100644 --- a/code/modules/clothing/under/trek.dm +++ b/code/modules/clothing/under/trek.dm @@ -18,7 +18,7 @@ desc = "The uniform worn by engineering/security officers." icon_state = "trek_engsec" item_state = "r_suit" - armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 10) //more sec than eng, but w/e. + armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 10) //more sec than eng, but w/e. strip_delay = 50 /obj/item/clothing/under/trek/medsci diff --git a/code/modules/events/holiday/xmas.dm b/code/modules/events/holiday/xmas.dm index 8a956238270b7..0cc80bed407bd 100644 --- a/code/modules/events/holiday/xmas.dm +++ b/code/modules/events/holiday/xmas.dm @@ -38,14 +38,14 @@ icon_state = "xmashat" desc = "A crappy paper hat that you are REQUIRED to wear." flags_inv = 0 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) /obj/item/clothing/head/costume/festive/Initialize(mapload) //Merry christmas if(CHRISTMAS in SSevents.holidays) - armor = list(MELEE = 30, BULLET = 30, LASER = 30, ENERGY = 30, BOMB = 30, BIO = 30, RAD = 30, FIRE = 30, ACID = 30, STAMINA = 30, BLEED = 30) + armor = list(MELEE = 30, BULLET = 30, LASER = 30, ENERGY = 30, BOMB = 30, BIO = 30, FIRE = 30, ACID = 30, STAMINA = 30, BLEED = 30) else if(FESTIVE_SEASON in SSevents.holidays) - armor = list(MELEE = 20, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 20, BIO = 20, RAD = 20, FIRE = 20, ACID = 20, STAMINA = 20, BLEED = 20) + armor = list(MELEE = 20, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 20, BIO = 20, FIRE = 20, ACID = 20, STAMINA = 20, BLEED = 20) return ..() /obj/effect/spawner/xmastree diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index 5710d58fc701b..5efe277825369 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -24,7 +24,7 @@ opacity = FALSE resistance_flags = FLAMMABLE max_integrity = 200 - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 0, STAMINA = 0, CONSUME = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 0, STAMINA = 0, CONSUME = 0, BLEED = 0) var/state = BOOKCASE_UNANCHORED var/list/allowed_books = list(/obj/item/book, /obj/item/spellbook, /obj/item/storage/book, /obj/item/codex_cicatrix) //Things allowed in the bookcase /// When enabled, books_to_load number of random books will be generated for this bookcase when first interacted with. diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm index 080ee5fad139e..9caecee370a99 100644 --- a/code/modules/mining/equipment/explorer_gear.dm +++ b/code/modules/mining/equipment/explorer_gear.dm @@ -12,7 +12,7 @@ max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT heat_protection = CHEST|GROIN|LEGS|ARMS hoodtype = /obj/item/clothing/head/hooded/explorer - armor = list(MELEE = 30, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 50, BIO = 100, RAD = 50, FIRE = 50, ACID = 50, STAMINA = 20, BLEED = 30) + armor = list(MELEE = 30, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 50, BIO = 100, FIRE = 50, ACID = 50, STAMINA = 20, BLEED = 30) allowed = list( /obj/item/flashlight, /obj/item/tank/internals, @@ -36,7 +36,7 @@ flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT - armor = list(MELEE = 30, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 50, BIO = 100, RAD = 50, FIRE = 50, ACID = 50, STAMINA = 20, BLEED = 30) + armor = list(MELEE = 30, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 50, BIO = 100, FIRE = 50, ACID = 50, STAMINA = 20, BLEED = 30) resistance_flags = FIRE_PROOF high_pressure_multiplier = 0.4 @@ -58,7 +58,7 @@ visor_flags_inv = HIDEFACIALHAIR visor_flags_cover = MASKCOVERSEYES | MASKCOVERSMOUTH actions_types = list(/datum/action/item_action/adjust) - armor = list(MELEE = 10, BULLET = 5, LASER = 5, ENERGY = 5, BOMB = 0, BIO = 50, RAD = 0, FIRE = 20, ACID = 40, STAMINA = 10, BLEED = 10) + armor = list(MELEE = 10, BULLET = 5, LASER = 5, ENERGY = 5, BOMB = 0, BIO = 50, FIRE = 20, ACID = 40, STAMINA = 10, BLEED = 10) resistance_flags = FIRE_PROOF /obj/item/clothing/mask/gas/explorer/attack_self(mob/user) @@ -83,7 +83,7 @@ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | LAVA_PROOF slowdown = 0 - armor = list(MELEE = 70, BULLET = 40, LASER = 20, ENERGY = 20, BOMB = 50, BIO = 100, RAD = 100, FIRE = 100, ACID = 100, STAMINA = 40, BLEED = 50) + armor = list(MELEE = 70, BULLET = 40, LASER = 20, ENERGY = 20, BOMB = 50, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 40, BLEED = 50) allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe) high_pressure_multiplier = 0.6 @@ -111,7 +111,7 @@ w_class = WEIGHT_CLASS_NORMAL max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT clothing_flags = THICKMATERIAL // no space protection - armor = list(MELEE = 70, BULLET = 40, LASER = 20, ENERGY = 20, BOMB = 50, BIO = 100, RAD = 100, FIRE = 100, ACID = 100, STAMINA = 40, BLEED = 50) + armor = list(MELEE = 70, BULLET = 40, LASER = 20, ENERGY = 20, BOMB = 50, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 40, BLEED = 50) resistance_flags = FIRE_PROOF | LAVA_PROOF high_pressure_multiplier = 0.6 diff --git a/code/modules/mining/equipment/marker_beacons.dm b/code/modules/mining/equipment/marker_beacons.dm index 48285fc0e749e..ce5b42b540499 100644 --- a/code/modules/mining/equipment/marker_beacons.dm +++ b/code/modules/mining/equipment/marker_beacons.dm @@ -74,7 +74,7 @@ GLOBAL_LIST_INIT(marker_beacon_colors, sort_list(list( icon = 'icons/obj/lighting.dmi' icon_state = "markerrandom" layer = BELOW_OPEN_DOOR_LAYER - armor = list(MELEE = 50, BULLET = 75, LASER = 75, ENERGY = 75, BOMB = 25, BIO = 100, RAD = 100, FIRE = 25, ACID = 0, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 50, BULLET = 75, LASER = 75, ENERGY = 75, BOMB = 25, BIO = 100, FIRE = 25, ACID = 0, STAMINA = 0, BLEED = 0) max_integrity = 50 anchored = TRUE light_range = 2 diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 7d5dc9a9181af..9a708da4e5ab6 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -680,7 +680,7 @@ heat_protection = HANDS max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT resistance_flags = LAVA_PROOF | FIRE_PROOF //they are from lavaland after all - armor = list(MELEE = 15, BULLET = 35, LASER = 35, ENERGY = 20, BOMB = 35, BIO = 35, RAD = 35, FIRE = 0, ACID = 0, STAMINA = 20, BLEED = 20) //Equivalent to bone bracers. Not bad. + armor = list(MELEE = 15, BULLET = 35, LASER = 35, ENERGY = 20, BOMB = 35, BIO = 35, FIRE = 0, ACID = 0, STAMINA = 20, BLEED = 20) //Equivalent to bone bracers. Not bad. /obj/item/clothing/gloves/concussive_gauntlets/equipped(mob/user, slot) . = ..() diff --git a/code/modules/mob/living/carbon/human/species_types/snail.dm b/code/modules/mob/living/carbon/human/species_types/snail.dm index 85d8ccb9cd4a3..a79b5d604f1ed 100644 --- a/code/modules/mob/living/carbon/human/species_types/snail.dm +++ b/code/modules/mob/living/carbon/human/species_types/snail.dm @@ -60,7 +60,7 @@ item_state = "snailshell" lefthand_file = 'icons/mob/inhands/equipment/backpack_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/backpack_righthand.dmi' - armor = list(MELEE = 20, BULLET = 10, LASER = 10, ENERGY = 10, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 20, BULLET = 10, LASER = 10, ENERGY = 10, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) max_integrity = 200 resistance_flags = FIRE_PROOF | ACID_PROOF diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm index 707a0c84e5354..4167d2b1a17a0 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm @@ -114,7 +114,7 @@ While using this makes the system rely on OnFire, it still gives options for tim /obj/structure/elite_tumor name = "pulsing tumor" desc = "An odd, pulsing tumor sticking out of the ground. You feel compelled to reach out and touch it..." - armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 100, BIO = 100, RAD = 100, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 100, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) resistance_flags = INDESTRUCTIBLE icon = 'icons/obj/lavaland/tumor.dmi' icon_state = "tumor" diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm index a4ef011cd21ff..a178a14f5e75e 100644 --- a/code/modules/modular_computers/computers/item/computer.dm +++ b/code/modules/modular_computers/computers/item/computer.dm @@ -56,7 +56,7 @@ GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar integrity_failure = 0.5 max_integrity = 100 - armor = list(MELEE = 0, BULLET = 20, LASER = 20, ENERGY = 100, BOMB = 0, BIO = 100, RAD = 100, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 20, LASER = 20, ENERGY = 100, BOMB = 0, BIO = 100, FIRE = 0, ACID = 0, STAMINA = 0, BLEED = 0) /// List of "connection ports" in this computer and the components with which they are plugged var/list/all_components = list() diff --git a/code/modules/ninja/suit/head.dm b/code/modules/ninja/suit/head.dm index b02d10df78048..13e19c44f4f92 100644 --- a/code/modules/ninja/suit/head.dm +++ b/code/modules/ninja/suit/head.dm @@ -3,7 +3,7 @@ name = "ninja hood" icon_state = "s-ninja" item_state = "s-ninja_mask" - armor = list(MELEE = 60, BULLET = 50, LASER = 30, ENERGY = 15, BOMB = 30, BIO = 30, RAD = 25, FIRE = 100, ACID = 100, STAMINA = 60, BLEED = 60) + armor = list(MELEE = 60, BULLET = 50, LASER = 30, ENERGY = 15, BOMB = 30, BIO = 30, FIRE = 100, ACID = 100, STAMINA = 60, BLEED = 60) strip_delay = 12 resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF blockTracking = TRUE//Roughly the only unique thing about this helmet. diff --git a/code/modules/ninja/suit/shoes.dm b/code/modules/ninja/suit/shoes.dm index 6a0b16e6667c3..8ef0c4ea82411 100644 --- a/code/modules/ninja/suit/shoes.dm +++ b/code/modules/ninja/suit/shoes.dm @@ -7,7 +7,7 @@ permeability_coefficient = 0.01 clothing_flags = NOSLIP resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF - armor = list(MELEE = 60, BULLET = 50, LASER = 30, ENERGY = 15, BOMB = 30, BIO = 30, RAD = 30, FIRE = 100, ACID = 100, STAMINA = 60, BLEED = 60) + armor = list(MELEE = 60, BULLET = 50, LASER = 30, ENERGY = 15, BOMB = 30, BIO = 30, FIRE = 100, ACID = 100, STAMINA = 60, BLEED = 60) strip_delay = 120 cold_protection = FEET min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT diff --git a/code/modules/ninja/suit/suit.dm b/code/modules/ninja/suit/suit.dm index 5734d60ec467c..23e4fff99b74f 100644 --- a/code/modules/ninja/suit/suit.dm +++ b/code/modules/ninja/suit/suit.dm @@ -19,7 +19,7 @@ Contents: allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/stock_parts/cell) slowdown = 1 resistance_flags = LAVA_PROOF | ACID_PROOF - armor = list(MELEE = 60, BULLET = 50, LASER = 30, ENERGY = 15, BOMB = 30, BIO = 30, RAD = 30, FIRE = 100, ACID = 100, STAMINA = 60, BLEED = 60) + armor = list(MELEE = 60, BULLET = 50, LASER = 30, ENERGY = 15, BOMB = 30, BIO = 30, FIRE = 100, ACID = 100, STAMINA = 60, BLEED = 60) strip_delay = 12 min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT cell = null diff --git a/code/modules/power/apc/apc_main.dm b/code/modules/power/apc/apc_main.dm index c37ce0d32285f..a2f86e236c3a1 100644 --- a/code/modules/power/apc/apc_main.dm +++ b/code/modules/power/apc/apc_main.dm @@ -133,7 +133,7 @@ if (!req_access) req_access = list(ACCESS_ENGINE_EQUIP) if (!armor) - armor = list(MELEE = 20, BULLET = 20, LASER = 10, ENERGY = 100, BOMB = 30, BIO = 100, RAD = 100, FIRE = 90, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 20, BULLET = 20, LASER = 10, ENERGY = 100, BOMB = 30, BIO = 100, FIRE = 90, ACID = 50, STAMINA = 0, BLEED = 0) ..() GLOB.apcs_list += src diff --git a/code/modules/power/lighting/light_construct.dm b/code/modules/power/lighting/light_construct.dm index 47584ee0d1fe6..81c00037ba1b0 100644 --- a/code/modules/power/lighting/light_construct.dm +++ b/code/modules/power/lighting/light_construct.dm @@ -6,7 +6,7 @@ anchored = TRUE layer = WALL_OBJ_LAYER max_integrity = 200 - armor = list(MELEE = 50, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 50, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 80, ACID = 50, STAMINA = 0, BLEED = 0) var/stage = 1 var/fixture_type = "tube" diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index ec26aa3603883..c4c56e921aa2c 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -33,7 +33,7 @@ field_generator power level display use_power = NO_POWER_USE max_integrity = 500 //100% immune to lasers and energy projectiles since it absorbs their energy. - armor = list(MELEE = 25, BULLET = 10, LASER = 100, ENERGY = 100, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 70, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 25, BULLET = 10, LASER = 100, ENERGY = 100, BOMB = 0, BIO = 0, FIRE = 50, ACID = 70, STAMINA = 0, BLEED = 0) var/power_level = 0 var/active = FG_OFFLINE var/power = 20 // Current amount of power diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm index 24feb2fc3d024..2a96c2c53c783 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm @@ -27,7 +27,7 @@ anchored = FALSE density = TRUE max_integrity = 500 - armor = list(MELEE = 30, BULLET = 20, LASER = 20, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 90, ACID = 80, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 30, BULLET = 20, LASER = 20, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 90, ACID = 80, STAMINA = 0, BLEED = 0) var/obj/machinery/particle_accelerator/control_box/master = null var/construction_state = PA_CONSTRUCTION_UNSECURED diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 91eae09b1b5e3..8c73dfdf54543 100755 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -245,7 +245,7 @@ flags_inv = HIDEHAIR slot_flags = ITEM_SLOT_HEAD resistance_flags = NONE - armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 75, ACID = 50, STAMINA = 0, BLEED = 0) //Weak melee protection, because you can wear it on your head + armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 75, ACID = 50, STAMINA = 0, BLEED = 0) //Weak melee protection, because you can wear it on your head slot_equipment_priority = list( \ ITEM_SLOT_BACK, ITEM_SLOT_ID,\ ITEM_SLOT_ICLOTHING, ITEM_SLOT_OCLOTHING,\ diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm index 9096d84b85e79..6fad1eae6381b 100644 --- a/code/modules/recycling/disposal/bin.dm +++ b/code/modules/recycling/disposal/bin.dm @@ -5,7 +5,7 @@ /obj/machinery/disposal icon = 'icons/obj/atmospherics/pipes/disposal.dmi' density = TRUE - armor = list(MELEE = 25, BULLET = 10, LASER = 10, ENERGY = 100, BOMB = 0, BIO = 100, RAD = 100, FIRE = 90, ACID = 30, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 25, BULLET = 10, LASER = 10, ENERGY = 100, BOMB = 0, BIO = 100, FIRE = 90, ACID = 30, STAMINA = 0, BLEED = 0) max_integrity = 200 resistance_flags = FIRE_PROOF interaction_flags_machine = INTERACT_MACHINE_OPEN | INTERACT_MACHINE_WIRES_IF_OPEN | INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OPEN_SILICON diff --git a/code/modules/recycling/disposal/pipe.dm b/code/modules/recycling/disposal/pipe.dm index 79c16ade1c3c1..24a9bfe49b3cf 100644 --- a/code/modules/recycling/disposal/pipe.dm +++ b/code/modules/recycling/disposal/pipe.dm @@ -9,7 +9,7 @@ obj_flags = CAN_BE_HIT | ON_BLUEPRINTS dir = NONE // dir will contain dominant direction for junction pipes max_integrity = 200 - armor = list(MELEE = 25, BULLET = 10, LASER = 10, ENERGY = 100, BOMB = 0, BIO = 100, RAD = 100, FIRE = 90, ACID = 30, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 25, BULLET = 10, LASER = 10, ENERGY = 100, BOMB = 0, BIO = 100, FIRE = 90, ACID = 30, STAMINA = 0, BLEED = 0) layer = DISPOSAL_PIPE_LAYER // slightly lower than wires and other pipes rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE var/dpdir = NONE // bitmask of pipe directions diff --git a/code/modules/research/xenobiology/crossbreeding/_misc.dm b/code/modules/research/xenobiology/crossbreeding/_misc.dm index 8fee94597f33f..897be30b1b858 100644 --- a/code/modules/research/xenobiology/crossbreeding/_misc.dm +++ b/code/modules/research/xenobiology/crossbreeding/_misc.dm @@ -147,7 +147,7 @@ Slimecrossing Items icon_state = "frozen" density = TRUE max_integrity = 100 - armor = list(MELEE = 30, BULLET = 50, LASER = -50, ENERGY = -50, BOMB = 0, BIO = 100, RAD = 100, FIRE = -80, ACID = 30, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 30, BULLET = 50, LASER = -50, ENERGY = -50, BOMB = 0, BIO = 100, FIRE = -80, ACID = 30, STAMINA = 0, BLEED = 0) /obj/structure/ice_stasis/Initialize(mapload) . = ..() diff --git a/code/modules/research/xenobiology/crossbreeding/_weapons.dm b/code/modules/research/xenobiology/crossbreeding/_weapons.dm index b2842e13d2ad3..ebbbfd8855b7e 100644 --- a/code/modules/research/xenobiology/crossbreeding/_weapons.dm +++ b/code/modules/research/xenobiology/crossbreeding/_weapons.dm @@ -67,7 +67,7 @@ Slimecrossing Weapons icon_state = "adamshield" item_state = "adamshield" w_class = WEIGHT_CLASS_HUGE - armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 0, BOMB = 30, BIO = 0, RAD = 0, FIRE = 80, ACID = 70, STAMINA = 70, BLEED = 0) + armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 0, BOMB = 30, BIO = 0, FIRE = 80, ACID = 70, STAMINA = 70, BLEED = 0) slot_flags = ITEM_SLOT_BACK attack_weight = 2 block_power = 75 diff --git a/code/modules/research/xenobiology/crossbreeding/warping.dm b/code/modules/research/xenobiology/crossbreeding/warping.dm index b19063456081d..12a3bc57c45ec 100644 --- a/code/modules/research/xenobiology/crossbreeding/warping.dm +++ b/code/modules/research/xenobiology/crossbreeding/warping.dm @@ -379,7 +379,7 @@ GLOBAL_DATUM(blue_storage, /obj/item/storage/backpack/holding/bluespace) /obj/item/storage/backpack/holding/bluespace name = "warped rune" anchored = TRUE - armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 100, BIO = 100, RAD = 100, FIRE = 100, ACID = 100, STAMINA = 100, BLEED = 0) + armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 100, BIO = 100, FIRE = 100, ACID = 100, STAMINA = 100, BLEED = 0) invisibility = INVISIBILITY_ABSTRACT resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF diff --git a/code/modules/ruins/lavalandruin_code/puzzle.dm b/code/modules/ruins/lavalandruin_code/puzzle.dm index 0c2557c16398a..cf23e907553dd 100644 --- a/code/modules/ruins/lavalandruin_code/puzzle.dm +++ b/code/modules/ruins/lavalandruin_code/puzzle.dm @@ -296,7 +296,7 @@ //Some armor so it's harder to kill someone by mistake. /obj/structure/puzzle_element/prison - armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 50, BOMB = 50, BIO = 50, RAD = 50, FIRE = 50, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 50, BOMB = 50, BIO = 50, FIRE = 50, ACID = 50, STAMINA = 0, BLEED = 0) /obj/structure/puzzle_element/prison/relaymove(mob/living/user, direction) return diff --git a/code/modules/shuttle/shuttle_creation/shuttle_creator.dm b/code/modules/shuttle/shuttle_creation/shuttle_creator.dm index 091801c7079ca..7ebe533307590 100644 --- a/code/modules/shuttle/shuttle_creation/shuttle_creator.dm +++ b/code/modules/shuttle/shuttle_creation/shuttle_creator.dm @@ -27,7 +27,7 @@ GLOBAL_LIST_EMPTY(custom_shuttle_machines) //Machines that require updating (He throw_range = 5 w_class = WEIGHT_CLASS_TINY req_access_txt = "11" - armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 100, ACID = 50, STAMINA = 0, BLEED = 0) resistance_flags = FIRE_PROOF var/ready = TRUE //pre-designation diff --git a/code/modules/vehicles/_vehicle.dm b/code/modules/vehicles/_vehicle.dm index 29dc5b3dfaf7c..2545cd28e5891 100644 --- a/code/modules/vehicles/_vehicle.dm +++ b/code/modules/vehicles/_vehicle.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/vehicles.dmi' icon_state = "error" max_integrity = 300 - armor = list(MELEE = 30, BULLET = 30, LASER = 30, ENERGY = 0, BOMB = 30, BIO = 0, RAD = 0, FIRE = 60, ACID = 60, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 30, BULLET = 30, LASER = 30, ENERGY = 0, BOMB = 30, BIO = 0, FIRE = 60, ACID = 60, STAMINA = 0, BLEED = 0) density = TRUE anchored = FALSE COOLDOWN_DECLARE(cooldown_vehicle_move) diff --git a/code/modules/vehicles/atv.dm b/code/modules/vehicles/atv.dm index a81633cf9a561..044c9d2455c01 100644 --- a/code/modules/vehicles/atv.dm +++ b/code/modules/vehicles/atv.dm @@ -4,7 +4,7 @@ desc = "An all-terrain vehicle built for traversing rough terrain with ease. One of the few old-Earth technologies that are still relevant on most planet-bound outposts." icon_state = "atv" max_integrity = 150 - armor = list(MELEE = 50, BULLET = 25, LASER = 20, ENERGY = 0, BOMB = 50, BIO = 0, RAD = 0, FIRE = 60, ACID = 60, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 50, BULLET = 25, LASER = 20, ENERGY = 0, BOMB = 50, BIO = 0, FIRE = 60, ACID = 60, STAMINA = 0, BLEED = 0) key_type = /obj/item/key integrity_failure = 0.5 var/static/mutable_appearance/atvcover diff --git a/code/modules/vehicles/cars/clowncar.dm b/code/modules/vehicles/cars/clowncar.dm index b90c3e781043b..ae60b0542e6b5 100644 --- a/code/modules/vehicles/cars/clowncar.dm +++ b/code/modules/vehicles/cars/clowncar.dm @@ -3,7 +3,7 @@ desc = "How someone could even fit in there is beyond me." icon_state = "clowncar" max_integrity = 150 - armor = list(MELEE = 70, BULLET = 40, LASER = 40, ENERGY = 0, BOMB = 30, BIO = 0, RAD = 0, FIRE = 80, ACID = 80, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 70, BULLET = 40, LASER = 40, ENERGY = 0, BOMB = 30, BIO = 0, FIRE = 80, ACID = 80, STAMINA = 0, BLEED = 0) enter_delay = 20 max_occupants = 50 movedelay = 0.6 diff --git a/code/modules/vehicles/mecha/_mecha.dm b/code/modules/vehicles/mecha/_mecha.dm index c15459b8845fb..1d028df513cf5 100644 --- a/code/modules/vehicles/mecha/_mecha.dm +++ b/code/modules/vehicles/mecha/_mecha.dm @@ -23,7 +23,7 @@ icon = 'icons/mecha/mecha.dmi' resistance_flags = FIRE_PROOF | ACID_PROOF max_integrity = 300 - armor = list(MELEE = 20, BULLET = 10, LASER = 0, ENERGY = 0, BOMB = 10, BIO = 0, RAD = 0, FIRE = 100, ACID = 100, STAMINA = 0) + armor = list(MELEE = 20, BULLET = 10, LASER = 0, ENERGY = 0, BOMB = 10, BIO = 0, FIRE = 100, ACID = 100, STAMINA = 0) movedelay = 1 SECONDS force = 5 move_force = MOVE_FORCE_VERY_STRONG diff --git a/code/modules/vehicles/mecha/combat/combat.dm b/code/modules/vehicles/mecha/combat/combat.dm index 1d629c7ddcd0d..a1f7cc2dd65df 100644 --- a/code/modules/vehicles/mecha/combat/combat.dm +++ b/code/modules/vehicles/mecha/combat/combat.dm @@ -2,7 +2,7 @@ force = 30 internals_req_access = list(ACCESS_MECH_SCIENCE, ACCESS_MECH_SECURITY) internal_damage_threshold = 50 - armor = list(MELEE = 30, BULLET = 30, LASER = 15, ENERGY = 20, BOMB = 20, BIO = 0, RAD = 0, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 30, BULLET = 30, LASER = 15, ENERGY = 20, BOMB = 20, BIO = 0, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) mouse_pointer = 'icons/mecha/mecha_mouse.dmi' destruction_knockdown_duration = 8 SECONDS exit_delay = 40 diff --git a/code/modules/vehicles/mecha/combat/durand.dm b/code/modules/vehicles/mecha/combat/durand.dm index e436afcaab9ee..c0939ebce321f 100644 --- a/code/modules/vehicles/mecha/combat/durand.dm +++ b/code/modules/vehicles/mecha/combat/durand.dm @@ -7,7 +7,7 @@ dir_in = 1 //Facing North. max_integrity = 400 deflect_chance = 20 - armor = list(MELEE = 40, BULLET = 35, LASER = 15, ENERGY = 10, BOMB = 20, BIO = 0, RAD = 50, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 40, BULLET = 35, LASER = 15, ENERGY = 10, BOMB = 20, BIO = 0, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) max_temperature = 30000 force = 40 wreckage = /obj/structure/mecha_wreckage/durand diff --git a/code/modules/vehicles/mecha/combat/gygax.dm b/code/modules/vehicles/mecha/combat/gygax.dm index afc9545af683b..26bbf2388d24c 100644 --- a/code/modules/vehicles/mecha/combat/gygax.dm +++ b/code/modules/vehicles/mecha/combat/gygax.dm @@ -7,7 +7,7 @@ dir_in = 1 //Facing North. max_integrity = 250 deflect_chance = 5 - armor = list(MELEE = 25, BULLET = 20, LASER = 30, ENERGY = 15, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 25, BULLET = 20, LASER = 30, ENERGY = 15, BOMB = 0, BIO = 0, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) max_temperature = 25000 leg_overload_coeff = 80 force = 25 @@ -23,7 +23,7 @@ base_icon_state = "darkgygax" max_integrity = 300 deflect_chance = 15 - armor = list(MELEE = 40, BULLET = 40, LASER = 50, ENERGY = 35, BOMB = 20, BIO = 0, RAD = 20, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 40, BULLET = 40, LASER = 50, ENERGY = 35, BOMB = 20, BIO = 0, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) max_temperature = 35000 leg_overload_coeff = 70 operation_req_access = list(ACCESS_SYNDICATE) diff --git a/code/modules/vehicles/mecha/combat/honker.dm b/code/modules/vehicles/mecha/combat/honker.dm index d9a8d0fe40fc5..ee1761ed82c0d 100644 --- a/code/modules/vehicles/mecha/combat/honker.dm +++ b/code/modules/vehicles/mecha/combat/honker.dm @@ -7,7 +7,7 @@ max_integrity = 140 deflect_chance = 60 internal_damage_threshold = 60 - armor = list(MELEE = -20, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = -20, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) max_temperature = 25000 operation_req_access = list(ACCESS_THEATRE) internals_req_access = list(ACCESS_MECH_SCIENCE, ACCESS_THEATRE) diff --git a/code/modules/vehicles/mecha/combat/marauder.dm b/code/modules/vehicles/mecha/combat/marauder.dm index b90dcbdd05034..59475c5bd4e62 100644 --- a/code/modules/vehicles/mecha/combat/marauder.dm +++ b/code/modules/vehicles/mecha/combat/marauder.dm @@ -6,7 +6,7 @@ movedelay = 5 max_integrity = 500 deflect_chance = 25 - armor = list(MELEE = 50, BULLET = 55, LASER = 40, ENERGY = 30, BOMB = 30, BIO = 0, RAD = 60, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 50, BULLET = 55, LASER = 40, ENERGY = 30, BOMB = 30, BIO = 0, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) max_temperature = 60000 resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF operation_req_access = list(ACCESS_CENT_SPECOPS) diff --git a/code/modules/vehicles/mecha/combat/phazon.dm b/code/modules/vehicles/mecha/combat/phazon.dm index af921d340fa0e..dd2543b013bf8 100644 --- a/code/modules/vehicles/mecha/combat/phazon.dm +++ b/code/modules/vehicles/mecha/combat/phazon.dm @@ -8,7 +8,7 @@ step_energy_drain = 3 max_integrity = 200 deflect_chance = 30 - armor = list(MELEE = 30, BULLET = 30, LASER = 30, ENERGY = 30, BOMB = 30, BIO = 0, RAD = 50, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 30, BULLET = 30, LASER = 30, ENERGY = 30, BOMB = 30, BIO = 0, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) max_temperature = 25000 wreckage = /obj/structure/mecha_wreckage/phazon internal_damage_threshold = 25 diff --git a/code/modules/vehicles/mecha/combat/reticence.dm b/code/modules/vehicles/mecha/combat/reticence.dm index 420133de3861a..ff0df413d9061 100644 --- a/code/modules/vehicles/mecha/combat/reticence.dm +++ b/code/modules/vehicles/mecha/combat/reticence.dm @@ -7,7 +7,7 @@ dir_in = 1 //Facing North. max_integrity = 100 deflect_chance = 3 - armor = list(MELEE = 25, BULLET = 20, LASER = 30, ENERGY = 15, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 25, BULLET = 20, LASER = 30, ENERGY = 15, BOMB = 0, BIO = 0, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) max_temperature = 15000 wreckage = /obj/structure/mecha_wreckage/reticence operation_req_access = list(ACCESS_THEATRE) diff --git a/code/modules/vehicles/mecha/working/clarke.dm b/code/modules/vehicles/mecha/working/clarke.dm index 905024e9437d6..0fe37e198833d 100644 --- a/code/modules/vehicles/mecha/working/clarke.dm +++ b/code/modules/vehicles/mecha/working/clarke.dm @@ -11,7 +11,7 @@ lights_power = 7 deflect_chance = 10 step_energy_drain = 15 //slightly higher energy drain since you movin those wheels FAST - armor = list(MELEE = 20, BULLET = 10, LASER = 20, ENERGY = 10, BOMB = 60, BIO = 0, RAD = 70, FIRE = 100, ACID = 100) //low armor to compensate for fire protection and speed + armor = list(MELEE = 20, BULLET = 10, LASER = 20, ENERGY = 10, BOMB = 60, BIO = 0, FIRE = 100, ACID = 100) //low armor to compensate for fire protection and speed max_equip = 7 wreckage = /obj/structure/mecha_wreckage/clarke enter_delay = 40 diff --git a/code/modules/vehicles/mecha/working/ripley.dm b/code/modules/vehicles/mecha/working/ripley.dm index 23a80f6843023..0ebe61bc5ed06 100644 --- a/code/modules/vehicles/mecha/working/ripley.dm +++ b/code/modules/vehicles/mecha/working/ripley.dm @@ -13,7 +13,7 @@ max_integrity = 200 lights_power = 7 deflect_chance = 15 - armor = list(MELEE = 40, BULLET = 20, LASER = 10, ENERGY = 20, BOMB = 40, BIO = 0, RAD = 20, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 40, BULLET = 20, LASER = 10, ENERGY = 20, BOMB = 40, BIO = 0, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) max_equip = 6 wreckage = /obj/structure/mecha_wreckage/ripley internals_req_access = list(ACCESS_MECH_ENGINE, ACCESS_MECH_SCIENCE, ACCESS_MECH_MINING) @@ -66,7 +66,7 @@ fast_pressure_step_in = 1.75 //step_in while in low pressure conditions slow_pressure_step_in = 3 //step_in while in normal pressure conditions movedelay = 4 - armor = list(MELEE = 40, BULLET = 20, LASER = 10, ENERGY = 20, BOMB = 40, BIO = 0, RAD = 0, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 40, BULLET = 20, LASER = 10, ENERGY = 20, BOMB = 40, BIO = 0, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) wreckage = /obj/structure/mecha_wreckage/ripley/mk2 enclosed = TRUE enter_delay = 40 diff --git a/code/modules/vehicles/secway.dm b/code/modules/vehicles/secway.dm index 0dc23070ea4b6..54b3fc8bd3bf8 100644 --- a/code/modules/vehicles/secway.dm +++ b/code/modules/vehicles/secway.dm @@ -4,7 +4,7 @@ desc = "A brave security cyborg gave its life to help you look like a complete tool." icon_state = "secway" max_integrity = 100 - armor = list(MELEE = 20, BULLET = 15, LASER = 10, ENERGY = 0, BOMB = 30, BIO = 0, RAD = 0, FIRE = 60, ACID = 60, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 20, BULLET = 15, LASER = 10, ENERGY = 0, BOMB = 30, BIO = 0, FIRE = 60, ACID = 60, STAMINA = 0, BLEED = 0) key_type = /obj/item/key/security integrity_failure = 0.5 diff --git a/code/modules/vehicles/wheelchair.dm b/code/modules/vehicles/wheelchair.dm index abd6ec9dc7787..67ec3077e394d 100644 --- a/code/modules/vehicles/wheelchair.dm +++ b/code/modules/vehicles/wheelchair.dm @@ -5,7 +5,7 @@ icon_state = "wheelchair" layer = OBJ_LAYER max_integrity = 100 - armor = list(MELEE = 10, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 10, BIO = 0, RAD = 0, FIRE = 20, ACID = 30, STAMINA = 0, BLEED = 0) //Wheelchairs aren't super tough yo + armor = list(MELEE = 10, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 10, BIO = 0, FIRE = 20, ACID = 30, STAMINA = 0, BLEED = 0) //Wheelchairs aren't super tough yo legs_required = 0 //You'll probably be using this if you don't have legs canmove = TRUE density = FALSE //Thought I couldn't fix this one easily, phew diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm index ceaae3686798e..d53717678a5f4 100644 --- a/code/modules/vending/_vending.dm +++ b/code/modules/vending/_vending.dm @@ -59,7 +59,7 @@ verb_exclaim = "beeps" max_integrity = 300 integrity_failure = 0.33 - armor = list(MELEE = 20, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 70, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 20, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 70, STAMINA = 0, BLEED = 0) circuit = /obj/item/circuitboard/machine/vendor clicksound = 'sound/machines/pda_button1.ogg' dept_req_for_free = ACCOUNT_SRV_BITFLAG diff --git a/code/modules/vending/liberation.dm b/code/modules/vending/liberation.dm index f217a7ead39c1..87facb63030a9 100644 --- a/code/modules/vending/liberation.dm +++ b/code/modules/vending/liberation.dm @@ -26,7 +26,7 @@ contraband = list(/obj/item/clothing/under/misc/patriotsuit = 3, /obj/item/bedsheet/patriot = 5, /obj/item/food/burger/superbite = 3) //U S A - armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 0, BIO = 0, FIRE = 100, ACID = 50, STAMINA = 0, BLEED = 0) resistance_flags = FIRE_PROOF default_price = 300 extra_price = 500 diff --git a/code/modules/vending/liberation_toy.dm b/code/modules/vending/liberation_toy.dm index 09ffd5acef36b..5c6ca9da1dfef 100644 --- a/code/modules/vending/liberation_toy.dm +++ b/code/modules/vending/liberation_toy.dm @@ -22,7 +22,7 @@ /obj/item/toy/katana = 10, /obj/item/dualsaber/toy = 5, /obj/item/toy/cards/deck/syndicate = 10) //Gambling and it hurts, making it a +18 item - armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 0, BIO = 0, FIRE = 100, ACID = 50, STAMINA = 0, BLEED = 0) resistance_flags = FIRE_PROOF refill_canister = /obj/item/vending_refill/donksoft default_price = 75 diff --git a/code/modules/vending/magivend.dm b/code/modules/vending/magivend.dm index a01f7615886a6..0e78eec956819 100644 --- a/code/modules/vending/magivend.dm +++ b/code/modules/vending/magivend.dm @@ -14,7 +14,7 @@ /obj/item/clothing/shoes/sandal/magic = 1, /obj/item/staff = 2) contraband = list(/obj/item/reagent_containers/glass/bottle/wizarditis = 1) //No one can get to the machine to hack it anyways; for the lulz - Microwave - armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 0, BIO = 0, FIRE = 100, ACID = 50, STAMINA = 0, BLEED = 0) resistance_flags = FIRE_PROOF default_price = 25 extra_price = 50 diff --git a/code/modules/vending/medical.dm b/code/modules/vending/medical.dm index 09a84878e17c5..b6709892974f2 100644 --- a/code/modules/vending/medical.dm +++ b/code/modules/vending/medical.dm @@ -31,7 +31,7 @@ /obj/item/pinpointer/crew = 2, /obj/item/healthanalyzer = 2, /obj/item/wrench/medical = 1) - armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 0, BIO = 0, FIRE = 100, ACID = 50, STAMINA = 0, BLEED = 0) resistance_flags = FIRE_PROOF refill_canister = /obj/item/vending_refill/medical default_price = 25 diff --git a/code/modules/vending/medical_wall.dm b/code/modules/vending/medical_wall.dm index df7b1935f9110..285c4cbeceb61 100644 --- a/code/modules/vending/medical_wall.dm +++ b/code/modules/vending/medical_wall.dm @@ -13,7 +13,7 @@ /obj/item/reagent_containers/medspray/sterilizine = 3) contraband = list(/obj/item/reagent_containers/glass/bottle/toxin = 1, /obj/item/reagent_containers/glass/bottle/morphine = 1) - armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 0, BIO = 0, FIRE = 100, ACID = 50, STAMINA = 0, BLEED = 0) resistance_flags = FIRE_PROOF refill_canister = /obj/item/vending_refill/wallmed default_price = 25 diff --git a/code/modules/vending/toys.dm b/code/modules/vending/toys.dm index e43d014bf1ea4..06e6fd3b708ec 100644 --- a/code/modules/vending/toys.dm +++ b/code/modules/vending/toys.dm @@ -24,7 +24,7 @@ /obj/item/toy/katana = 10, /obj/item/dualsaber/toy = 5) - armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 50, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 0, BIO = 0, FIRE = 100, ACID = 50, STAMINA = 0, BLEED = 0) resistance_flags = FIRE_PROOF refill_canister = /obj/item/vending_refill/donksoft default_price = 75 diff --git a/code/modules/vending/youtool.dm b/code/modules/vending/youtool.dm index 93df6958ea3fc..a184932be9a80 100644 --- a/code/modules/vending/youtool.dm +++ b/code/modules/vending/youtool.dm @@ -23,7 +23,7 @@ /obj/item/clothing/head/utility/welding = 2, /obj/item/clothing/gloves/color/yellow = 1) refill_canister = /obj/item/vending_refill/tool - armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 70, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 0, BIO = 0, FIRE = 100, ACID = 70, STAMINA = 0, BLEED = 0) resistance_flags = FIRE_PROOF default_price = 10 extra_price = 80 From 85ae8853f3f81bb48c09db18f5da9dd4a35a0b51 Mon Sep 17 00:00:00 2001 From: XeonMations Date: Fri, 6 Sep 2024 06:15:15 +0300 Subject: [PATCH 03/42] rahhhhhgh --- code/__DEFINES/devices.dm | 1 - code/datums/mutations/radioactive.dm | 12 +- code/datums/radiation_wave.dm | 289 ------------------ .../weather/weather_types/radiation_storm.dm | 36 ++- code/game/atoms.dm | 14 - code/game/machinery/computer/dna_console.dm | 138 +++++---- code/game/machinery/doors/airlock.dm | 3 - code/game/machinery/doors/airlock_types.dm | 2 +- code/game/machinery/suit_storage_unit.dm | 4 +- code/game/machinery/teleporter.dm | 2 - .../objects/items/devices/geiger_counter.dm | 195 ++++-------- code/game/objects/items/devices/scanners.dm | 8 +- .../objects/items/devices/traitordevices.dm | 1 - code/game/objects/items/dna_injector.dm | 3 - .../objects/items/grenades/syndieminibomb.dm | 5 +- code/game/objects/items/religion.dm | 2 +- code/game/objects/items/storage/bags.dm | 1 - code/game/objects/items/theft_tools.dm | 8 +- code/game/objects/items/tools/wirebrush.dm | 46 --- code/game/objects/objs.dm | 4 +- code/game/objects/structures/false_walls.dm | 4 +- code/game/objects/structures/girders.dm | 2 - code/game/objects/structures/grille.dm | 1 - code/game/objects/structures/holosign.dm | 4 - code/game/objects/structures/mineral_doors.dm | 2 - code/game/objects/structures/shower.dm | 3 +- code/game/objects/structures/signs/_signs.dm | 1 - code/game/objects/structures/window.dm | 2 - code/game/turfs/closed/_closed.dm | 2 - code/game/turfs/closed/wall/mineral_walls.dm | 2 +- code/game/turfs/open/_open.dm | 8 - code/game/turfs/open/floor/mineral_floor.dm | 2 +- .../atmospherics/gasmixtures/reactions.dm | 6 +- code/modules/clothing/clothing.dm | 4 +- .../clothing/glasses/engine_goggles.dm | 30 +- code/modules/clothing/suits/utility.dm | 2 - code/modules/mining/satchel_ore_box.dm | 4 - code/modules/mob/living/carbon/human/human.dm | 1 - code/modules/mob/living/carbon/human/life.dm | 4 - code/modules/mob/living/silicon/silicon.dm | 1 - .../file_system/programs/phys_scanner.dm | 14 - .../chemistry/reagents/medicine_reagents.dm | 2 +- code/modules/recycling/disposal/pipe.dm | 1 - 43 files changed, 184 insertions(+), 692 deletions(-) delete mode 100644 code/datums/radiation_wave.dm diff --git a/code/__DEFINES/devices.dm b/code/__DEFINES/devices.dm index 7086e9f649bcf..5aa3279722f11 100644 --- a/code/__DEFINES/devices.dm +++ b/code/__DEFINES/devices.dm @@ -1,6 +1,5 @@ // Role disk defines -#define DISK_POWER (1<<0) #define DISK_ATMOS (1<<1) #define DISK_MED (1<<2) #define DISK_CHEM (1<<3) diff --git a/code/datums/mutations/radioactive.dm b/code/datums/mutations/radioactive.dm index 2ede583cb1467..0df32130d25c5 100644 --- a/code/datums/mutations/radioactive.dm +++ b/code/datums/mutations/radioactive.dm @@ -6,13 +6,23 @@ difficulty = 8 power_coeff = 1 + COOLDOWN_DECLARE(last_radioactive_pulse) + /datum/mutation/radioactive/New(class_ = MUT_OTHER, timer, datum/mutation/copymut) ..() if(!(type in visual_indicators)) visual_indicators[type] = list(mutable_appearance('icons/effects/genetics.dmi', "radiation")) /datum/mutation/radioactive/on_life() - radiation_pulse(owner, 20 * GET_MUTATION_POWER(src)) + if (!COOLDOWN_FINISHED(src, last_radioactive_pulse)) + return + + COOLDOWN_START(src, last_radioactive_pulse, 5 SECONDS) + radiation_pulse( + owner, + max_range = 1 * (GET_MUTATION_POWER(src) * 2), + threshold = RAD_MEDIUM_INSULATION, + ) /datum/mutation/radioactive/get_visual_indicator() return visual_indicators[type][1] diff --git a/code/datums/radiation_wave.dm b/code/datums/radiation_wave.dm deleted file mode 100644 index df670cbe73b87..0000000000000 --- a/code/datums/radiation_wave.dm +++ /dev/null @@ -1,289 +0,0 @@ -#define PRC_FLAG_HL (1<<0) // Send half of current strength to the upper "left" -#define PRC_FLAG_L (1<<1) // Send the whole current strength to the upper "left": direct succession -#define PRC_FLAG_HR (1<<2) // Send half of current strength to the upper "right" -#define PRC_FLAG_R (1<<3) // Send the whole current strength to the upper "right": direct succession - -/** - * Crash Course: Understanding PRC_BEHAVIOR - * We move forward, and in square-by-square manner, so we need a list 8 entries larger than the current one, and future squares are determined from the current square. - * We move clockwise: "left" means intensity_new[i + j], "right" means intensity_new[i + j + 1]. `j` here is offset. - * Most squares are on branch: It moves "left"(L) or "right"(R). - * But, sometimes, a branch can't decide which way to go; then it splits(D) and merges(HL, HR). - * Then there are squares not on branch; those don't go anywhere else(N). - * But branchless squares still need to act radiation; does branchless square's does one time transient succession from both of immediate predecessors - * ... in contrast to "on-branch" squares where there are only one meaningful predecessor. - * Since we are calculating future squares, we need to see if there are any branchless squares needing our attention: (*STAR) - * And, of course, branchless squares might have to draw from another preceding branchless squares. (NWL, NWR) - */ - -#define PRC_BEHAVIOR_N (1<<4) // Not on branch, and both upper squares are on branch - // So we don't calculate prc_behavior every time (setting to 0 would do that) -#define PRC_BEHAVIOR_NWL PRC_FLAG_HL // Not on branch, but will send half of its strength to the "left" since it also is not on branch -#define PRC_BEHAVIOR_NWR PRC_FLAG_HR // Not on branch, but will send half of its strength to the "left" since it also is not on branch -#define PRC_BEHAVIOR_L PRC_FLAG_L // On branch, going "left" -#define PRC_BEHAVIOR_LSTAR (PRC_FLAG_L|PRC_FLAG_HR) // On branch, going "left", but there's branchless square on the "right" -#define PRC_BEHAVIOR_R PRC_FLAG_R // On branch, going "right" -#define PRC_BEHAVIOR_RSTAR (PRC_FLAG_R|PRC_FLAG_HL) // On branch, going "left", but there's branchless square on the "left" -#define PRC_BEHAVIOR_D (PRC_FLAG_L|PRC_FLAG_R) // On branch, double successor. -#define PRC_BEHAVIOR_HL PRC_FLAG_HL // From one of the double successor; single successor on the "left" -#define PRC_BEHAVIOR_HLSTAR (PRC_FLAG_HL|PRC_FLAG_HR) // From one of the double successor; single successor on the "left", but there's branchless square on the "right" -#define PRC_BEHAVIOR_HR PRC_FLAG_HR // From one of the double successor; single successor on the "right" -#define PRC_BEHAVIOR_HRSTAR (PRC_FLAG_HR|PRC_FLAG_HL) // From one of the double successor; single successor on the "right", but there's branchless square on the "left" - -/datum/radiation_wave - var/source - var/turf/master_turf //The center of the wave - var/steps = 0 //How far we've moved - var/intensity[8] //How strong it is, except the distance falloff - var/range_modifier //Higher than 1 makes it drop off faster, 0.5 makes it drop off half etc - var/can_contaminate - var/static/list/prc_behavior_cache - -/datum/radiation_wave/New(atom/_source, _intensity=0, _range_modifier=RAD_DISTANCE_COEFFICIENT, _can_contaminate=TRUE) - - source = "[_source] \[[REF(_source)]\]" - - master_turf = get_turf(_source) - - // Yes, it causes (8 / range_modifier ** 2) times the strength you gave to the radiation_pulse(). - for(var/i in 1 to 8) - intensity[i] = _intensity - range_modifier = _range_modifier - can_contaminate = _can_contaminate - - START_PROCESSING(SSradiation, src) - -/datum/radiation_wave/Destroy() - . = QDEL_HINT_IWILLGC - intensity = null - STOP_PROCESSING(SSradiation, src) - ..() - -/datum/radiation_wave/process(delta_time) - // If master_turf is no more, then we can't know where to irradiate. This is a very bad situation. - if(!master_turf) - qdel(src) - return - // If none of the turfs could be irradiated, then the wave should no longer exist - var/futile = TRUE - // Cache of unlucky atoms - var/list/atoms = list() - // The actual distance - var/distance = steps + 1 - // Represents decreasing radiation power over distance - var/falloff = 1 / (distance * range_modifier) ** 2 - // Caching - var/turf/cmaster_turf = master_turf - // Original intensity it is using - var/list/cintensity = intensity - // New intensity that'll be written; always larger than the previous one - var/list/intensity_new[(distance + 1) * 8] - // "Class" it belongs to - var/branchclass = 2 ** round(log(2, distance)) - // The secondary i, or the offset for i - var/j - - for(var/i in 1 to distance * 8) - //Culls invalid intensities - if(cintensity[i] * falloff < RAD_WAVE_MINIMUM) - continue - var/xpos - var/ypos - switch(i / distance) - if(0 to 2) - //Yes it starts one step off of what you'd expect. Blame BYOND. - xpos = cmaster_turf.x + distance - ypos = cmaster_turf.y + distance - i - if(2 to 4) - xpos = cmaster_turf.x + distance * 3 - i - ypos = cmaster_turf.y - distance - if(4 to 6) - xpos = cmaster_turf.x - distance - ypos = cmaster_turf.y - distance * 5 + i - if(6 to 8) - xpos = cmaster_turf.x - distance * 7 + i - ypos = cmaster_turf.y + distance - //Culls invalid coords - if(xpos < 1 || xpos > world.maxx || ypos < 1 || ypos > world.maxy) - continue - - //The radiation is considered alive - futile = FALSE - var/turf/place = locate(xpos, ypos, cmaster_turf.z) - atoms = get_rad_contents(place) - - //Actual radiation spending - cintensity[i] *= radiate(atoms, cintensity[i] * falloff) - - //Obstruction handling - check_obstructions(atoms, i) - - /* - * This is what I call pseudo-raycasting (PRC). Real raycasting would be ridiculously expensive, - * So this is the solution I came up with. Don't try to understand it by seeing the code. - * You have been warned. If you find yourself really having to touch this cursed code, - * consider axing this away before contacting me via git-fu email digging. - * - * Therefore, I urge you not to hastily assume this code a culprit of your problem. - * This code is responsible just for *keeping the rads going forward* more reasonably - * in regard to obstruction and contamination cost. But, of course, if you are rewriting - * (notwithstanding how questionable rewriting something major of a mature codebase like - * every normal SS13 codebase is) the entire radiation code, then this code should be - * considered for deletion. - * - * On a side note, this implementation isn't very ideal. So please remove this instead of - * trying to improve it when its time has come. (i.e. another total overhaul) - * - * ~Xenomedes, Christmas 2020 - */ - - // Handling eight fundamental (read: perfectly straight) branches - if((j = i / distance) == (j = round(j))) - distance + 1 == branchclass * 2 \ - ? (i == distance * 8 \ - ? (intensity_new[j - 1] += (intensity_new[1] += ((intensity_new[(j += i)] = cintensity[i]) / 2)) && cintensity[i] / 2) \ - : (intensity_new[j - 1] += intensity_new[j + 1] = ((intensity_new[(j += i)] = cintensity[i]) / 2))) \ - : (intensity_new[i + j] = cintensity[i]) - continue - - var/list/cachecache - - if(!prc_behavior_cache) - prc_behavior_cache = list() - if(length(prc_behavior_cache) < distance) - prc_behavior_cache.len++ - // We don't reserve spaces for fundamental branches - var/L[distance - 1] - // distance == 1 is where every ray is fundamental branch - cachecache = prc_behavior_cache[distance - 1] = L - else - cachecache = prc_behavior_cache[distance - 1] - - // i % distance == 0 cases were already handled above - var/prc_behavior = cachecache[i % distance] - - if(!prc_behavior) - // Necessary local variables - var/idx // index - var/lp // loop position - var/vl // velocity of loop - var/bt // branch threshold - - // The actual behavior calculation - cachecache[i % distance] = prc_behavior = distance & 1 \ - ? ((lp = ((idx = i % distance) * (vl = distance - branchclass + 1)) % (distance + 1)) < (bt = branchclass - (idx - round(idx * vl / (distance + 1)))) \ - ? (lp \ - ? (lp + vl >= bt ? PRC_BEHAVIOR_LSTAR : PRC_BEHAVIOR_L) \ - : (vl >= bt ? PRC_BEHAVIOR_HLSTAR : PRC_BEHAVIOR_HL)) \ - : (lp > branchclass \ - ? (lp - vl <= bt ? PRC_BEHAVIOR_NWL : (lp - bt > branchclass ? PRC_BEHAVIOR_NWR : PRC_BEHAVIOR_N)) \ - : (lp == branchclass \ - ? (lp - vl <= bt ? PRC_BEHAVIOR_HRSTAR : PRC_BEHAVIOR_HR) \ - : (lp - vl <= bt ? PRC_BEHAVIOR_RSTAR : PRC_BEHAVIOR_R)))) \ - : ((lp = ((idx = i % distance) * (vl = distance - branchclass + 1)) % (distance + 1)) == (bt = branchclass - (idx - round(idx * vl / (distance + 1)))) \ - ? PRC_BEHAVIOR_D \ - : (lp > branchclass \ - ? (lp - vl <= bt ? PRC_BEHAVIOR_NWL : (lp - bt > branchclass ? PRC_BEHAVIOR_NWR : PRC_BEHAVIOR_N)) \ - : (lp < bt \ - ? (lp + vl >= bt ? PRC_BEHAVIOR_LSTAR : PRC_BEHAVIOR_L) \ - : (lp - vl <= bt ? PRC_BEHAVIOR_RSTAR : PRC_BEHAVIOR_R)))) - - prc_behavior & PRC_FLAG_HL \ - ? (intensity_new[i + j] += cintensity[i] / 2) \ - : (prc_behavior & PRC_FLAG_L \ - ? (intensity_new[i + j] = cintensity[i]) \ - : null) - - prc_behavior & PRC_FLAG_HR \ - ? (intensity_new[i + j + 1] += cintensity[i] / 2) \ - : (prc_behavior & PRC_FLAG_R \ - ? (intensity_new[i + j + 1] = cintensity[i]) \ - : null) - - if(futile) - qdel(src) - return - - // Now is time to move forward - intensity = intensity_new - steps += delta_time - -/datum/radiation_wave/proc/check_obstructions(list/atoms, index) - for(var/k in 1 to atoms.len) - var/atom/thing = atoms[k] - if(!thing) - continue - if (SEND_SIGNAL(thing, COMSIG_ATOM_RAD_WAVE_PASSING, src, index) & COMPONENT_RAD_WAVE_HANDLED) - continue - if (thing.rad_insulation != RAD_NO_INSULATION) - intensity[index] *= thing.rad_insulation - -// Returns post-radiation strength power scale of a ray -// If this proc returns a number lower than 1, it means that the some radiation was spent on contaminating something. -/datum/radiation_wave/proc/radiate(list/atoms, strength) - // returning 1 means no radiation was spent on contamination - . = 1 - var/list/moblist = list() - var/list/atomlist = list() - var/contam_strength = strength * (RAD_CONTAMINATION_STR_COEFFICIENT * RAD_CONTAMINATION_BUDGET_SIZE) // The budget for each list - var/is_contaminating = contam_strength > RAD_COMPONENT_MINIMUM && can_contaminate - for(var/k in 1 to atoms.len) - var/atom/thing = atoms[k] - if(!thing) - continue - thing.rad_act(strength) - - // This list should only be for types which don't get contaminated but you want to look in their contents - // If you don't want to look in their contents and you don't want to rad_act them: - // modify the ignored_things list in __HELPERS/radiation.dm instead - var/static/list/blacklisted = typecacheof(list( - /turf, - /obj/structure/cable, - /obj/machinery/atmospherics, - /obj/item/ammo_casing, - /obj/item/implant, - /obj/anomaly, - /obj/eldritch/narsie - )) - // Insulating objects won't get contaminated - if(!is_contaminating || blacklisted[thing.type] || SEND_SIGNAL(thing, COMSIG_ATOM_RAD_CONTAMINATING, strength) & COMPONENT_BLOCK_CONTAMINATION) - continue - if(ismob(thing)) - moblist += thing - else - atomlist += thing - - // We don't randomly choose one from the list since that can result in zero meaningful contamination - - if(atomlist.len) - . -= RAD_CONTAMINATION_BUDGET_SIZE - var/affordance = min(round(contam_strength / RAD_COMPONENT_MINIMUM), atomlist.len) - var/contam_strength_divided = contam_strength / affordance - for(var/k in 1 to affordance) - var/atom/poor_thing = atomlist[k] - poor_thing.AddComponent(/datum/component/radioactive, contam_strength_divided, source) - - if(moblist.len) - . -= RAD_CONTAMINATION_BUDGET_SIZE - var/affordance = min(round(contam_strength / RAD_COMPONENT_MINIMUM), moblist.len) - var/contam_strength_divided = contam_strength / affordance - for(var/k in 1 to affordance) - var/mob/poor_mob = moblist[k] - poor_mob.AddComponent(/datum/component/radioactive, contam_strength_divided, source) - -#undef PRC_FLAG_HL -#undef PRC_FLAG_L -#undef PRC_FLAG_HR -#undef PRC_FLAG_R -#undef PRC_BEHAVIOR_N -#undef PRC_BEHAVIOR_NWL -#undef PRC_BEHAVIOR_NWR -#undef PRC_BEHAVIOR_L -#undef PRC_BEHAVIOR_LSTAR -#undef PRC_BEHAVIOR_R -#undef PRC_BEHAVIOR_RSTAR -#undef PRC_BEHAVIOR_D -#undef PRC_BEHAVIOR_HL -#undef PRC_BEHAVIOR_HLSTAR -#undef PRC_BEHAVIOR_HR -#undef PRC_BEHAVIOR_HRSTAR diff --git a/code/datums/weather/weather_types/radiation_storm.dm b/code/datums/weather/weather_types/radiation_storm.dm index 8c714e6eda9f0..f4870c0c5126d 100644 --- a/code/datums/weather/weather_types/radiation_storm.dm +++ b/code/datums/weather/weather_types/radiation_storm.dm @@ -30,20 +30,28 @@ /datum/weather/rad_storm/weather_act(mob/living/L) - var/resist = L.getarmor(null, RAD) - if(prob(40)) - if(ishuman(L)) - var/mob/living/carbon/human/H = L - if(H.dna && !HAS_TRAIT(H, TRAIT_RADIMMUNE)) - if(prob(max(0,100-resist))) - H.randmuti() - if(prob(50)) - if(prob(90)) - H.easy_randmut(NEGATIVE+MINOR_NEGATIVE) - else - H.easy_randmut(POSITIVE) - H.domutcheck() - L.rad_act(20) + if(!prob(40)) + return + + if(!ishuman(L)) + return + + var/mob/living/carbon/human/H = L + if(!H.dna || HAS_TRAIT(H, TRAIT_GENELESS)) + return + + if (SSradiation.wearing_rad_protected_clothing(H)) + return + + H.random_mutate_unique_identity() + H.random_mutate_unique_features() + + if(prob(50)) + if(prob(90)) + H.easy_random_mutate(NEGATIVE+MINOR_NEGATIVE) + else + H.easy_random_mutate(POSITIVE) + H.domutcheck() /datum/weather/rad_storm/end() if(..()) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 0deec87f6c61d..dd0550ee7aaf6 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -944,14 +944,6 @@ if(!SEND_SIGNAL(src, COMSIG_ATOM_SHOULD_EMAG, user)) SEND_SIGNAL(src, COMSIG_ATOM_ON_EMAG, user, hacker) -/** - * Respond to a radioactive wave hitting this atom - * - * Default behaviour is to send COMSIG_ATOM_RAD_ACT and return - */ -/atom/proc/rad_act(strength) - SEND_SIGNAL(src, COMSIG_ATOM_RAD_ACT, strength) - /** * Respond to narsie eating our atom * @@ -1247,7 +1239,6 @@ VV_DROPDOWN_OPTION(VV_HK_ADD_REAGENT, "Add Reagent") VV_DROPDOWN_OPTION(VV_HK_TRIGGER_EMP, "EMP Pulse") VV_DROPDOWN_OPTION(VV_HK_TRIGGER_EXPLOSION, "Explosion") - VV_DROPDOWN_OPTION(VV_HK_RADIATE, "Radiate") VV_DROPDOWN_OPTION(VV_HK_EDIT_FILTERS, "Edit Filters") VV_DROPDOWN_OPTION(VV_HK_EDIT_COLOR_MATRIX, "Edit Color as Matrix") VV_DROPDOWN_OPTION(VV_HK_ADD_AI, "Add AI controller") @@ -1300,11 +1291,6 @@ if(href_list[VV_HK_TRIGGER_EMP] && check_rights(R_FUN)) usr.client.cmd_admin_emp(src) - if(href_list[VV_HK_RADIATE] && check_rights(R_FUN)) - var/strength = input(usr, "Choose the radiation strength.", "Choose the strength.") as num|null - if(!isnull(strength)) - AddComponent(/datum/component/radioactive, strength, src) - if(href_list[VV_HK_MODIFY_TRANSFORM] && check_rights(R_VAREDIT)) var/result = input(usr, "Choose the transformation to apply","Transform Mod") as null|anything in list("Scale","Translate","Rotate") var/matrix/M = transform diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm index 17334db4e8ded..d1d396154571e 100644 --- a/code/game/machinery/computer/dna_console.dm +++ b/code/game/machinery/computer/dna_console.dm @@ -4,16 +4,21 @@ #define JOKER_TIMEOUT 12000 //20 minutes #define JOKER_UPGRADE 1800 -#define RADIATION_STRENGTH_MAX 15 -#define RADIATION_STRENGTH_MULTIPLIER 1 //larger has more range +/// Maximum value for genetic damage strength when pulsing enzymes +#define GENETIC_DAMAGE_STRENGTH_MAX 15 +/// Larger multipliers will affect the range of values when pulsing enzymes +#define GENETIC_DAMAGE_STRENGTH_MULTIPLIER 1 -#define RADIATION_DURATION_MAX 30 -#define RADIATION_ACCURACY_MULTIPLIER 3 //larger is less accurate +/// Maximum value for the genetic damage pulse duration when pulsing enzymes +#define GENETIC_DAMAGE_DURATION_MAX 30 +/// Large values reduce pulse accuracy and may pulse other enzymes than selected +#define GENETIC_DAMAGE_ACCURACY_MULTIPLIER 3 /// Special status indicating a scanner occupant is transforming eg. from monkey to human #define STATUS_TRANSFORMING 4 -#define RADIATION_IRRADIATION_MULTIPLIER 1 //multiplier for how much radiation a test subject receives +/// Multiplier for how much genetic damage received from DNA Console functionality +#define GENETIC_DAMAGE_IRGENETIC_DAMAGE_MULTIPLIER 1 #define SEARCH_OCCUPANT 1 /// Flag for the mutation ref search system. Search will include console storage @@ -63,8 +68,10 @@ var/datum/techweb/stored_research var/max_storage = 6 var/combine - var/radduration = 2 - var/radstrength = 1 + /// Duration for enzyme genetic damage pulses + var/pulse_duration = 2 + /// Strength for enzyme genetic damage pulses + var/pulse_strength = 1 var/max_chromosomes = 5 ///Amount of mutations we can store var/list/genetic_makeup_buffer[NUMBER_OF_BUFFERS] @@ -111,9 +118,9 @@ var/list/delayed_action = null /// Index of the enzyme being modified during delayed enzyme pulse operations - var/rad_pulse_index = 0 + var/genetic_damage_pulse_index = 0 /// World time when the enzyme pulse should complete - COOLDOWN_DECLARE(rad_pulse_timer) + COOLDOWN_DECLARE(genetic_damage_pulse_timer) /// Used for setting tgui data - Whether the connected DNA Scanner is usable var/can_use_scanner = FALSE @@ -126,7 +133,7 @@ /// Used for setting tgui data - Whether injectors are ready to be printed var/is_injector_ready = FALSE /// Used for setting tgui data - Wheher an enzyme pulse operation is ongoing - var/is_pulsing_rads = FALSE + var/is_pulsing = FALSE /// Used for setting tgui data - Time until scramble is ready var/time_to_scramble = 0 /// Used for setting tgui data - Time until joker is ready @@ -162,10 +169,10 @@ /obj/machinery/computer/scan_consolenew/process() . = ..() - // This is for pulsing the UI element with radiation as part of genetic makeup - // If rad_pulse_index > 0 then it means we're attempting a rad pulse - if((rad_pulse_index > 0) && !COOLDOWN_FINISHED(src, rad_pulse_timer)) - rad_pulse() + // This is for pulsing the UI element with genetic damage as part of genetic makeup + // If genetic_damage_pulse_index > 0 then it means we're attempting a pulse + if((genetic_damage_pulse_index > 0) && (genetic_damage_pulse_timer <= world.time) && (genetic_damage_pulse_type == GENETIC_DAMAGE_PULSE_UNIQUE_IDENTITY || genetic_damage_pulse_type == GENETIC_DAMAGE_PULSE_UNIQUE_FEATURES)) + genetic_damage_pulse() return /obj/machinery/computer/scan_consolenew/attackby(obj/item/I, mob/user, params) @@ -305,8 +312,8 @@ is_joker_ready = COOLDOWN_FINISHED(src, joker_cooldown) time_to_joker = round(COOLDOWN_TIMELEFT(src, joker_cooldown) / 10) - is_pulsing_rads = ((rad_pulse_index > 0) && !COOLDOWN_FINISHED(src, rad_pulse_timer)) - time_to_pulse = round(COOLDOWN_TIMELEFT(src, rad_pulse_timer) / 10) + is_pulsing = ((genetic_damage_pulse_index > 0) && (genetic_damage_pulse_timer > world.time)) + time_to_pulse = round((genetic_damage_pulse_timer - world.time)/10) // Attempt to update tgui ui, open and update if needed. ui = SStgui.try_update_ui(user, src, ui) @@ -340,10 +347,10 @@ data["scannerOpen"] = connected_scanner.state_open data["scannerLocked"] = connected_scanner.locked data["scannerBoltWireCut"] = connected_scanner.wires.is_cut(WIRE_BOLTS) - data["radStrength"] = radstrength - data["radDuration"] = radduration - data["stdDevStr"] = radstrength * RADIATION_STRENGTH_MULTIPLIER - switch(RADIATION_ACCURACY_MULTIPLIER / (radduration + (connected_scanner.precision_coeff ** 2))) //hardcoded values from a z-table for a normal distribution + data["pulseStrength"] = pulse_strength + data["pulseDuration"] = pulse_duration + data["stdDevStr"] = pulse_strength * GENETIC_DAMAGE_STRENGTH_MULTIPLIER + switch(GENETIC_DAMAGE_ACCURACY_MULTIPLIER / (pulse_duration + (connected_scanner.precision_coeff ** 2))) //hardcoded values from a z-table for a normal distribution if(0 to 0.25) data["stdDevAcc"] = ">95 %" if(0.25 to 0.5) @@ -361,19 +368,18 @@ else data["subjectStatus"] = scanner_occupant.stat data["subjectHealth"] = scanner_occupant.health - data["subjectRads"] = scanner_occupant.radiation/(RAD_MOB_SAFE/100) data["subjectEnzymes"] = scanner_occupant.dna.unique_enzymes data["isMonkey"] = ismonkey(scanner_occupant) data["subjectUNI"] = scanner_occupant.dna.uni_identity data["storage"]["occupant"] = tgui_occupant_mutations - //data["subjectMutations"] = tgui_occupant_mutations + var/datum/component/genetic_damage/genetic_damage = scanner_occupant.GetComponent(/datum/component/genetic_damage) + data["subjectDamage"] = genetic_damage ? round((genetic_damage.total_damage / genetic_damage.minimum_before_damage) * 100, 0.1) : 0 else data["subjectName"] = null data["subjectStatus"] = null data["subjectHealth"] = null - data["subjectRads"] = null + data["subjectDamage"] = null data["subjectEnzymes"] = null - //data["subjectMutations"] = null data["storage"]["occupant"] = null data["hasDelayedAction"] = (delayed_action != null) @@ -383,8 +389,8 @@ data["scrambleSeconds"] = time_to_scramble data["jokerSeconds"] = time_to_joker data["injectorSeconds"] = time_to_injector - data["isPulsingRads"] = is_pulsing_rads - data["radPulseSeconds"] = time_to_pulse + data["isPulsing"] = is_pulsing + data["timeToPulse"] = time_to_pulse if(diskette != null) data["hasDisk"] = TRUE @@ -466,7 +472,7 @@ scanner_occupant.dna.generate_dna_blocks() COOLDOWN_START(src, scramble_cooldown, SCRAMBLE_TIMEOUT) to_chat(usr, "DNA scrambled.") - scanner_occupant.radiation += RADIATION_STRENGTH_MULTIPLIER * 50 / (connected_scanner.damage_coeff ** 2) + scanner_occupant.AddComponent(/datum/component/genetic_damage, GENETIC_DAMAGE_STRENGTH_MULTIPLIER*50/(connected_scanner.damage_coeff ** 2)) return // Check whether a specific mutation is eligible for discovery within the @@ -574,10 +580,10 @@ scanner_occupant.dna.default_mutation_genes[path] = defaultseq // Copy genome to scanner occupant and do some basic mutation checks as - // we've increased the occupant rads + // we've increased the occupant genetic damage sequence = copytext_char(sequence, 1, genepos) + newgene + copytext_char(sequence, genepos + 1) scanner_occupant.dna.mutation_index[path] = sequence - scanner_occupant.radiation += RADIATION_STRENGTH_MULTIPLIER / connected_scanner.damage_coeff + scanner_occupant.AddComponent(/datum/component/genetic_damage, GENETIC_DAMAGE_STRENGTH_MULTIPLIER/connected_scanner.damage_coeff) scanner_occupant.domutcheck() // GUARD CHECK - Modifying genetics can lead to edge cases where the @@ -707,7 +713,7 @@ I.name = "DNA activator" I.research = TRUE // If there's an operational connected scanner, we can use its upgrades - // to improve our injector's radiation generation + // to improve our injector's genetic damage generation if(scanner_operational()) I.damage_coeff = connected_scanner.damage_coeff * 4 COOLDOWN_START(src, injector_cooldown, activator_timeout) @@ -718,7 +724,7 @@ I.desc = "Adds the current mutation on injection, at the cost of genetic stability." I.doitanyway = TRUE // If there's an operational connected scanner, we can use its upgrades - // to improve our injector's radiation generation + // to improve our injector's genetic damage generation if(scanner_operational()) I.damage_coeff = connected_scanner.damage_coeff COOLDOWN_START(src, injector_cooldown, mutator_timeout) @@ -1064,7 +1070,7 @@ // later on in code if("set_pulse_strength") var/value = round(text2num(params["val"])) - radstrength = WRAP(value, 1, RADIATION_STRENGTH_MAX+1) + pulse_strength = WRAP(value, 1, GENETIC_DAMAGE_STRENGTH_MAX+1) return // Sets the Genetic Makeup pulse duration @@ -1073,7 +1079,7 @@ // later on in code if("set_pulse_duration") var/value = round(text2num(params["val"])) - radduration = WRAP(value, 1, RADIATION_DURATION_MAX+1) + pulse_duration = WRAP(value, 1, GENETIC_DAMAGE_DURATION_MAX+1) return // Saves Genetic Makeup information to disk @@ -1235,7 +1241,7 @@ I.fields = list("UI" = buffer_slot["UI"]) // If there is a connected scanner, we can use its upgrades to reduce - // the radiation generated by this injector + // the genetic damage generated by this injector if(scanner_operational()) I.damage_coeff = connected_scanner.damage_coeff if("ue") @@ -1254,7 +1260,7 @@ ) // If there is a connected scanner, we can use its upgrades to reduce - // the radiation generated by this injector + // the genetic damage generated by this injector if(scanner_operational()) I.damage_coeff = connected_scanner.damage_coeff if("mixed") @@ -1274,7 +1280,7 @@ ) // If there is a connected scanner, we can use its upgrades to reduce - // the radiation generated by this injector + // the genetic damage generated by this injector if(scanner_operational()) I.damage_coeff = connected_scanner.damage_coeff @@ -1365,12 +1371,12 @@ // Set the appropriate timer and index to pulse. This is then managed // later on in process() var/len = length_char(scanner_occupant.dna.uni_identity) - COOLDOWN_START(src, rad_pulse_timer, radduration * 10) - rad_pulse_index = WRAP(text2num(params["index"]), 1, len + 1) + COOLDOWN_START(src, genetic_damage_pulse_timer, radduration * 10) + genetic_damage_pulse_index = WRAP(text2num(params["index"]), 1, len + 1) START_PROCESSING(SSobj, src) return - // Cancels the delayed action - In this context it is not the radiation + // Cancels the delayed action - In this context it is not the genetic damage // pulse from "makeup_pulse", which can not be cancelled. It is instead // the delayed genetic transfer from "makeup_delay" if("cancel_delay") @@ -1451,7 +1457,7 @@ I.name = "Advanced [inj_name] injector" // If there's an operational connected scanner, we can use its upgrades - // to improve our injector's radiation generation + // to improve our injector's genetic damage generation if(scanner_operational()) I.damage_coeff = connected_scanner.damage_coeff COOLDOWN_START(src, injector_cooldown, advanced_timeout) @@ -1577,9 +1583,9 @@ // necessary occupant guard checks. If you call this code yourself, please // apply can_modify_occupant() or equivalent checks first. - // Pre-calc the rad increase since we'll be using it in all the possible + // Pre-calc the damage increase since we'll be using it in all the possible // operations - var/rad_increase = rand(100 / (connected_scanner.damage_coeff ** 2), 250 / (connected_scanner.damage_coeff ** 2)) + var/damage_increase = rand(100/(connected_scanner.damage_coeff ** 2),250/(connected_scanner.damage_coeff ** 2)) switch(type) if("ui") @@ -1591,7 +1597,7 @@ return FALSE scanner_occupant.dna.uni_identity = buffer_slot["UI"] scanner_occupant.updateappearance(mutations_overlay_update = 1) - scanner_occupant.radiation += rad_increase + scanner_occupant.AddComponent(/datum/component/genetic_damage, damage_increase) scanner_occupant.domutcheck() return TRUE if("ue") @@ -1605,7 +1611,7 @@ scanner_occupant.name = buffer_slot["name"] scanner_occupant.dna.unique_enzymes = buffer_slot["UE"] scanner_occupant.dna.blood_type = buffer_slot["blood_type"] - scanner_occupant.radiation += rad_increase + scanner_occupant.AddComponent(/datum/component/genetic_damage, damage_increase) scanner_occupant.domutcheck() return TRUE if("mixed") @@ -1621,7 +1627,7 @@ scanner_occupant.name = buffer_slot["name"] scanner_occupant.dna.unique_enzymes = buffer_slot["UE"] scanner_occupant.dna.blood_type = buffer_slot["blood_type"] - scanner_occupant.radiation += rad_increase + scanner_occupant.AddComponent(/datum/component/genetic_damage, damage_increase) scanner_occupant.domutcheck() return TRUE @@ -1656,7 +1662,7 @@ // DNA Modification: // requires DNA // this DNA can not be bad - // is done via radiation bursts, so radiation immune carbons are not viable + // is done via genetic damage bursts, so genetic damage immune carbons are not viable // And the DNA Scanner itself must have a valid scan level if(scanner_occupant.has_dna() && !HAS_TRAIT(scanner_occupant, TRAIT_RADIMMUNE) && !HAS_TRAIT(scanner_occupant, TRAIT_BADDNA) || (connected_scanner.scan_level >= 3)) return TRUE @@ -1697,10 +1703,10 @@ */ /obj/machinery/computer/scan_consolenew/proc/on_scanner_open() SIGNAL_HANDLER - // If we had a radiation pulse action ongoing, we want to stop this. + // If we had a genetic damage pulse action ongoing, we want to stop this. // Imagine it being like a microwave stopping when you open the door. - rad_pulse_index = 0 - COOLDOWN_RESET(src, rad_pulse_timer) + genetic_damage_pulse_index = 0 + COOLDOWN_RESET(src, genetic_damage_pulse_timer) STOP_PROCESSING(SSobj, src) scanner_occupant = null @@ -2041,11 +2047,11 @@ * * Arguments: * * position - Index of the intended enzyme element to pulse - * * radduration - Duration of intended radiation pulse + * * pulse_duration - Duration of intended genetic damage pulse * * number_of_blocks - Number of individual data blocks in the pulsed enzyme */ -/obj/machinery/computer/scan_consolenew/proc/randomize_radiation_accuracy(position, radduration, number_of_blocks) - var/val = round(gaussian(0, RADIATION_ACCURACY_MULTIPLIER/radduration) + position, 1) +/obj/machinery/computer/scan_consolenew/proc/randomize_GENETIC_DAMAGE_accuracy(position, pulse_duration, number_of_blocks) + var/val = round(gaussian(0, GENETIC_DAMAGE_ACCURACY_MULTIPLIER/pulse_duration) + position, 1) return WRAP(val, 1, number_of_blocks + 1) /** @@ -2055,11 +2061,11 @@ * * Arguments: * * input - Enzyme identity element to scramble, expected hex value - * * rs - Strength of radiation pulse, increases the range of possible outcomes + * * rs - Strength of genetic damage pulse, increases the range of possible outcomes */ /obj/machinery/computer/scan_consolenew/proc/scramble(input,rs) var/length = length(input) - var/ran = gaussian(0, rs * RADIATION_STRENGTH_MULTIPLIER) + var/ran = gaussian(0, rs*GENETIC_DAMAGE_STRENGTH_MULTIPLIER) switch(ran) if(0) ran = pick(-1, 1) //hacky, statistically should almost never happen. 0-chance makes people mad though @@ -2070,29 +2076,29 @@ return num2hex(WRAP(hex2num(input) + ran, 0, 16 ** length), length) /** - * Performs the enzyme radiation pulse. + * Performs the enzyme genetic damage pulse. * * Donor code from previous DNA Console iteration. Called from process() when - * there is a radiation pulse in progress. Ends processing. + * there is a genetic damage pulse in progress. Ends processing. */ -/obj/machinery/computer/scan_consolenew/proc/rad_pulse() +/obj/machinery/computer/scan_consolenew/proc/genetic_damage_pulse() // GUARD CHECK - Can we genetically modify the occupant? Includes scanner // operational guard checks. // If we can't, abort the procedure. if(!can_modify_occupant()) - rad_pulse_index = 0 + genetic_damage_pulse_index = 0 STOP_PROCESSING(SSobj, src) return var/len = length_char(scanner_occupant.dna.uni_identity) - var/num = randomize_radiation_accuracy(rad_pulse_index, radduration + (connected_scanner.precision_coeff ** 2), len) //Each manipulator level above 1 makes randomization as accurate as selected time + manipulator lvl^2 //Value is this high for the same reason as with laser - not worth the hassle of upgrading if the bonus is low + var/num = randomize_GENETIC_DAMAGE_accuracy(genetic_damage_pulse_index, pulse_duration + (connected_scanner.precision_coeff ** 2), len) //Each manipulator level above 1 makes randomization as accurate as selected time + manipulator lvl^2 //Value is this high for the same reason as with laser - not worth the hassle of upgrading if the bonus is low var/hex = copytext_char(scanner_occupant.dna.uni_identity, num, num + 1) - hex = scramble(hex, radstrength, radduration) + hex = scramble(hex, pulse_strength, pulse_duration) scanner_occupant.dna.uni_identity = copytext_char(scanner_occupant.dna.uni_identity, 1, num) + hex + copytext_char(scanner_occupant.dna.uni_identity, num + 1) scanner_occupant.updateappearance(mutations_overlay_update = 1) - rad_pulse_index = 0 + genetic_damage_pulse_index = 0 STOP_PROCESSING(SSobj, src) return @@ -2161,13 +2167,13 @@ #undef JOKER_TIMEOUT #undef JOKER_UPGRADE -#undef RADIATION_STRENGTH_MAX -#undef RADIATION_STRENGTH_MULTIPLIER +#undef GENETIC_DAMAGE_STRENGTH_MAX +#undef GENETIC_DAMAGE_STRENGTH_MULTIPLIER -#undef RADIATION_DURATION_MAX -#undef RADIATION_ACCURACY_MULTIPLIER +#undef GENETIC_DAMAGE_DURATION_MAX +#undef GENETIC_DAMAGE_ACCURACY_MULTIPLIER -#undef RADIATION_IRRADIATION_MULTIPLIER +#undef GENETIC_DAMAGE_IRGENETIC_DAMAGE_MULTIPLIER #undef STATUS_TRANSFORMING diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index c946c241ddef8..991af6fb71d6c 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -101,9 +101,6 @@ var/prying_so_hard = FALSE var/protected_door = FALSE // Protects the door against any form of power outage, AI control, screwdrivers and welders. - rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE - rad_insulation = RAD_MEDIUM_INSULATION - var/electrification_timing // Set to true while electrified_loop is running, to prevent multiple being started network_id = NETWORK_DOOR_AIRLOCKS diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index c205806191deb..fcbea0496338d 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -206,7 +206,7 @@ ..() /obj/machinery/door/airlock/uranium/proc/radiate() - radiation_pulse(get_turf(src), 150) + radiation_pulse(src, max_range = 2, threshold = RAD_LIGHT_INSULATION, chance = URANIUM_IRRADIATION_CHANCE, minimum_exposure_time = URANIUM_RADIATION_MINIMUM_EXPOSURE_TIME) return /obj/machinery/door/airlock/uranium/glass diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index cb3b618366e5e..356ba3c32c981 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -421,7 +421,7 @@ toasted = TRUE if(mob_occupant) visible_message("[src]'s door creaks open with a loud whining noise. A foul stench and a cloud of smoke exit the chamber.") - mob_occupant.radiation = 0 //The guy inside is toasted to a crisp, no need to leave him with the rads + qdel(mob_occupant.GetComponent(/datum/component/irradiated)) //The guy inside is toasted to a crisp, no need to leave him with the rads else visible_message("[src]'s door creaks open with a loud whining noise. A cloud of foul black smoke escapes from its chamber.") playsound(src, 'sound/machines/airlock_alien_prying.ogg', 50, TRUE) @@ -438,7 +438,7 @@ if(!toasted) //Special toast check to prevent a double finishing message. if(mob_occupant) visible_message("[src]'s door slides open, barraging you with the nauseating smell of charred flesh.") - mob_occupant.radiation = 0 + qdel(mob_occupant.GetComponent(/datum/component/irradiated)) else visible_message("[src]'s door slides open. The glowing yellow lights dim to a gentle green.") toasted = FALSE diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index f703c91d3107c..7701a86ebdf25 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -86,8 +86,6 @@ log_game("[M] ([key_name(M)]) was turned into a fly person") to_chat(M, "You hear a buzzing in your ears.") human.set_species(/datum/species/fly) - - human.apply_effect((rand(160 - accuracy * 40, 240 - accuracy * 60)), EFFECT_IRRADIATE, 0) calibrated = 0 return diff --git a/code/game/objects/items/devices/geiger_counter.dm b/code/game/objects/items/devices/geiger_counter.dm index c433e287215ad..31a3580e0d093 100644 --- a/code/game/objects/items/devices/geiger_counter.dm +++ b/code/game/objects/items/devices/geiger_counter.dm @@ -1,9 +1,3 @@ -#define RAD_LEVEL_NORMAL 9 -#define RAD_LEVEL_MODERATE 100 -#define RAD_LEVEL_HIGH 400 -#define RAD_LEVEL_VERY_HIGH 800 -#define RAD_LEVEL_CRITICAL 1500 - /obj/item/geiger_counter //DISCLAIMER: I know nothing about how real-life Geiger counters work. This will not be realistic. ~Xhuis name = "\improper Geiger counter" desc = "A handheld device used for detecting and measuring radiation pulses." @@ -17,187 +11,102 @@ slot_flags = ITEM_SLOT_BELT custom_materials = list(/datum/material/iron = 150, /datum/material/glass = 150) - var/grace = RAD_GEIGER_GRACE_PERIOD - var/datum/looping_sound/geiger/soundloop + var/last_perceived_radiation_danger = null var/scanning = FALSE - var/radiation_count = 0 - var/current_tick_amount = 0 - var/last_tick_amount = 0 - var/fail_to_receive = 0 - var/current_warning = 1 /obj/item/geiger_counter/Initialize(mapload) . = ..() - START_PROCESSING(SSobj, src) - - soundloop = new(src, FALSE) - -/obj/item/geiger_counter/Destroy() - QDEL_NULL(soundloop) - STOP_PROCESSING(SSobj, src) - return ..() - -/obj/item/geiger_counter/process(delta_time) - if(scanning) - radiation_count = LPFILTER(radiation_count, current_tick_amount, delta_time, RAD_GEIGER_RC) - - if(current_tick_amount) - grace = RAD_GEIGER_GRACE_PERIOD - last_tick_amount = current_tick_amount - - else if(!(obj_flags & EMAGGED)) - grace -= delta_time - if(grace <= 0) - radiation_count = 0 - - current_tick_amount = 0 - - update_icon() - update_sound() + RegisterSignal(src, COMSIG_IN_RANGE_OF_IRRADIATION, .proc/on_pre_potential_irradiation) /obj/item/geiger_counter/examine(mob/user) . = ..() if(!scanning) return . += "Alt-click it to clear stored radiation levels." - if(obj_flags & EMAGGED) - . += "The display seems to be incomprehensible." - return - switch(radiation_count) - if(-INFINITY to RAD_LEVEL_NORMAL) + switch(last_perceived_radiation_danger) + if(null) . += "Ambient radiation level count reports that all is well." - if(RAD_LEVEL_NORMAL + 1 to RAD_LEVEL_MODERATE) + if(PERCEIVED_RADIATION_DANGER_LOW) . += "Ambient radiation levels slightly above average." - if(RAD_LEVEL_MODERATE + 1 to RAD_LEVEL_HIGH) + if(PERCEIVED_RADIATION_DANGER_MEDIUM) . += "Ambient radiation levels above average." - if(RAD_LEVEL_HIGH + 1 to RAD_LEVEL_VERY_HIGH) + if(PERCEIVED_RADIATION_DANGER_HIGH) . += "Ambient radiation levels highly above average." - if(RAD_LEVEL_VERY_HIGH + 1 to RAD_LEVEL_CRITICAL) - . += "Ambient radiation levels nearing critical level." - if(RAD_LEVEL_CRITICAL + 1 to INFINITY) + if(PERCEIVED_RADIATION_DANGER_EXTREME) . += "Ambient radiation levels above critical level!" - . += "The last radiation amount detected was [last_tick_amount]" - /obj/item/geiger_counter/update_icon_state() if(!scanning) icon_state = "geiger_off" return ..() - else if(obj_flags & EMAGGED) - icon_state = "geiger_on_emag" - return ..() - switch(radiation_count) - if(-INFINITY to RAD_LEVEL_NORMAL) + switch(last_perceived_radiation_danger) + if(null) icon_state = "geiger_on_1" - if(RAD_LEVEL_NORMAL + 1 to RAD_LEVEL_MODERATE) + if(PERCEIVED_RADIATION_DANGER_LOW) icon_state = "geiger_on_2" - if(RAD_LEVEL_MODERATE + 1 to RAD_LEVEL_HIGH) + if(PERCEIVED_RADIATION_DANGER_MEDIUM) icon_state = "geiger_on_3" - if(RAD_LEVEL_HIGH + 1 to RAD_LEVEL_VERY_HIGH) - icon_state = "geiger_on_4" - if(RAD_LEVEL_VERY_HIGH + 1 to RAD_LEVEL_CRITICAL) + if(PERCEIVED_RADIATION_DANGER_HIGH) icon_state = "geiger_on_4" - if(RAD_LEVEL_CRITICAL + 1 to INFINITY) + if(PERCEIVED_RADIATION_DANGER_EXTREME) icon_state = "geiger_on_5" return ..() -/obj/item/geiger_counter/proc/update_sound() - var/datum/looping_sound/geiger/loop = soundloop - if(!scanning) - loop.stop() - return - if(!radiation_count) - loop.stop() - return - loop.last_radiation = radiation_count - loop.start() - -/obj/item/geiger_counter/rad_act(amount) - . = ..() - if(amount <= RAD_BACKGROUND_RADIATION || !scanning) - return - current_tick_amount += amount - update_icon() - /obj/item/geiger_counter/attack_self(mob/user) scanning = !scanning + if (scanning) + AddComponent(/datum/component/geiger_sound) + else + qdel(GetComponent(/datum/component/geiger_sound)) update_icon() to_chat(user, "[icon2html(src, user)] You switch [scanning ? "on" : "off"] [src].") -/obj/item/geiger_counter/afterattack(atom/target, mob/user) +/obj/item/geiger_counter/afterattack(atom/target, mob/living/user, params) . = ..() - if(user.a_intent == INTENT_HELP) - if(!(obj_flags & EMAGGED)) - user.visible_message("[user] scans [target] with [src].", "You scan [target]'s radiation levels with [src]...") - addtimer(CALLBACK(src, PROC_REF(scan), target, user), 20, TIMER_UNIQUE) // Let's not have spamming GetAllContents - else - user.visible_message("[user] scans [target] with [src].", "You project [src]'s stored radiation into [target]!") - target.rad_act(radiation_count) - radiation_count = 0 - return TRUE - -/obj/item/geiger_counter/proc/scan(atom/A, mob/user) - var/rad_strength = 0 - for(var/i in get_rad_contents(A)) // Yes it's intentional that you can't detect radioactive things under rad protection. Gives traitors a way to hide their glowing green rocks. - var/atom/thing = i - if(!thing) - continue - var/datum/component/radioactive/radiation = thing.GetComponent(/datum/component/radioactive) - if(radiation) - rad_strength += radiation.strength - - if(isliving(A)) - var/mob/living/M = A - if(!M.radiation) - to_chat(user, "[icon2html(src, user)] Radiation levels within normal boundaries.") - else - to_chat(user, "[icon2html(src, user)] Subject is irradiated. Radiation levels: [M.radiation].") - - if(rad_strength) - to_chat(user, "[icon2html(src, user)] Target contains radioactive contamination. Radioactive strength: [rad_strength]") - else - to_chat(user, "[icon2html(src, user)] Target is free of radioactive contamination.") - -/obj/item/geiger_counter/attackby(obj/item/I, mob/user, params) - if(I.tool_behaviour == TOOL_SCREWDRIVER && (obj_flags & EMAGGED)) - if(scanning) - to_chat(user, "Turn off [src] before you perform this action!") - return 0 - user.visible_message("[user] unscrews [src]'s maintenance panel and begins fiddling with its innards...", "You begin resetting [src]...") - if(!I.use_tool(src, user, 40, volume=50)) - return 0 - user.visible_message("[user] refastens [src]'s maintenance panel!", "You reset [src] to its factory settings!") - obj_flags &= ~EMAGGED - radiation_count = 0 + if (!CAN_IRRADIATE(target)) + return + user.visible_message("[user] scans [target] with [src].", "You scan [target]'s radiation levels with [src]...") + addtimer(CALLBACK(src, PROC_REF(scan), target, user), 20, TIMER_UNIQUE) // Let's not have spamming GetAllContents + return TRUE + +/obj/item/geiger_counter/equipped(mob/user, slot, initial) + . = ..() + RegisterSignal(user, COMSIG_IN_RANGE_OF_IRRADIATION, PROC_REF(on_pre_potential_irradiation)) + +/obj/item/geiger_counter/dropped(mob/user, silent = FALSE) + . = ..() + UnregisterSignal(user, COMSIG_IN_RANGE_OF_IRRADIATION) + +/obj/item/geiger_counter/proc/on_pre_potential_irradiation(datum/source, datum/radiation_pulse_information/pulse_information, insulation_to_target) + SIGNAL_HANDLER + last_perceived_radiation_danger = get_perceived_radiation_danger(pulse_information, insulation_to_target) + addtimer(CALLBACK(src, PROC_REF(reset_perceived_danger)), TIME_WITHOUT_RADIATION_BEFORE_RESET, TIMER_UNIQUE | TIMER_OVERRIDE) + if(scanning) update_icon() - return 1 - else - return ..() + +/obj/item/geiger_counter/proc/reset_perceived_danger() + last_perceived_radiation_danger = null + if (scanning) + update_icon() + +/obj/item/geiger_counter/proc/scan(atom/target, mob/user) + if (SEND_SIGNAL(target, COMSIG_GEIGER_COUNTER_SCAN, user, src) & COMSIG_GEIGER_COUNTER_SCAN_SUCCESSFUL) + return + to_chat(user, "[icon2html(src, user)] [isliving(target) ? "Subject" : "Target"] is free of radioactive contamination.") /obj/item/geiger_counter/AltClick(mob/living/user) - if(!istype(user) || !user.canUseTopic(src, BE_CLOSE)) - return ..() + . = ..() + (mob/living/user) if(!scanning) to_chat(usr, "[src] must be on to reset its radiation level!") - return 0 - radiation_count = 0 + return FALSE to_chat(usr, "You flush [src]'s radiation counts, resetting it to normal.") + last_perceived_radiation_danger = null update_icon() - -/obj/item/geiger_counter/should_emag(mob/user) - if(!..()) - return FALSE - if(scanning) - to_chat(user, "Turn off \the [src] before you perform this action!") - return FALSE return TRUE -/obj/item/geiger_counter/on_emag(mob/user) - ..() - to_chat(user, "You override [src]'s radiation storing protocols. It will now generate small doses of radiation, and stored rads are now projected into creatures you scan.") - /obj/item/geiger_counter/cyborg var/mob/listeningTo diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index d702c879b1213..6f972025c2d51 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -216,6 +216,8 @@ GENE SCANNER message += "Analyzing results for [M]:\n\tOverall status: [mob_status]" + SEND_SIGNAL(M, COMSIG_LIVING_HEALTHSCAN, message, advanced, user, mode) + // Damage descriptions if(brute_loss > 10) message += "\t[brute_loss > 50 ? "Severe" : "Minor"] tissue damage detected." @@ -256,10 +258,8 @@ GENE SCANNER if(advanced) message += "\tBrain Activity Level: [(200 - M.getOrganLoss(ORGAN_SLOT_BRAIN))/2]%." - if(M.radiation) - message += "\tSubject is irradiated." - if(advanced) - message += "\tRadiation Level: [M.radiation]%." + if(HAS_TRAIT(M, TRAIT_IRRADIATED)) + render_list += "Subject is irradiated. Supply toxin healing.\n" if(advanced && M.hallucinating()) message += "\tSubject is hallucinating." diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index 9b98b13ad763e..651f0acd9e694 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -95,7 +95,6 @@ effective or pretty fucking useless. if(M) if(intensity >= 5) M.apply_effect(round(intensity/0.075), EFFECT_UNCONSCIOUS) - M.rad_act(intensity*10) else to_chat(user, "The radioactive microlaser is still recharging.") diff --git a/code/game/objects/items/dna_injector.dm b/code/game/objects/items/dna_injector.dm index df204a488435e..b8affd406bb89 100644 --- a/code/game/objects/items/dna_injector.dm +++ b/code/game/objects/items/dna_injector.dm @@ -22,7 +22,6 @@ /obj/item/dnainjector/proc/inject(mob/living/carbon/M, mob/user) if(M.has_dna() && !HAS_TRAIT(M, TRAIT_RADIMMUNE) && !HAS_TRAIT(M, TRAIT_BADDNA)) - M.radiation += rand(20/(damage_coeff ** 2),50/(damage_coeff ** 2)) var/log_msg = "[key_name(user)] injected [key_name(M)] with the [name]" for(var/HM in remove_mutations) M.dna.remove_mutation(HM) @@ -500,7 +499,6 @@ return FALSE if(M.has_dna() && !(HAS_TRAIT(M, TRAIT_BADDNA))) - M.radiation += rand(20/(damage_coeff ** 2),50/(damage_coeff ** 2)) var/log_msg = "[key_name(user)] injected [key_name(M)] with the [name]" var/endtime = world.time+duration for(var/mutation in remove_mutations) @@ -562,7 +560,6 @@ /obj/item/dnainjector/activator/inject(mob/living/carbon/M, mob/user) if(M.has_dna() && !HAS_TRAIT(M, TRAIT_RADIMMUNE) && !HAS_TRAIT(M, TRAIT_BADDNA)) - M.radiation += rand(20/(damage_coeff ** 2),50/(damage_coeff ** 2)) var/log_msg = "[key_name(user)] injected [key_name(M)] with the [name]" for(var/mutation in add_mutations) var/datum/mutation/HM = mutation diff --git a/code/game/objects/items/grenades/syndieminibomb.dm b/code/game/objects/items/grenades/syndieminibomb.dm index 4fb86a51ea9b5..531fa9bef638b 100644 --- a/code/game/objects/items/grenades/syndieminibomb.dm +++ b/code/game/objects/items/grenades/syndieminibomb.dm @@ -53,8 +53,9 @@ icon = 'icons/obj/grenade.dmi' icon_state = "bluefrag" item_state = "flashbang" + var/rad_range = 4 + var/rad_threshold = RAD_EXTREME_INSULATION var/freeze_range = 4 - var/rad_damage = 350 var/stamina_damage = 30 /obj/item/grenade/gluon/prime(mob/living/lanced_by) @@ -63,7 +64,7 @@ return update_mob() playsound(loc, 'sound/effects/empulse.ogg', 50, 1) - radiation_pulse(src, rad_damage) + radiation_pulse(src, max_range = rad_range, threshold = rad_threshold, chance = 100) for(var/turf/open/floor/F in view(freeze_range,loc)) F.MakeSlippery(TURF_WET_PERMAFROST, 6 MINUTES) for(var/mob/living/carbon/L in F) diff --git a/code/game/objects/items/religion.dm b/code/game/objects/items/religion.dm index 46838cd44f9aa..62b626933a41c 100644 --- a/code/game/objects/items/religion.dm +++ b/code/game/objects/items/religion.dm @@ -184,7 +184,7 @@ inspiration_available = FALSE /obj/item/banner/engineering/special_inspiration(mob/living/carbon/human/H) - H.radiation = 0 + qdel(H.GetComponent(/datum/component/irradiated)) /datum/crafting_recipe/engineering_banner name = "Engitopia Banner" diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index fed6580a6761b..bd761697e62ac 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -137,7 +137,6 @@ /obj/item/storage/bag/ore/ComponentInitialize() . = ..() - AddComponent(/datum/component/rad_insulation, 0.05) //please datum mats no more cancer var/datum/component/storage/concrete/stack/STR = GetComponent(/datum/component/storage/concrete/stack) STR.allow_quick_empty = TRUE STR.can_hold = typecacheof(list(/obj/item/stack/ore)) diff --git a/code/game/objects/items/theft_tools.dm b/code/game/objects/items/theft_tools.dm index 4e579bfddd7b9..f8368c4104cfd 100644 --- a/code/game/objects/items/theft_tools.dm +++ b/code/game/objects/items/theft_tools.dm @@ -34,7 +34,7 @@ if(cooldown < world.time - 60) cooldown = world.time flick(pulseicon, src) - radiation_pulse(src, 400, 2) + radiation_pulse(src, max_range = 2, threshold = RAD_EXTREME_INSULATION) /obj/item/nuke_core/suicide_act(mob/living/user) user.visible_message("[user] is rubbing [src] against [user.p_them()]self! It looks like [user.p_theyre()] trying to commit suicide!") @@ -147,7 +147,7 @@ return else to_chat(user, "As it touches \the [src], both \the [src] and \the [W] burst into dust!") - radiation_pulse(user, 100) + radiation_pulse(user, max_range = 2, threshold = RAD_EXTREME_INSULATION, chance = 40) playsound(src, 'sound/effects/supermatter.ogg', 50, 1) qdel(W) qdel(src) @@ -160,7 +160,7 @@ user.visible_message("[victim] reaches out and tries to pick up [src]. [victim.p_their()] body starts to glow and bursts into flames before flashing into dust!",\ "You reach for [src] with your hands. That was dumb.",\ "Everything suddenly goes silent.") - radiation_pulse(user, 500, 2) + radiation_pulse(user, max_range = 2, threshold = RAD_EXTREME_INSULATION, chance = 40) playsound(get_turf(user), 'sound/effects/supermatter.ogg', 50, 1) victim.investigate_log("has been dusted by [src].", INVESTIGATE_DEATHS) victim.dust() @@ -264,7 +264,7 @@ "Everything suddenly goes silent.") user.investigate_log("has been dusted by [src].", INVESTIGATE_DEATHS) user.dust() - radiation_pulse(src, 500, 2) + radiation_pulse(src, max_range = 2, threshold = RAD_EXTREME_INSULATION, chance = 40) playsound(src, 'sound/effects/supermatter.ogg', 50, 1) QDEL_NULL(sliver) update_icon() diff --git a/code/game/objects/items/tools/wirebrush.dm b/code/game/objects/items/tools/wirebrush.dm index 9b05d50cbb5bd..a2a59e4648a17 100644 --- a/code/game/objects/items/tools/wirebrush.dm +++ b/code/game/objects/items/tools/wirebrush.dm @@ -10,49 +10,3 @@ tool_behaviour = TOOL_RUSTSCRAPER toolspeed = 1 -/** - * An advanced form of the wirebrush that trades the safety of the user for instant rust removal. - * If the person using this is unlucky they are going to die painfully. - */ -/obj/item/wirebrush/advanced - name = "advanced wirebrush" - desc = "An advanced wirebrush; uses radiation to almost instantly liquify rust." - icon_state = "wirebrush_adv" - toolspeed = 0.1 - - /// The amount of radiation to give to the user of this tool; regardless of what they did with it. - var/radiation_on_use = 20 - - /// How likely is a critical fail? - var/crit_fail_prob = 1 - - /// The amount of radiation to give to the user if they roll the worst effects. Negative numbers will heal radiation instead! - var/crit_fail_rads = 50 - - /// The amount of damage to take in BOTH Tox and Oxy on critical fail - var/crit_fail_damage = 15 - - /// We only apply damage and force vomit if the user has OVER this many rads - var/crit_fail_rads_threshold = 300 - -/obj/item/wirebrush/advanced/examine(mob/user) - . = ..() - . += "There is a warning label that indicates extended use of [src] may result in loss of hair, yellowing skin, and death." - -/obj/item/wirebrush/advanced/proc/irradiate(mob/living/user) - if(!istype(user)) - return - - if(prob(crit_fail_prob)) - to_chat(user, "You feel a sharp pain as your entire body grows oddly warm.") - user.radiation += crit_fail_rads - if(user.radiation > crit_fail_rads_threshold) // If you ignore the warning signs you get punished - user.emote("vomit") - user.adjustToxLoss(crit_fail_damage, forced=TRUE) - user.adjustOxyLoss(crit_fail_damage, forced=TRUE) - return - - user.radiation += radiation_on_use - - if(prob(25)) - user.emote("cough") diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index b2613c87ab729..b4551394ec20a 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -310,8 +310,8 @@ rad = text2num(result["values"][RAD]),\ fire = text2num(result["values"][FIRE]),\ acid = text2num(result["values"][ACID])) - log_admin("[key_name(usr)] modified the armor on [src] ([type]) to melee: [armor.melee], bullet: [armor.bullet], laser: [armor.laser], energy: [armor.energy], bomb: [armor.bomb], bio: [armor.bio], rad: [armor.rad], fire: [armor.fire], acid: [armor.acid]") - message_admins("[key_name_admin(usr)] modified the armor on [src] ([type]) to melee: [armor.melee], bullet: [armor.bullet], laser: [armor.laser], energy: [armor.energy], bomb: [armor.bomb], bio: [armor.bio], rad: [armor.rad], fire: [armor.fire], acid: [armor.acid]") + log_admin("[key_name(usr)] modified the armor on [src] ([type]) to melee: [armor.melee], bullet: [armor.bullet], laser: [armor.laser], energy: [armor.energy], bomb: [armor.bomb], bio: [armor.bio], fire: [armor.fire], acid: [armor.acid]") + message_admins("[key_name_admin(usr)] modified the armor on [src] ([type]) to melee: [armor.melee], bullet: [armor.bullet], laser: [armor.laser], energy: [armor.energy], bomb: [armor.bomb], bio: [armor.bio], fire: [armor.fire], acid: [armor.acid]") if(href_list[VV_HK_MASS_DEL_TYPE]) if(check_rights(R_DEBUG|R_SERVER)) var/action_type = alert("Strict type ([type]) or type and all subtypes?",,"Strict type","Type and subtypes","Cancel") diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm index deaa9387817f0..cd1f5e8e39810 100644 --- a/code/game/objects/structures/false_walls.dm +++ b/code/game/objects/structures/false_walls.dm @@ -17,8 +17,6 @@ max_integrity = 100 can_be_unanchored = FALSE CanAtmosPass = ATMOS_PASS_DENSITY - rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE - rad_insulation = RAD_MEDIUM_INSULATION var/mineral = /obj/item/stack/sheet/iron var/mineral_amount = 2 var/walltype = /turf/closed/wall @@ -189,7 +187,7 @@ if(!active) if(world.time > last_event+15) active = 1 - radiation_pulse(src, 150) + radiation_pulse(src, max_range = 2, threshold = RAD_LIGHT_INSULATION, chance = URANIUM_IRRADIATION_CHANCE, minimum_exposure_time = URANIUM_RADIATION_MINIMUM_EXPOSURE_TIME) for(var/turf/closed/wall/mineral/uranium/T in (RANGE_TURFS(1,src)-src)) T.radiate() last_event = world.time diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index c1f0df23f3199..6f33b8ff20e1f 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -10,8 +10,6 @@ var/girderpasschance = 20 // percentage chance that a projectile passes through the girder. var/can_displace = TRUE //If the girder can be moved around by wrenching it max_integrity = 200 - rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE - rad_insulation = RAD_VERY_LIGHT_INSULATION /obj/structure/girder/examine(mob/user) . = ..() diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 32c34df0d9fea..cb3b0bb996e1d 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -19,7 +19,6 @@ var/rods_type = /obj/item/stack/rods var/rods_amount = 2 var/rods_broken = TRUE - rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE FASTDMM_PROP(\ pipe_astar_cost = 1\ ) diff --git a/code/game/objects/structures/holosign.dm b/code/game/objects/structures/holosign.dm index afa56ecde9fbf..de43b1a8ca7dd 100644 --- a/code/game/objects/structures/holosign.dm +++ b/code/game/objects/structures/holosign.dm @@ -82,8 +82,6 @@ /obj/structure/holosign/barrier/engineering icon_state = "holosign_engi" - rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE - rad_insulation = RAD_LIGHT_INSULATION /obj/structure/holosign/barrier/atmos name = "holofirelock" @@ -93,8 +91,6 @@ anchored = TRUE CanAtmosPass = ATMOS_PASS_NO alpha = 150 - rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE - rad_insulation = RAD_LIGHT_INSULATION /obj/structure/holosign/barrier/atmos/robust name = "holo blast door" diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index c7f1eacf3dc4d..9f7e762b252e5 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -13,8 +13,6 @@ max_integrity = 200 armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 100, BOMB = 10, BIO = 100, FIRE = 50, ACID = 50, STAMINA = 0, BLEED = 0) CanAtmosPass = ATMOS_PASS_DENSITY - rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE - rad_insulation = RAD_MEDIUM_INSULATION var/door_opened = FALSE //if it's open or not. var/isSwitchingStates = FALSE //don't try to change stats if we're already opening diff --git a/code/game/objects/structures/shower.dm b/code/game/objects/structures/shower.dm index 63fb24346264a..9d512e12e576c 100644 --- a/code/game/objects/structures/shower.dm +++ b/code/game/objects/structures/shower.dm @@ -133,8 +133,7 @@ INVOKE_ASYNC(src, PROC_REF(wash_atom), AM) /obj/machinery/shower/proc/wash_atom(atom/A) - A.wash(CLEAN_RAD | CLEAN_TYPE_WEAK) // Clean radiation non-instantly - A.wash(CLEAN_WASH) + A.wash(CLEAN_RAD | CLEAN_WASH) SEND_SIGNAL(A, COMSIG_ADD_MOOD_EVENT, "shower", /datum/mood_event/nice_shower) reagents.reaction(A, TOUCH, reaction_volume) diff --git a/code/game/objects/structures/signs/_signs.dm b/code/game/objects/structures/signs/_signs.dm index 43d3d6adec9d7..c26461d991570 100644 --- a/code/game/objects/structures/signs/_signs.dm +++ b/code/game/objects/structures/signs/_signs.dm @@ -7,7 +7,6 @@ max_integrity = 100 armor = list(MELEE = 50, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 50, STAMINA = 0, BLEED = 0) var/buildable_sign = 1 //unwrenchable and modifiable - rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE /obj/structure/sign/basic name = "blank sign" diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index badcea1ce0b35..164cc76c37723 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -12,8 +12,6 @@ resistance_flags = ACID_PROOF armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 80, ACID = 100, STAMINA = 0, BLEED = 0) CanAtmosPass = ATMOS_PASS_PROC - rad_insulation = RAD_VERY_LIGHT_INSULATION - rad_flags = RAD_PROTECT_CONTENTS pass_flags_self = PASSTRANSPARENT z_flags = Z_BLOCK_IN_DOWN | Z_BLOCK_IN_UP var/ini_dir = null diff --git a/code/game/turfs/closed/_closed.dm b/code/game/turfs/closed/_closed.dm index 739d65c64f941..1851f7e011fa5 100644 --- a/code/game/turfs/closed/_closed.dm +++ b/code/game/turfs/closed/_closed.dm @@ -3,8 +3,6 @@ opacity = TRUE density = TRUE init_air = FALSE - rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE - rad_insulation = RAD_MEDIUM_INSULATION pass_flags_self = PASSCLOSEDTURF /turf/closed/Initialize(mapload) diff --git a/code/game/turfs/closed/wall/mineral_walls.dm b/code/game/turfs/closed/wall/mineral_walls.dm index 6dcd409cc3e94..c032ac07b5926 100644 --- a/code/game/turfs/closed/wall/mineral_walls.dm +++ b/code/game/turfs/closed/wall/mineral_walls.dm @@ -110,7 +110,7 @@ if(!active) if(world.time > last_event+15) active = 1 - radiation_pulse(src, 40) + radiation_pulse(src, max_range = 3, threshold = RAD_LIGHT_INSULATION, chance = URANIUM_IRRADIATION_CHANCE, minimum_exposure_time = URANIUM_RADIATION_MINIMUM_EXPOSURE_TIME) for(var/turf/closed/wall/mineral/uranium/T in (RANGE_TURFS(1,src)-src)) T.radiate() last_event = world.time diff --git a/code/game/turfs/open/_open.dm b/code/game/turfs/open/_open.dm index 9f33454d776b7..6978a63ddabc5 100644 --- a/code/game/turfs/open/_open.dm +++ b/code/game/turfs/open/_open.dm @@ -278,14 +278,6 @@ /turf/open/proc/ClearWet()//Nuclear option of immediately removing slipperyness from the tile instead of the natural drying over time qdel(GetComponent(/datum/component/wet_floor)) -/turf/open/rad_act(pulse_strength) - . = ..() - if (air.get_moles(GAS_CO2) && air.get_moles(GAS_O2)) - pulse_strength = min(pulse_strength,air.get_moles(GAS_CO2)*1000,air.get_moles(GAS_O2)*2000) //Ensures matter is conserved properly - air.set_moles(GAS_CO2, max(air.get_moles(GAS_CO2)-(pulse_strength/1000),0)) - air.set_moles(GAS_O2, max(air.get_moles(GAS_O2)-(pulse_strength/2000),0)) - air.adjust_moles(GAS_PLUOXIUM, pulse_strength/4000) - /turf/open/proc/break_tile(force, allow_base) LAZYINITLIST(damage_overlays) var/list/options = list() diff --git a/code/game/turfs/open/floor/mineral_floor.dm b/code/game/turfs/open/floor/mineral_floor.dm index 99d133c7ed1f8..d5fdd018e40d0 100644 --- a/code/game/turfs/open/floor/mineral_floor.dm +++ b/code/game/turfs/open/floor/mineral_floor.dm @@ -278,7 +278,7 @@ if(!active) if(world.time > last_event+15) active = 1 - radiation_pulse(src, 10) + radiation_pulse(src, max_range = 1, threshold = RAD_VERY_LIGHT_INSULATION, chance = (URANIUM_IRRADIATION_CHANCE / 3), minimum_exposure_time = URANIUM_RADIATION_MINIMUM_EXPOSURE_TIME) for(var/turf/open/floor/mineral/uranium/T in (RANGE_TURFS(1,src)-src)) T.radiate() last_event = world.time diff --git a/code/modules/atmospherics/gasmixtures/reactions.dm b/code/modules/atmospherics/gasmixtures/reactions.dm index 23e7c52f50a80..16ef2b0df09f8 100644 --- a/code/modules/atmospherics/gasmixtures/reactions.dm +++ b/code/modules/atmospherics/gasmixtures/reactions.dm @@ -143,7 +143,7 @@ /proc/radiation_burn(turf/open/location, energy_released) if(istype(location) && prob(10)) - radiation_pulse(location, energy_released/TRITIUM_BURN_RADIOACTIVITY_FACTOR) + radiation_pulse(location, max_range = energy_released/TRITIUM_BURN_RADIOACTIVITY_FACTOR, threshold = RAD_MEDIUM_INSULATION, chance = (DEFAULT_RADIATION_CHANCE / 3)) /datum/gas_reaction/tritfire/react(datum/gas_mixture/air, datum/holder) var/energy_released = 0 @@ -167,7 +167,7 @@ if(burned_fuel) energy_released += (FIRE_HYDROGEN_ENERGY_RELEASED * burned_fuel) if(location && prob(10) && burned_fuel > TRITIUM_MINIMUM_RADIATION_ENERGY) //woah there let's not crash the server - radiation_pulse(location, energy_released/TRITIUM_BURN_RADIOACTIVITY_FACTOR) + radiation_burn(location, energy_released/TRITIUM_BURN_RADIOACTIVITY_FACTOR) //oxygen+more-or-less hydrogen=H2O air.adjust_moles(GAS_H2O, burned_fuel )// Yogs -- Conservation of Mass @@ -426,7 +426,7 @@ var/standard_energy = 400 * air.get_moles(GAS_PLASMA) * air.return_temperature() //Prevents putting meaningless waste gases to achieve high rads. if(prob(PERCENT(((PARTICLE_CHANCE_CONSTANT)/(reaction_energy-PARTICLE_CHANCE_CONSTANT)) + 1))) //Asymptopically approaches 100% as the energy of the reaction goes up. location.fire_nuclear_particle(customize = TRUE, custompower = standard_energy) - radiation_pulse(location, max(2000 * 3 ** (log(10,standard_energy) - FUSION_RAD_MIDPOINT), 0)) + radiation_burn(location, max(2000 * 3 ** (log(10,standard_energy) - FUSION_RAD_MIDPOINT), 0)) var/new_heat_capacity = air.heat_capacity() if(new_heat_capacity > MINIMUM_HEAT_CAPACITY) air.set_temperature(clamp(thermal_energy/new_heat_capacity, TCMB, INFINITY)) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 723509ef40772..9df32f00946a3 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -333,7 +333,7 @@ compare_to = thing break var/list/readout = list("PROTECTION CLASSES") - if(armor.bio || armor.bomb || armor.bullet || armor.energy || armor.laser || armor.melee || armor.rad || armor.stamina || armor.bleed) + if(armor.bio || armor.bomb || armor.bullet || armor.energy || armor.laser || armor.melee || armor.stamina || armor.bleed) readout += "
ARMOR (I-X)" if(armor.bio || compare_to?.armor?.bio) readout += "
TOXIN [armor_to_protection_class(armor.bio, compare_to?.armor?.bio)]" @@ -347,8 +347,6 @@ readout += "
LASER [armor_to_protection_class(armor.laser, compare_to?.armor?.laser)]" if(armor.melee || compare_to?.armor?.melee) readout += "
MELEE [armor_to_protection_class(armor.melee, compare_to?.armor?.melee)]" - if(armor.rad || compare_to?.armor?.rad) - readout += "
RADIATION [armor_to_protection_class(armor.rad, compare_to?.armor?.rad)]" if(armor.stamina || compare_to?.armor?.stamina) readout += "
STAMINA [armor_to_protection_class(armor.stamina, compare_to?.armor?.stamina)]" if(armor.bleed || compare_to?.armor?.bleed) diff --git a/code/modules/clothing/glasses/engine_goggles.dm b/code/modules/clothing/glasses/engine_goggles.dm index 35f4c2a09b928..f9e8a078c43c2 100644 --- a/code/modules/clothing/glasses/engine_goggles.dm +++ b/code/modules/clothing/glasses/engine_goggles.dm @@ -3,7 +3,6 @@ #define MODE_NONE "" #define MODE_MESON "meson" #define MODE_TRAY "t-ray" -#define MODE_RAD "radiation" #define MODE_SHUTTLE "shuttle" /obj/item/clothing/glasses/meson/engine @@ -18,7 +17,7 @@ lighting_alpha = null invis_view = SEE_INVISIBLE_LIVING - var/list/modes = list(MODE_NONE = MODE_MESON, MODE_MESON = MODE_TRAY, MODE_TRAY = MODE_RAD, MODE_RAD = MODE_NONE) + var/list/modes = list(MODE_NONE = MODE_MESON, MODE_MESON = MODE_TRAY, MODE_TRAY = MODE_NONE) var/mode = MODE_NONE var/range = 1 @@ -66,35 +65,9 @@ switch(mode) if(MODE_TRAY) t_ray_scan(user, 16, range) - if(MODE_RAD) - show_rads() if(MODE_SHUTTLE) show_shuttle() -/obj/item/clothing/glasses/meson/engine/proc/show_rads() - var/mob/living/carbon/human/user = loc - var/list/rad_places = list() - for(var/datum/component/radioactive/thing in SSradiation.processing) - var/atom/owner = thing.parent - var/turf/place = get_turf(owner) - if(rad_places[place]) - rad_places[place] += thing.strength - else - rad_places[place] = thing.strength - - for(var/i in rad_places) - var/turf/place = i - if(get_dist(user, place) >= range*5) //Rads are easier to see than wires under the floor - continue - var/strength = round(rad_places[i] / 1000, 0.1) - var/image/pic = image(loc = place) - var/mutable_appearance/MA = new() - MA.maptext = MAPTEXT("[strength]k") - MA.color = "#04e66d" - MA.plane = TEXT_EFFECT_PLANE - pic.appearance = MA - flick_overlay(pic, list(user.client), 10) - /obj/item/clothing/glasses/meson/engine/proc/show_shuttle() var/mob/living/carbon/human/user = loc var/obj/docking_port/mobile/port = SSshuttle.get_containing_shuttle(user) @@ -145,5 +118,4 @@ #undef MODE_NONE #undef MODE_MESON #undef MODE_TRAY -#undef MODE_RAD #undef MODE_SHUTTLE diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index 3d4a536936264..55864ad770af7 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -137,7 +137,6 @@ strip_delay = 60 equip_delay_other = 60 flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH - rad_flags = RAD_PROTECT_CONTENTS /obj/item/clothing/suit/utility/radiation name = "radiation suit" @@ -155,7 +154,6 @@ strip_delay = 60 equip_delay_other = 60 flags_inv = HIDEJUMPSUIT - rad_flags = RAD_PROTECT_CONTENTS /obj/item/clothing/suit/utility/radiation/ComponentInitialize() . = ..() diff --git a/code/modules/mining/satchel_ore_box.dm b/code/modules/mining/satchel_ore_box.dm index 1a74da52873b1..9d3636c7ce74d 100644 --- a/code/modules/mining/satchel_ore_box.dm +++ b/code/modules/mining/satchel_ore_box.dm @@ -26,10 +26,6 @@ else return ..() -/obj/structure/ore_box/ComponentInitialize() - . = ..() - AddComponent(/datum/component/rad_insulation, 0.01) //please datum mats no more cancer - /obj/structure/ore_box/crowbar_act(mob/living/user, obj/item/I) if(I.use_tool(src, user, 50, volume=50)) user.visible_message("[user] pries \the [src] apart.", diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 090928d713575..ae1b2bbb5a53d 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -549,7 +549,6 @@ if(prob(current_size * 5) && hand.w_class >= ((11-current_size)/2) && dropItemToGround(hand)) step_towards(hand, src) to_chat(src, "\The [S] pulls \the [hand] from your grip!") - rad_act(current_size * 3) /mob/living/carbon/human/proc/do_cpr(mob/living/carbon/C) CHECK_DNA_AND_SPECIES(C) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 71bb4a23a6177..faec4f53c0de8 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -72,10 +72,6 @@ SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "brain_damage") return ..() -/mob/living/carbon/human/handle_mutations_and_radiation() - if(!dna || !dna.species.handle_mutations_and_radiation(src)) - ..() - /mob/living/carbon/human/breathe() if(!dna.species.breathe(src)) ..() diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index c87e661c05e05..e9eb55093bc08 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -12,7 +12,6 @@ possible_a_intents = list(INTENT_HELP, INTENT_HARM) mob_biotypes = list(MOB_ROBOTIC) flags_1 = PREVENT_CONTENTS_EXPLOSION_1 - rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE deathsound = 'sound/voice/borg_deathsound.ogg' speech_span = SPAN_ROBOT var/datum/ai_laws/laws = null//Now... THEY ALL CAN ALL HAVE LAWS diff --git a/code/modules/modular_computers/file_system/programs/phys_scanner.dm b/code/modules/modular_computers/file_system/programs/phys_scanner.dm index d98c8d71917f8..4305332478cc5 100644 --- a/code/modules/modular_computers/file_system/programs/phys_scanner.dm +++ b/code/modules/modular_computers/file_system/programs/phys_scanner.dm @@ -24,8 +24,6 @@ reads += "Reagent" if(mode_holder & DISK_MED) reads += "Health" - if(mode_holder & DISK_POWER) - reads += "Radiation" if(mode_holder & DISK_ATMOS) reads += "Gas" if(!length(reads)) @@ -64,16 +62,6 @@ user.visible_message("[user] analyzes [carbon]'s vitals.", "You analyze [carbon]'s vitals.") last_record = healthscan(user, carbon, 1, to_chat = FALSE) return FALSE - if(DISK_POWER) - var/mob/living/carbon/carbon = target - if(istype(carbon)) - user.visible_message("[user] analyzes [carbon]'s radiation levels.", "You analyze [carbon]'s radiation levels.") - last_record = "Analyzing Results for [carbon]:\n" - if(carbon.radiation) - last_record += "Radiation Level: [carbon.radiation]%" - else - last_record += "No radiation detected." - return FALSE return ..() /datum/computer_file/program/phys_scanner/attack_obj(obj/target, mob/living/user) @@ -98,8 +86,6 @@ current_mode = DISK_CHEM if("Health") current_mode = DISK_MED - if("Radiation") - current_mode = DISK_POWER if("Gas") current_mode = DISK_ATMOS diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index c38ccc49a781d..2662845dc91bc 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -56,7 +56,7 @@ M.reagents.remove_all_type(/datum/reagent/toxin, 5*REM, 0, 1) M.setCloneLoss(0, 0) M.setOxyLoss(0, 0) - M.radiation = 0 + qdel(M.GetComponent(/datum/component/irradiated)) M.heal_bodypart_damage(5,5) M.adjustToxLoss(-5, 0, TRUE) M.hallucination = 0 diff --git a/code/modules/recycling/disposal/pipe.dm b/code/modules/recycling/disposal/pipe.dm index 24a9bfe49b3cf..581bf912c5915 100644 --- a/code/modules/recycling/disposal/pipe.dm +++ b/code/modules/recycling/disposal/pipe.dm @@ -11,7 +11,6 @@ max_integrity = 200 armor = list(MELEE = 25, BULLET = 10, LASER = 10, ENERGY = 100, BOMB = 0, BIO = 100, FIRE = 90, ACID = 30, STAMINA = 0, BLEED = 0) layer = DISPOSAL_PIPE_LAYER // slightly lower than wires and other pipes - rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE var/dpdir = NONE // bitmask of pipe directions var/initialize_dirs = NONE // bitflags of pipe directions added on init, see \code\_DEFINES\pipe_construction.dm var/flip_type // If set, the pipe is flippable and becomes this type when flipped From 4a79a65c43741fb4c9c698603056318a3adc798e Mon Sep 17 00:00:00 2001 From: XeonMations Date: Fri, 6 Sep 2024 06:55:59 +0300 Subject: [PATCH 04/42] hhhhh --- .../objects/items/devices/geiger_counter.dm | 28 ------- code/modules/antagonists/revenant/revenant.dm | 3 - .../mob/living/carbon/human/species.dm | 25 ++++--- .../carbon/human/species_types/golems.dm | 2 +- code/modules/mob/living/carbon/life.dm | 71 +++++++++--------- code/modules/mob/living/carbon/monkey/life.dm | 31 -------- code/modules/mob/living/damage_procs.dm | 6 +- code/modules/mob/living/life.dm | 5 +- code/modules/mob/living/living.dm | 16 ---- code/modules/mob/living/living_defense.dm | 2 - code/modules/mob/living/living_defines.dm | 1 - .../mob/living/silicon/robot/robot_modules.dm | 1 - code/modules/power/gravitygenerator.dm | 75 +++++++++++-------- code/modules/power/rtg.dm | 5 -- code/modules/projectiles/projectile.dm | 2 +- 15 files changed, 96 insertions(+), 177 deletions(-) diff --git a/code/game/objects/items/devices/geiger_counter.dm b/code/game/objects/items/devices/geiger_counter.dm index 31a3580e0d093..3751e54295a09 100644 --- a/code/game/objects/items/devices/geiger_counter.dm +++ b/code/game/objects/items/devices/geiger_counter.dm @@ -107,34 +107,6 @@ update_icon() return TRUE -/obj/item/geiger_counter/cyborg - var/mob/listeningTo - -/obj/item/geiger_counter/cyborg/cyborg_unequip(mob/user) - if(!scanning) - return - scanning = FALSE - update_icon() - -/obj/item/geiger_counter/cyborg/equipped(mob/user) - . = ..() - if(listeningTo == user) - return - if(listeningTo) - UnregisterSignal(listeningTo, COMSIG_ATOM_RAD_ACT) - RegisterSignal(user, COMSIG_ATOM_RAD_ACT, PROC_REF(redirect_rad_act)) - listeningTo = user - -/obj/item/geiger_counter/cyborg/proc/redirect_rad_act(datum/source, amount) - SIGNAL_HANDLER - - rad_act(amount) - -/obj/item/geiger_counter/cyborg/dropped() - ..() - if(listeningTo) - UnregisterSignal(listeningTo, COMSIG_ATOM_RAD_ACT) - #undef RAD_LEVEL_NORMAL #undef RAD_LEVEL_MODERATE #undef RAD_LEVEL_HIGH diff --git a/code/modules/antagonists/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm index b6e68b0a9167e..3939d23832130 100644 --- a/code/modules/antagonists/revenant/revenant.dm +++ b/code/modules/antagonists/revenant/revenant.dm @@ -227,9 +227,6 @@ return BULLET_ACT_FORCE_PIERCE return ..() -/mob/living/simple_animal/revenant/rad_act(amount) - return - //damage, gibbing, and dying /mob/living/simple_animal/revenant/attackby(obj/item/W, mob/living/user, params) . = ..() diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 923ccb3a61634..bc3b30905b78c 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1490,31 +1490,32 @@ GLOBAL_LIST_EMPTY(features_by_species) /datum/species/proc/update_health_hud(mob/living/carbon/human/H) return 0 -/datum/species/proc/handle_mutations_and_radiation(mob/living/carbon/human/H) - . = FALSE - var/radiation = H.radiation - - if(HAS_TRAIT(H, TRAIT_RADIMMUNE)) - radiation = 0 - return TRUE - - if(radiation > RAD_MOB_KNOCKDOWN && prob(RAD_MOB_KNOCKDOWN_PROB)) +/** + * Species based handling for irradiation + * + * Arguments: + * - [source][/mob/living/carbon/human]: The mob requesting handling + * - time_since_irradiated: The amount of time since the mob was first irradiated + * - delta_time: The amount of time that has passed since the last tick + */ +/datum/species/proc/handle_radiation(mob/living/carbon/human/source, time_since_irradiated, delta_time) + if(time_since_irradiated > RAD_MOB_KNOCKDOWN && DT_PROB(RAD_MOB_KNOCKDOWN_PROB, delta_time)) if(!H.IsParalyzed()) H.emote("collapse") H.Paralyze(RAD_MOB_KNOCKDOWN_AMOUNT) to_chat(H, "You feel weak.") - if(radiation > RAD_MOB_VOMIT && prob(RAD_MOB_VOMIT_PROB)) + if(time_since_irradiated > RAD_MOB_VOMIT && prob(RAD_MOB_VOMIT_PROB)) H.vomit(10, TRUE) - if(radiation > RAD_MOB_MUTATE) + if(time_since_irradiated > RAD_MOB_MUTATE) if(prob(1)) to_chat(H, "You mutate!") H.easy_randmut(NEGATIVE+MINOR_NEGATIVE) H.emote("gasp") H.domutcheck() - if(radiation > RAD_MOB_HAIRLOSS) + if(time_since_irradiated > RAD_MOB_HAIRLOSS) if(prob(15) && !(H.hair_style == "Bald") && (HAIR in species_traits) && !HAS_TRAIT(H, TRAIT_NOHAIRLOSS)) to_chat(H, "Your hair starts to fall out in clumps.") addtimer(CALLBACK(src, PROC_REF(go_bald), H), 50) diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm index 21bcb156c3068..da26f5a5a6b18 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -373,7 +373,7 @@ if(!active) if(world.time > last_event+30) active = 1 - radiation_pulse(H, 50) + radiation_pulse(H, max_range = 1, threshold = RAD_VERY_LIGHT_INSULATION, chance = 3) last_event = world.time active = null ..() diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 7ad738ff2a83a..2d0eb59211d37 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -257,11 +257,6 @@ else if(bz_partialpressure > 0.01) hallucination += 5 - //TRITIUM - if(breath.get_moles(GAS_TRITIUM)) - var/tritium_partialpressure = (breath.get_moles(GAS_TRITIUM)/breath.total_moles())*breath_pressure - radiation += tritium_partialpressure/10 - //NITRYL if(breath.get_moles(GAS_NITRYL)) var/nitryl_partialpressure = (breath.get_moles(GAS_NITRYL)/breath.total_moles())*breath_pressure @@ -333,38 +328,42 @@ if(stat != DEAD || D.process_dead) D.stage_act() -/mob/living/carbon/handle_mutations_and_radiation() - if(dna && dna.temporary_mutations.len) - for(var/mut in dna.temporary_mutations) - if(dna.temporary_mutations[mut] < world.time) - if(mut == UI_CHANGED) - if(dna.previous["UI"]) - dna.uni_identity = merge_text(dna.uni_identity,dna.previous["UI"]) - updateappearance(mutations_overlay_update=1) - dna.previous.Remove("UI") - dna.temporary_mutations.Remove(mut) - continue - if(mut == UE_CHANGED) - if(dna.previous["name"]) - real_name = dna.previous["name"] - name = real_name - dna.previous.Remove("name") - if(dna.previous["UE"]) - dna.unique_enzymes = dna.previous["UE"] - dna.previous.Remove("UE") - if(dna.previous["blood_type"]) - dna.blood_type = dna.previous["blood_type"] - dna.previous.Remove("blood_type") - dna.temporary_mutations.Remove(mut) - continue - for(var/datum/mutation/HM as() in dna.mutations) - if(HM?.timed) - dna.remove_mutation(HM.type) - - radiation -= min(radiation, RAD_LOSS_PER_TICK) - if(radiation > RAD_MOB_SAFE) - adjustToxLoss(log(radiation-RAD_MOB_SAFE)*RAD_TOX_COEFFICIENT) +/mob/living/carbon/handle_mutations(time_since_irradiated, delta_time, times_fired) + if(!dna?.temporary_mutations.len) + return + for(var/mut in dna.temporary_mutations) + if(dna.temporary_mutations[mut] < world.time) + if(mut == UI_CHANGED) + if(dna.previous["UI"]) + dna.unique_identity = merge_text(dna.unique_identity,dna.previous["UI"]) + updateappearance(mutations_overlay_update=1) + dna.previous.Remove("UI") + dna.temporary_mutations.Remove(mut) + continue + if(mut == UF_CHANGED) + if(dna.previous["UF"]) + dna.unique_features = merge_text(dna.unique_features,dna.previous["UF"]) + updateappearance(mutcolor_update=1, mutations_overlay_update=1) + dna.previous.Remove("UF") + dna.temporary_mutations.Remove(mut) + continue + if(mut == UE_CHANGED) + if(dna.previous["name"]) + real_name = dna.previous["name"] + name = real_name + dna.previous.Remove("name") + if(dna.previous["UE"]) + dna.unique_enzymes = dna.previous["UE"] + dna.previous.Remove("UE") + if(dna.previous["blood_type"]) + dna.blood_type = dna.previous["blood_type"] + dna.previous.Remove("blood_type") + dna.temporary_mutations.Remove(mut) + continue + for(var/datum/mutation/human/HM in dna.mutations) + if(HM?.timed) + dna.remove_mutation(HM.type) /* Alcohol Poisoning Chart diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 752f12d8cfb1c..999662a592c71 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -1,36 +1,5 @@ /mob/living/carbon/monkey -/mob/living/carbon/monkey/handle_mutations_and_radiation() - if(radiation) - if(radiation > RAD_MOB_KNOCKDOWN && prob(RAD_MOB_KNOCKDOWN_PROB)) - if(!IsParalyzed()) - emote("collapse") - Paralyze(RAD_MOB_KNOCKDOWN_AMOUNT) - to_chat(src, "You feel weak.") - if(radiation > RAD_MOB_MUTATE) - if(prob(2)) - to_chat(src, "You mutate!") - easy_randmut(NEGATIVE+MINOR_NEGATIVE) - emote("gasp") - domutcheck() - - if(radiation > RAD_MOB_MUTATE * 1.5) - switch(rand(1, 3)) - if(1) - gorillize() - if(2) - humanize(TR_KEEPITEMS | TR_KEEPVIRUS | TR_DEFAULTMSG | TR_KEEPDAMAGE | TR_KEEPORGANS) - if(3) - var/obj/item/bodypart/BP = pick(bodyparts) - if(BP.body_part != HEAD && BP.body_part != CHEST) - if(BP.dismemberable) - BP.dismember() - take_bodypart_damage(100, 0, 0) - return - if(radiation > RAD_MOB_VOMIT && prob(RAD_MOB_VOMIT_PROB)) - vomit(10, TRUE) - return ..() - /mob/living/carbon/monkey/handle_breath_temperature(datum/gas_mixture/breath) if(abs(get_body_temp_normal() - breath.return_temperature()) > 50) switch(breath.return_temperature()) diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 33b6207fb00a7..9f412fe11f272 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -96,8 +96,6 @@ Immobilize(effect * hit_percent) if(EFFECT_UNCONSCIOUS) Unconscious(effect * hit_percent) - if(EFFECT_IRRADIATE) - radiation += max(effect * hit_percent, 0) if(EFFECT_SLUR) slurring = max(slurring,(effect * hit_percent)) if(EFFECT_STUTTER) @@ -113,7 +111,7 @@ return 1 -/mob/living/proc/apply_effects(stun = 0, knockdown = 0, unconscious = 0, irradiate = 0, slur = 0, stutter = 0, eyeblur = 0, drowsy = 0, blocked = FALSE, stamina = 0, jitter = 0, paralyze = 0, immobilize = 0) +/mob/living/proc/apply_effects(stun = 0, knockdown = 0, unconscious = 0, slur = 0, stutter = 0, eyeblur = 0, drowsy = 0, blocked = FALSE, stamina = 0, jitter = 0, paralyze = 0, immobilize = 0) if(blocked >= 100) return BULLET_ACT_BLOCK if(stun) @@ -126,8 +124,6 @@ apply_effect(paralyze, EFFECT_PARALYZE, blocked) if(immobilize) apply_effect(immobilize, EFFECT_IMMOBILIZE, blocked) - if(irradiate) - apply_effect(irradiate, EFFECT_IRRADIATE, blocked) if(slur) apply_effect(slur, EFFECT_SLUR, blocked) if(stutter) diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index b98d460e29a1f..aef47ba35afac 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -16,7 +16,7 @@ if(stat != DEAD) //Mutations and radiation - handle_mutations_and_radiation() + handle_mutations(delta_time, times_fired) if(stat != DEAD) //Breathing, if applicable @@ -62,8 +62,7 @@ SEND_SIGNAL(src, COMSIG_LIVING_HANDLE_BREATHING, SSMOBS_DT, times_fired) //Bee edit: Holy shit I do not want to port delta time Life() refactor just for my mothroach behavior to be better return -/mob/living/proc/handle_mutations_and_radiation() - radiation = 0 //so radiation don't accumulate in simple animals +/mob/living/proc/handle_mutations(delta_time, times_fired) return /mob/living/proc/handle_diseases() diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index cf15ae9ef633e..fc110f00be59e 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -706,7 +706,6 @@ SetImmobilized(0, FALSE) SetParalyzed(0, FALSE) SetSleeping(0, FALSE) - radiation = 0 set_nutrition(NUTRITION_LEVEL_FED + 50) bodytemperature = get_body_temp_normal(apply_change=FALSE) set_blindness(0) @@ -1150,21 +1149,6 @@ for(var/holopara in holoparasites()) to_chat(holopara, "Your summoner has changed form!") -/mob/living/rad_act(amount) - . = ..() - - if(!amount || (amount < RAD_MOB_SKIN_PROTECTION) || HAS_TRAIT(src, TRAIT_RADIMMUNE)) - return - - amount -= RAD_BACKGROUND_RADIATION // This will always be at least 1 because of how skin protection is calculated - - var/blocked = getarmor(null, RAD) - - if(amount > RAD_BURN_THRESHOLD) - apply_damage((amount-RAD_BURN_THRESHOLD)/RAD_BURN_THRESHOLD, BURN, null, blocked) - - apply_effect((amount*RAD_MOB_COEFFICIENT)/max(1, (radiation**2)*RAD_OVERDOSE_REDUCTION), EFFECT_IRRADIATE, blocked) - /mob/living/anti_magic_check(magic = TRUE, holy = FALSE, major = TRUE, self = FALSE) . = ..() if(.) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 3e02d5a4e4875..995738327d0e3 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -349,8 +349,6 @@ return ..() -//Looking for irradiate()? It's been moved to radiation.dm under the rad_act() for mobs. - /mob/living/acid_act(acidpwr, acid_volume) take_bodypart_damage(acidpwr * min(1, acid_volume * 0.1)) return 1 diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index b8c67e9328cfe..aed77dca1ced9 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -134,7 +134,6 @@ var/can_be_held = FALSE //whether this can be picked up and held. var/worn_slot_flags = NONE //if it can be held, can it be equipped to any slots? (think pAI's on head) - var/radiation = 0 //If the mob is irradiated. var/ventcrawl_layer = PIPING_LAYER_DEFAULT var/losebreath = 0 diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 7030ffef05079..c3c9c014f0bf6 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -316,7 +316,6 @@ /obj/item/multitool/cyborg, /obj/item/t_scanner, /obj/item/analyzer, - /obj/item/geiger_counter/cyborg, /obj/item/assembly/signaler/cyborg, /obj/item/areaeditor/blueprints/cyborg, /obj/item/electroadaptive_pseudocircuit, diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index 3efa5dc72c48b..d24467970232d 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -26,6 +26,9 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne move_resist = INFINITY use_power = NO_POWER_USE resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + + var/datum/proximity_monitor/advanced/gravity/gravity_field + var/sprite_number = 0 var/ztrait //Set to a valid ZTRAIT define to have the gravgen provide gravity to all of the zlevels with said trait. Ex: ZTRAIT_STATION @@ -139,6 +142,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne O.main_part = null if(!QDESTROYING(O)) qdel(O) + QDEL_NULL(gravity_field) return ..() /obj/machinery/gravity_generator/main/proc/setup_parts() @@ -173,7 +177,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne charge_count = 0 breaker = 0 set_power() - set_state(0) + disable() investigate_log("has broken down.", INVESTIGATE_GRAVITY) /obj/machinery/gravity_generator/main/set_fix() @@ -290,30 +294,44 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne investigate_log("is now [charging_state == POWER_UP ? "charging" : "discharging"].", INVESTIGATE_GRAVITY) update_appearance() -// Set the state of the gravity. -/obj/machinery/gravity_generator/main/proc/set_state(new_state) +/obj/machinery/gravity_generator/main/proc/enable() charging_state = POWER_IDLE - on = new_state - use_power = on ? ACTIVE_POWER_USE : IDLE_POWER_USE - // Sound the alert if gravity was just enabled or disabled. - var/alert = FALSE - if(SSticker.IsRoundInProgress()) - if(on) // If we turned on and the game is live. - if(gravity_in_level() == 0) - alert = 1 - investigate_log("was brought online and is now producing gravity for this level.", INVESTIGATE_GRAVITY) - message_admins("The gravity generator was brought online [ADMIN_VERBOSEJMP(src)]") - else - if(gravity_in_level() == 1) - alert = 1 - investigate_log("was brought offline and there is now no gravity for this level.", INVESTIGATE_GRAVITY) - message_admins("The gravity generator was brought offline with no backup generator. [ADMIN_VERBOSEJMP(src)]") + on = TRUE + update_use_power(ACTIVE_POWER_USE) + + if (!SSticker.IsRoundInProgress()) + return + + soundloop.start() + if (!gravity_in_level()) + investigate_log("was brought online and is now producing gravity for this level.", INVESTIGATE_GRAVITY) + message_admins("The gravity generator was brought online [ADMIN_VERBOSEJMP(src)]") + shake_everyone() + gravity_field = make_field(/datum/proximity_monitor/advanced/gravity, list("current_range" = 2, "host" = src, "gravity_value" = 6)) + + complete_state_update() + +/obj/machinery/gravity_generator/main/proc/disable() + charging_state = POWER_IDLE + on = FALSE + update_use_power(IDLE_POWER_USE) + + if (!SSticker.IsRoundInProgress()) + return + + soundloop.stop() + if (gravity_in_level()) + investigate_log("was brought offline and there is now no gravity for this level.", INVESTIGATE_GRAVITY) + message_admins("The gravity generator was brought offline with no backup generator. [ADMIN_VERBOSEJMP(src)]") + shake_everyone() + QDEL_NULL(gravity_field) + complete_state_update() + +/obj/machinery/gravity_generator/main/proc/complete_state_update() update_appearance() update_list() - ui_update() - if(alert) - shake_everyone() + updateUsrDialog() // Charge/Discharge and turn on/off gravity when you reach 0/100 percent. // Also emit radiation and handle the overlays. @@ -322,9 +340,9 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne return if(charging_state != POWER_IDLE) if(charging_state == POWER_UP && charge_count >= 100) - set_state(1) + enable() else if(charging_state == POWER_DOWN && charge_count <= 0) - set_state(0) + disable() else if(charging_state == POWER_UP) charge_count += 2 @@ -334,9 +352,6 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne if(charge_count % 4 == 0 && prob(75)) // Let them know it is charging/discharging. playsound(src.loc, 'sound/effects/empulse.ogg', 100, 1) - if(prob(25)) // To help stop "Your clothes feel warm." spam. - pulse_radiation() - var/overlay_state = null switch(charge_count) if(0 to 20) @@ -357,10 +372,6 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne middle.add_overlay(overlay_state) current_overlay = overlay_state - -/obj/machinery/gravity_generator/main/proc/pulse_radiation() - radiation_pulse(src, 200) - // Shake everyone on the z level to let them know that gravity was enagaged/disenagaged. /obj/machinery/gravity_generator/main/proc/shake_everyone() var/turf/T = get_turf(src) @@ -411,8 +422,8 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne name = "paper- 'Generate your own gravity!'" default_raw_text = {"

Gravity Generator Instructions For Dummies

Surprisingly, gravity isn't that hard to make! All you have to do is inject deadly radioactive minerals into a ball of - energy and you have yourself gravity! You can turn the machine on or off when required but you must remember that the generator - will EMIT RADIATION when charging or discharging, you can tell it is charging or discharging by the noise it makes, so please WEAR PROTECTIVE CLOTHING.

+ energy and you have yourself gravity! You can turn the machine on or off when required. + The generator produces a very harmful amount of gravity when enabled, so don't stay close for too long.


It blew up!

Don't panic! The gravity generator was designed to be easily repaired. If, somehow, the sturdy framework did not survive then diff --git a/code/modules/power/rtg.dm b/code/modules/power/rtg.dm index efae8a5f0f977..4f27887fd4bdb 100644 --- a/code/modules/power/rtg.dm +++ b/code/modules/power/rtg.dm @@ -17,8 +17,6 @@ var/power_gen = 1000 // Enough to power a single APC. 4000 output with T4 capacitor. - var/irradiate = TRUE // RTGs irradiate surroundings, but only when panel is open. - /obj/machinery/power/rtg/Initialize(mapload) . = ..() connect_to_network() @@ -26,8 +24,6 @@ /obj/machinery/power/rtg/process() ..() add_avail(power_gen) - if(panel_open && irradiate) - radiation_pulse(src, 60) /obj/machinery/power/rtg/RefreshParts() var/part_level = 0 @@ -63,7 +59,6 @@ desc = "An alien power source that produces energy seemingly out of nowhere." circuit = /obj/item/circuitboard/machine/abductor/core power_gen = 20000 // 280 000 at T1, 400 000 at T4. Starts at T4. - irradiate = FALSE // Green energy! can_buckle = FALSE pixel_y = 7 var/going_kaboom = FALSE // Is it about to explode? diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 42b7bc6dfc2b9..f1ee75c92e7c0 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -288,7 +288,7 @@ else L.log_message("has been shot by [firer] with [src]", LOG_ATTACK, color="orange") - return L.apply_effects(stun, knockdown, unconscious, irradiate, slur, stutter, eyeblur, drowsy, blocked, stamina, jitter, paralyze, immobilize) + return L.apply_effects(stun, knockdown, unconscious, slur, stutter, eyeblur, drowsy, blocked, stamina, jitter, paralyze, immobilize) /obj/projectile/proc/vol_by_damage() if(src.damage) From 56820fbd3b6d9d16126851e7a58c38ba8615a1f1 Mon Sep 17 00:00:00 2001 From: XeonMations Date: Fri, 6 Sep 2024 07:17:07 +0300 Subject: [PATCH 05/42] engineering is going to fucking kill me for this --- beestation.dme | 3 +- .../carbon/human/species_types/podpeople.dm | 2 +- code/modules/power/singularity/collector.dm | 251 ------------------ code/modules/power/supermatter/supermatter.dm | 20 +- .../supermatter/supermatter_delamination.dm | 4 +- .../supermatter/supermatter_radiation.dm | 57 ++++ .../projectiles/guns/energy/energy_gun.dm | 4 +- code/modules/projectiles/projectile.dm | 1 - code/modules/projectiles/projectile/beams.dm | 1 - .../projectiles/projectile/energy/misc.dm | 12 +- .../projectile/energy/nuclear_particle.dm | 7 +- .../chemistry/reagents/alcohol_reagents.dm | 13 +- .../chemistry/reagents/medicine_reagents.dm | 26 +- code/modules/recycling/disposal/bin.dm | 1 - code/modules/recycling/disposal/holder.dm | 1 - code/modules/recycling/disposal/outlet.dm | 1 - 16 files changed, 119 insertions(+), 285 deletions(-) delete mode 100644 code/modules/power/singularity/collector.dm create mode 100644 code/modules/power/supermatter/supermatter_radiation.dm diff --git a/beestation.dme b/beestation.dme index 37800fc8047a9..7829a9ad6717d 100644 --- a/beestation.dme +++ b/beestation.dme @@ -547,7 +547,6 @@ #include "code\datums\position_point_vector.dm" #include "code\datums\profiling.dm" #include "code\datums\progressbar.dm" -#include "code\datums\radiation_wave.dm" #include "code\datums\recipe.dm" #include "code\datums\ref.dm" #include "code\datums\ruins.dm" @@ -3518,7 +3517,6 @@ #include "code\modules\power\lighting\light_wallframes.dm" #include "code\modules\power\singularity\anomaly.dm" #include "code\modules\power\singularity\boh_tear.dm" -#include "code\modules\power\singularity\collector.dm" #include "code\modules\power\singularity\containment_field.dm" #include "code\modules\power\singularity\emitter.dm" #include "code\modules\power\singularity\field_generator.dm" @@ -3529,6 +3527,7 @@ #include "code\modules\power\singularity\particle_accelerator\particle_emitter.dm" #include "code\modules\power\supermatter\supermatter.dm" #include "code\modules\power\supermatter\supermatter_delamination.dm" +#include "code\modules\power\supermatter\supermatter_radiation.dm" #include "code\modules\power\tesla\coil.dm" #include "code\modules\power\tesla\energy_ball.dm" #include "code\modules\power\tesla\generator.dm" diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm index c0d55d51c3204..8e43ad7054c3b 100644 --- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm @@ -54,7 +54,7 @@ switch(P.type) if(/obj/projectile/energy/floramut) if(prob(15)) - H.rad_act(rand(30,80)) + H.adjustToxLoss(rand(3, 6)) H.Paralyze(100) H.visible_message("[H] writhes in pain as [H.p_their()] vacuoles boil.", "You writhe in pain as your vacuoles boil!", "You hear the crunching of leaves.") if(prob(80)) diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm deleted file mode 100644 index 572611781c3dd..0000000000000 --- a/code/modules/power/singularity/collector.dm +++ /dev/null @@ -1,251 +0,0 @@ -// stored_energy += (pulse_strength-RAD_COLLECTOR_EFFICIENCY)*RAD_COLLECTOR_COEFFICIENT -#define RAD_COLLECTOR_EFFICIENCY 80 // radiation needs to be over this amount to get power -#define RAD_COLLECTOR_COEFFICIENT 100 -#define RAD_COLLECTOR_STORED_OUT 0.04 // (this*100)% of stored power outputted per tick. Doesn't actualy change output total, lower numbers just means collectors output for longer in absence of a source -#define RAD_COLLECTOR_MINING_CONVERSION_RATE 0.0001 //This is gonna need a lot of tweaking to get right. This is the number used to calculate the conversion of watts to research points per process() -#define RAD_COLLECTOR_OUTPUT min(stored_energy, (stored_energy*RAD_COLLECTOR_STORED_OUT)+1000) //Produces at least 1000 watts if it has more than that stored - - -/obj/machinery/power/rad_collector - name = "Radiation Collector Array" - desc = "A device which uses Hawking Radiation and plasma to produce power." - icon = 'icons/obj/singularity.dmi' - icon_state = "ca" - anchored = FALSE - density = TRUE - req_access = list(ACCESS_ENGINE_EQUIP) -// use_power = NO_POWER_USE - max_integrity = 350 - integrity_failure = 0.2 - circuit = /obj/item/circuitboard/machine/rad_collector - rad_insulation = RAD_EXTREME_INSULATION - var/obj/item/tank/internals/plasma/loaded_tank = null - var/stored_energy = 0 - var/active = 0 - var/locked = FALSE - var/drainratio = 0.5 - var/powerproduction_drain = 0.01 - var/bitcoinproduction_drain = 0.15 - var/bitcoinmining = FALSE - var/obj/item/radio/radio - -/obj/machinery/power/rad_collector/Initialize(mapload) - . = ..() - - radio = new(src) - radio.keyslot = new /obj/item/encryptionkey/headset_eng - radio.subspace_transmission = TRUE - radio.canhear_range = 0 - radio.recalculateChannels() - -/obj/machinery/power/rad_collector/anchored/Initialize() - . = ..() - set_anchored(TRUE) - -/obj/machinery/power/rad_collector/Destroy() - QDEL_NULL(radio) - return ..() - -/obj/machinery/power/rad_collector/process(delta_time) - if(!loaded_tank) - return - if(!bitcoinmining) - if(loaded_tank.air_contents.get_moles(GAS_PLASMA) < 0.0001) - investigate_log("out of fuel.", INVESTIGATE_ENGINES) - playsound(src, 'sound/machines/ding.ogg', 50, 1) - var/msg = "Plasma depleted, recommend replacing tank." - radio.talk_into(src, msg, RADIO_CHANNEL_ENGINEERING) - eject() - else - var/gasdrained = min(powerproduction_drain*drainratio*delta_time,loaded_tank.air_contents.get_moles(GAS_PLASMA)) - loaded_tank.air_contents.adjust_moles(GAS_PLASMA, -gasdrained) - loaded_tank.air_contents.adjust_moles(GAS_TRITIUM, gasdrained) - var/power_produced = RAD_COLLECTOR_OUTPUT - add_avail(power_produced) - stored_energy-=power_produced - else if(is_station_level(z) && SSresearch.science_tech) - if(!loaded_tank.air_contents.get_moles(GAS_TRITIUM) || !loaded_tank.air_contents.get_moles(GAS_O2)) - playsound(src, 'sound/machines/ding.ogg', 50, 1) - eject() - else - var/gasdrained = bitcoinproduction_drain*drainratio*delta_time - loaded_tank.air_contents.adjust_moles(GAS_TRITIUM, -gasdrained) - loaded_tank.air_contents.adjust_moles(GAS_O2, -gasdrained) - loaded_tank.air_contents.adjust_moles(GAS_CO2, gasdrained*2) - var/bitcoins_mined = RAD_COLLECTOR_OUTPUT - var/datum/bank_account/D = SSeconomy.get_budget_account(ACCOUNT_ENG_ID) - if(D) - D.adjust_money(bitcoins_mined*RAD_COLLECTOR_MINING_CONVERSION_RATE)//about 1500 credits per minute with 2 emitters and 6 collectors with stock parts - SSresearch.science_tech.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, bitcoins_mined*RAD_COLLECTOR_MINING_CONVERSION_RATE)//about 1300 points per minute with the above set up - SSresearch.science_tech.add_point_type(TECHWEB_POINT_TYPE_DISCOVERY, bitcoins_mined*RAD_COLLECTOR_MINING_CONVERSION_RATE)//same here - stored_energy-=bitcoins_mined - -/obj/machinery/power/rad_collector/interact(mob/user) - if(anchored) - if(!src.locked) - toggle_power() - user.visible_message("[user.name] turns the [src.name] [active? "on":"off"].", \ - "You turn the [src.name] [active? "on":"off"].") - var/fuel = loaded_tank?.air_contents.get_moles(GAS_PLASMA) - investigate_log("turned [active?"on":"off"] by [key_name(user)]. [loaded_tank?"Fuel: [round(fuel/0.29)]%":"It is empty"].", INVESTIGATE_ENGINES) - return - else - to_chat(user, "The controls are locked!") - return - -/obj/machinery/power/rad_collector/can_be_unfasten_wrench(mob/user, silent) - if(loaded_tank) - if(!silent) - to_chat(user, "Remove the plasma tank first!") - return FAILED_UNFASTEN - return ..() - -/obj/machinery/power/rad_collector/set_anchored(anchorvalue) - . = ..() - if(isnull(.)) - return //no need to process if we didn't change anything. - if(anchorvalue) - connect_to_network() - else - disconnect_from_network() - -/obj/machinery/power/rad_collector/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/tank/internals/plasma)) - if(!anchored) - to_chat(user, "[src] needs to be secured to the floor first!") - return TRUE - if(loaded_tank) - to_chat(user, "There's already a plasma tank loaded!") - return TRUE - if(panel_open) - to_chat(user, "Close the maintenance panel first!") - return TRUE - if(!user.transferItemToLoc(W, src)) - return - loaded_tank = W - update_icon() - else if(W.GetID()) - if(allowed(user)) - if(active) - locked = !locked - to_chat(user, "You [locked ? "lock" : "unlock"] the controls.") - else - to_chat(user, "The controls can only be locked when \the [src] is active!") - else - to_chat(user, "Access denied.") - return TRUE - else - return ..() - -/obj/machinery/power/rad_collector/wrench_act(mob/living/user, obj/item/I) - default_unfasten_wrench(user, I) - return TRUE - -/obj/machinery/power/rad_collector/screwdriver_act(mob/living/user, obj/item/I) - if(..()) - return TRUE - if(loaded_tank) - to_chat(user, "Remove the plasma tank first!") - else - default_deconstruction_screwdriver(user, icon_state, icon_state, I) - return TRUE - -/obj/machinery/power/rad_collector/crowbar_act(mob/living/user, obj/item/I) - if(loaded_tank) - if(locked) - to_chat(user, "The controls are locked!") - return TRUE - eject() - return TRUE - if(default_deconstruction_crowbar(I)) - return TRUE - to_chat(user, "There isn't a tank loaded!") - return TRUE - -/obj/machinery/power/rad_collector/multitool_act(mob/living/user, obj/item/I) - if(!is_station_level(z) && !SSresearch.science_tech) - to_chat(user, "[src] isn't linked to a research system!") - return TRUE - if(locked) - to_chat(user, "[src] is locked!") - return TRUE - if(active) - to_chat(user, "[src] is currently active, producing [bitcoinmining ? "research points":"power"].") - return TRUE - bitcoinmining = !bitcoinmining - to_chat(user, "You [bitcoinmining ? "enable":"disable"] the research point production feature of [src].") - return TRUE - -/obj/machinery/power/rad_collector/return_analyzable_air() - if(loaded_tank) - return loaded_tank.return_analyzable_air() - else - return null - -/obj/machinery/power/rad_collector/examine(mob/user) - . = ..() - if(active) - if(!bitcoinmining) - // stored_energy is converted directly to watts every SSmachines.wait * 0.1 seconds. - // Therefore, its units are joules per SSmachines.wait * 0.1 seconds. - // So joules = stored_energy * SSmachines.wait * 0.1 - var/joules = stored_energy * SSmachines.wait * 0.1 - . += "[src]'s display states that it has stored [display_joules(joules)], and is processing [display_power(RAD_COLLECTOR_OUTPUT)]." - else - . += "[src]'s display states that it has stored a total of [stored_energy*RAD_COLLECTOR_MINING_CONVERSION_RATE], and is producing [RAD_COLLECTOR_OUTPUT*RAD_COLLECTOR_MINING_CONVERSION_RATE] research points per minute." - else - if(!bitcoinmining) - . += "[src]'s display displays the words: \"Power production mode. Please insert Plasma. Use a multitool to change production modes.\"" - else - . += "[src]'s display displays the words: \"Research point production mode. Please insert Tritium and Oxygen. Use a multitool to change production modes.\"" - -/obj/machinery/power/rad_collector/obj_break(damage_flag) - . = ..() - if(.) - eject() - -/obj/machinery/power/rad_collector/proc/eject() - locked = FALSE - var/obj/item/tank/internals/plasma/Z = src.loaded_tank - if (!Z) - return - Z.forceMove(drop_location()) - Z.layer = initial(Z.layer) - Z.plane = initial(Z.plane) - src.loaded_tank = null - if(active) - toggle_power() - else - update_icon() - -/obj/machinery/power/rad_collector/rad_act(pulse_strength) - . = ..() - if(loaded_tank && active && pulse_strength > RAD_COLLECTOR_EFFICIENCY) - stored_energy += (pulse_strength-RAD_COLLECTOR_EFFICIENCY)*RAD_COLLECTOR_COEFFICIENT - -/obj/machinery/power/rad_collector/update_icon() - cut_overlays() - if(loaded_tank) - add_overlay("ptank") - if(machine_stat & (NOPOWER|BROKEN)) - return - if(active) - add_overlay("on") - - -/obj/machinery/power/rad_collector/proc/toggle_power() - active = !active - if(active) - icon_state = "ca_on" - flick("ca_active", src) - else - icon_state = "ca" - flick("ca_deactive", src) - update_icon() - return - -#undef RAD_COLLECTOR_EFFICIENCY -#undef RAD_COLLECTOR_COEFFICIENT -#undef RAD_COLLECTOR_STORED_OUT -#undef RAD_COLLECTOR_MINING_CONVERSION_RATE -#undef RAD_COLLECTOR_OUTPUT diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index ef3a9592a5ee5..09dfebf60f7a5 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -500,9 +500,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) power = clamp((removed.return_temperature() * temp_factor / T0C) * gasmix_power_ratio + power, 0, SUPERMATTER_MAXIMUM_ENERGY) //Total laser power plus an overload - if(prob(50)) - last_rads = power * max(0, power_transmission_bonus * (1 + (tritiumcomp * TRITIUM_RADIOACTIVITY_MODIFIER) + (pluoxiumcomp * PLUOXIUM_RADIOACTIVITY_MODIFIER) + (bzcomp * BZ_RADIOACTIVITY_MODIFIER))) // Rad Modifiers BZ(500%), Tritium(300%), and Pluoxium(-200%) - radiation_pulse(src, last_rads) + emit_radiation() if(bzcomp >= 0.4 && prob(30 * bzcomp)) src.fire_nuclear_particle() // Start to emit radballs at a maximum of 30% chance per tick @@ -734,14 +732,14 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) user.visible_message("A hideous sound echoes as [W] is ashed out on contact with \the [src]. That didn't seem like a good idea...") playsound(src, 'sound/effects/supermatter.ogg', 150, 1) Consume(W) - radiation_pulse(src, 150, 4) + radiation_pulse(src, max_range = 3, threshold = 0.1, chance = 50) return ..() else cig.light() user.visible_message("As [user] lights \their [W] on \the [src], silence fills the room...",\ "Time seems to slow to a crawl as you touch \the [src] with \the [W].\n\The [W] flashes alight with an eerie energy as you nonchalantly lift your hand away from \the [src]. Damn.") playsound(src, 'sound/effects/supermatter.ogg', 50, 1) - radiation_pulse(src, 50, 3) + radiation_pulse(src, max_range = 1, threshold = 0, chance = 100) return if(istype(W, /obj/item/scalpel/supermatter)) var/obj/item/scalpel/supermatter/scalpel = W @@ -764,7 +762,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) Consume(W) playsound(get_turf(src), 'sound/effects/supermatter.ogg', 50, 1) - radiation_pulse(src, 150, 4) + radiation_pulse(src, max_range = 3, threshold = 0.1, chance = 50) /obj/machinery/power/supermatter_crystal/wrench_act(mob/user, obj/item/tool) if (moveable) @@ -825,14 +823,18 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) matter_power += 200 //Some poor sod got eaten, go ahead and irradiate people nearby. - radiation_pulse(src, 3000, 2, TRUE) + radiation_pulse(src, max_range = 6, threshold = 0.3, chance = 30) for(var/mob/living/L in range(10)) investigate_log("has irradiated [key_name(L)] after consuming [AM].", INVESTIGATE_ENGINES) + if (HAS_TRAIT(near_mob, TRAIT_RADIMMUNE) || issilicon(near_mob)) + continue + if(ishuman(near_mob) && SSradiation.wearing_rad_protected_clothing(near_mob)) + continue if(L in viewers(get_turf(src))) L.show_message("As \the [src] slowly stops resonating, you find your skin covered in new radiation burns.", 1,\ - "The unearthly ringing subsides and you notice you have new radiation burns.", MSG_AUDIBLE) + "The unearthly ringing subsides and you find your skin covered in new radiation burns.", MSG_AUDIBLE) else - L.show_message("You hear an unearthly ringing and notice your skin is covered in fresh radiation burns.", MSG_AUDIBLE) + L.show_message("An unearthly ringing and fills your ears, and you find your skin covered in new radiation burns.", MSG_AUDIBLE) /obj/machinery/power/supermatter_crystal/proc/disengage_field() if(QDELETED(src)) diff --git a/code/modules/power/supermatter/supermatter_delamination.dm b/code/modules/power/supermatter/supermatter_delamination.dm index e426173eda3a1..dc60dff74c3c9 100644 --- a/code/modules/power/supermatter/supermatter_delamination.dm +++ b/code/modules/power/supermatter/supermatter_delamination.dm @@ -47,8 +47,8 @@ //Hilariously enough, running into a closet should make you get hit the hardest. var/mob/living/carbon/human/H = mob H.hallucination += max(50, min(300, DETONATION_HALLUCINATION * sqrt(1 / (get_dist(mob, src) + 1)) ) ) - var/rads = DETONATION_RADS * sqrt( 1 / (get_dist(L, src) + 1) ) - L.rad_act(rads) + if (get_dist(victim, src) <= DETONATION_RADIATION_RANGE) + SSradiation.irradiate(victim) for(var/mob/M in GLOB.player_list) if(M.get_virtual_z_level() == supermatter_z) diff --git a/code/modules/power/supermatter/supermatter_radiation.dm b/code/modules/power/supermatter/supermatter_radiation.dm new file mode 100644 index 0000000000000..546ec13f8f919 --- /dev/null +++ b/code/modules/power/supermatter/supermatter_radiation.dm @@ -0,0 +1,57 @@ +// Any power past this number will be clamped down +#define MAX_ACCEPTED_POWER_OUTPUT 5000 + +// At the highest power output, assuming no integrity changes, the threshold will be 0. +#define THRESHOLD_EQUATION_SLOPE (-1 / MAX_ACCEPTED_POWER_OUTPUT) + +// The higher this number, the faster low integrity will drop threshold +// I would've named this "power", but y'know. :P +#define INTEGRITY_EXPONENTIAL_DEGREE 2 + +// At INTEGRITY_MIN_NUDGABLE_AMOUNT, the power will be treated as, at most, INTEGRITY_MAX_POWER_NUDGE. +// Any lower integrity will result in INTEGRITY_MAX_POWER_NUDGE. +#define INTEGRITY_MAX_POWER_NUDGE 1500 +#define INTEGRITY_MIN_NUDGABLE_AMOUNT 0.7 + +#define RADIATION_CHANCE_AT_FULL_INTEGRITY 0.03 +#define RADIATION_CHANCE_AT_ZERO_INTEGRITY 0.4 +#define CHANCE_EQUATION_SLOPE (RADIATION_CHANCE_AT_ZERO_INTEGRITY - RADIATION_CHANCE_AT_FULL_INTEGRITY) + +/obj/machinery/power/supermatter_crystal/proc/emit_radiation() + // As power goes up, rads go up. + // A standard N2 SM seems to produce a value of around 1,500. + var/power_factor = min(power, MAX_ACCEPTED_POWER_OUTPUT) + + var/integrity = 1 - CLAMP01(damage / explosion_point) + + // When integrity goes down, the threshold (from an observable point of view, rads) go up. + // However, the power factor must go up as well, otherwise turning off the emitters + // on a delaminating SM would stop radiation from escaping. + // To fix this, lower integrities raise the power factor to a minimum. + var/integrity_power_nudge = LERP(INTEGRITY_MAX_POWER_NUDGE, 0, CLAMP01((integrity - INTEGRITY_MIN_NUDGABLE_AMOUNT) / (1 - INTEGRITY_MIN_NUDGABLE_AMOUNT))) + + power_factor = max(power_factor, integrity_power_nudge) + + // At the "normal" N2 power output (with max integrity), this is 0.7, which is enough to be stopped + // by the walls or the radation shutters. + // As integrity does down, rads go up. + var/threshold = (THRESHOLD_EQUATION_SLOPE * power_factor + 1) ** ((1 / integrity) ** INTEGRITY_EXPONENTIAL_DEGREE) + + // Calculating chance is done entirely on integrity, so that actively delaminating SMs feel more dangerous + var/chance = (CHANCE_EQUATION_SLOPE * (1 - integrity)) + RADIATION_CHANCE_AT_FULL_INTEGRITY + + radiation_pulse( + src, + max_range = 8, + threshold = threshold, + chance = chance * 100, + ) + +#undef CHANCE_EQUATION_SLOPE +#undef INTEGRITY_EXPONENTIAL_DEGREE +#undef INTEGRITY_MAX_POWER_NUDGE +#undef INTEGRITY_MIN_NUDGABLE_AMOUNT +#undef MAX_ACCEPTED_POWER_OUTPUT +#undef RADIATION_CHANCE_AT_FULL_INTEGRITY +#undef RADIATION_CHANCE_AT_ZERO_INTEGRITY +#undef THRESHOLD_EQUATION_SLOPE diff --git a/code/modules/projectiles/guns/energy/energy_gun.dm b/code/modules/projectiles/guns/energy/energy_gun.dm index 2e82919cbcfbe..5c92637800082 100644 --- a/code/modules/projectiles/guns/energy/energy_gun.dm +++ b/code/modules/projectiles/guns/energy/energy_gun.dm @@ -150,11 +150,11 @@ switch(fail_tick) if(0 to 200) fail_tick += (2*(fail_chance)) - M.rad_act(40) + M.adjustFireLoss(3) to_chat(M, "Your [name] feels warmer.") if(201 to INFINITY) SSobj.processing.Remove(src) - M.rad_act(80) + M.adjustFireLoss(10) reactor_overloaded = TRUE to_chat(M, "Your [name]'s reactor overloads!") diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index f1ee75c92e7c0..af3e0aee3ae2f 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -137,7 +137,6 @@ var/paralyze = 0 var/immobilize = 0 var/unconscious = 0 - var/irradiate = 0 var/stutter = 0 var/slur = 0 var/eyeblur = 0 diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 54781b9044663..525656c994730 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -66,7 +66,6 @@ name = "\improper X-ray beam" icon_state = "xray" damage = 15 - irradiate = 300 range = 15 armour_penetration = 60 pass_flags = PASSTABLE | PASSTRANSPARENT | PASSGRILLE | PASSCLOSEDTURF | PASSMACHINE | PASSSTRUCTURE | PASSDOORS diff --git a/code/modules/projectiles/projectile/energy/misc.dm b/code/modules/projectiles/projectile/energy/misc.dm index 79ee634a3e66a..cb5009c7981cf 100644 --- a/code/modules/projectiles/projectile/energy/misc.dm +++ b/code/modules/projectiles/projectile/energy/misc.dm @@ -3,12 +3,20 @@ icon_state = "declone" damage = 20 damage_type = CLONE - irradiate = 100 impact_effect_type = /obj/effect/temp_visual/impact_effect/green_laser + /// The chance to be irradiated on hit + var/radiation_chance = 30 + +/obj/projectile/energy/declone/on_hit(atom/target, blocked, pierce_hit) + if (ishuman(target) && prob(radiation_chance)) + radiation_pulse(target, max_range = 0, threshold = RAD_FULL_INSULATION) + + ..() + /obj/projectile/energy/declone/weak damage = 9 - irradiate = 30 + radiation_chance = 10 /obj/projectile/energy/dart //ninja throwing dart name = "dart" diff --git a/code/modules/projectiles/projectile/energy/nuclear_particle.dm b/code/modules/projectiles/projectile/energy/nuclear_particle.dm index 98eb16acb14b7..5ccb53ede786e 100644 --- a/code/modules/projectiles/projectile/energy/nuclear_particle.dm +++ b/code/modules/projectiles/projectile/energy/nuclear_particle.dm @@ -5,7 +5,6 @@ pass_flags = PASSTABLE | PASSTRANSPARENT | PASSGRILLE damage = 10 damage_type = TOX - irradiate = 2500 //enough to knockdown and induce vomiting speed = 0.4 hitsound = 'sound/weapons/emitter2.ogg' impact_type = /obj/effect/projectile/impact/xray @@ -52,6 +51,12 @@ name = "impossibly strong nuclear particle" damage = 30 +/obj/projectile/energy/nuclear_particle/on_hit(atom/target, blocked, pierce_hit) + if (ishuman(target)) + radiation_pulse(target, max_range = 0, threshold = RAD_FULL_INSULATION) + + ..() + /atom/proc/fire_nuclear_particle(angle = rand(0,360), customize = FALSE, custompower = 1e12) //used by fusion to fire random nuclear particles. Fires one particle in a random direction. var/obj/projectile/energy/nuclear_particle/P = new /obj/projectile/energy/nuclear_particle(src) if(customize) diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 6b483e41f06d7..45679c14d1506 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -256,10 +256,6 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_desc = "The glass contain wodka. Xynta." shot_glass_icon_state = "shotglassclear" -/datum/reagent/consumable/ethanol/vodka/on_mob_life(mob/living/carbon/M) - M.radiation = max(M.radiation-2,0) - return ..() - /datum/reagent/consumable/ethanol/bilk name = "Bilk" description = "This appears to be beer mixed with milk. Disgusting." @@ -564,7 +560,14 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/screwdrivercocktail/on_mob_life(mob/living/carbon/M) if(M.mind && (M.mind.assigned_role in list(JOB_NAME_STATIONENGINEER, JOB_NAME_ATMOSPHERICTECHNICIAN, JOB_NAME_CHIEFENGINEER))) //Engineers lose radiation poisoning at a massive rate. - M.radiation = max(M.radiation - 25, 0) + ADD_TRAIT(M, TRAIT_HALT_RADIATION_EFFECTS, "[type]") + if (HAS_TRAIT(M, TRAIT_IRRADIATED)) + M.adjustToxLoss(-2 * REM * delta_time) + + return ..() + +/datum/reagent/consumable/ethanol/screwdrivercocktail/on_mob_end_metabolize(mob/living/L) + REMOVE_TRAIT(L, TRAIT_HALT_RADIATION_EFFECTS, "[type]") return ..() /datum/reagent/consumable/ethanol/booger diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 2662845dc91bc..c03c7ee618284 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -565,27 +565,43 @@ /datum/reagent/medicine/potass_iodide name = "Potassium Iodide" - description = "Efficiently restores low radiation damage." + description = "Heals low toxin damage while the patient is irradiated, and will halt the damaging effects of radiation." reagent_state = LIQUID color = "#BAA15D" chem_flags = CHEMICAL_RNG_GENERAL | CHEMICAL_RNG_FUN | CHEMICAL_RNG_BOTANY | CHEMICAL_GOAL_BOTANIST_HARVEST metabolization_rate = 2 * REAGENTS_METABOLISM +/datum/reagent/medicine/potass_iodide/on_mob_metabolize(mob/living/L) + . = ..() + ADD_TRAIT(L, TRAIT_HALT_RADIATION_EFFECTS, "[type]") + +/datum/reagent/medicine/potass_iodide/on_mob_end_metabolize(mob/living/L) + REMOVE_TRAIT(L, TRAIT_HALT_RADIATION_EFFECTS, "[type]") + return ..() + /datum/reagent/medicine/potass_iodide/on_mob_life(mob/living/carbon/M) - if(M.radiation > 0) - M.radiation -= min(M.radiation, 8) + if (HAS_TRAIT(M, TRAIT_IRRADIATED)) + M.adjustToxLoss(-1 * REM * delta_time) + ..() /datum/reagent/medicine/pen_acid name = "Pentetic Acid" - description = "Reduces massive amounts of radiation and toxin damage while purging other chemicals from the body." + description = "Reduces massive amounts of toxin damage while purging other chemicals from the body." reagent_state = LIQUID color = "#E6FFF0" chem_flags = CHEMICAL_RNG_GENERAL | CHEMICAL_RNG_FUN | CHEMICAL_RNG_BOTANY | CHEMICAL_GOAL_CHEMIST_USEFUL_MEDICINE metabolization_rate = 0.5 * REAGENTS_METABOLISM +/datum/reagent/medicine/pen_acid/on_mob_metabolize(mob/living/L) + . = ..() + ADD_TRAIT(L, TRAIT_HALT_RADIATION_EFFECTS, "[type]") + +/datum/reagent/medicine/pen_acid/on_mob_end_metabolize(mob/living/L) + REMOVE_TRAIT(L, TRAIT_HALT_RADIATION_EFFECTS, "[type]") + return ..() + /datum/reagent/medicine/pen_acid/on_mob_life(mob/living/carbon/M) - M.radiation -= max(M.radiation-RAD_MOB_SAFE, 0)/50 M.adjustToxLoss(-2*REM, 0) for(var/datum/reagent/R in M.reagents.reagent_list) if(R != src) diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm index 6fad1eae6381b..5ea0c4c58356b 100644 --- a/code/modules/recycling/disposal/bin.dm +++ b/code/modules/recycling/disposal/bin.dm @@ -10,7 +10,6 @@ resistance_flags = FIRE_PROOF interaction_flags_machine = INTERACT_MACHINE_OPEN | INTERACT_MACHINE_WIRES_IF_OPEN | INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OPEN_SILICON obj_flags = CAN_BE_HIT | USES_TGUI - rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE diff --git a/code/modules/recycling/disposal/holder.dm b/code/modules/recycling/disposal/holder.dm index 17c6872425561..f93eb7b1c9c79 100644 --- a/code/modules/recycling/disposal/holder.dm +++ b/code/modules/recycling/disposal/holder.dm @@ -9,7 +9,6 @@ dir = NONE var/obj/structure/disposalpipe/last_pipe var/obj/structure/disposalpipe/current_pipe - rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE var/datum/gas_mixture/gas // gas used to flush, will appear at exit point var/active = FALSE // true if the holder is moving, otherwise inactive var/count = 1000 // can travel 1000 steps before going inactive (in case of loops) diff --git a/code/modules/recycling/disposal/outlet.dm b/code/modules/recycling/disposal/outlet.dm index 7cff1fcfd4fa4..11cdcc0239a92 100644 --- a/code/modules/recycling/disposal/outlet.dm +++ b/code/modules/recycling/disposal/outlet.dm @@ -6,7 +6,6 @@ icon_state = "outlet" density = TRUE anchored = TRUE - rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE var/active = FALSE var/turf/target // this will be where the output objects are 'thrown' to. var/obj/structure/disposalpipe/trunk/trunk // the attached pipe trunk From 863a30d7afae9bce47808527f3bf2ee090ad6f6e Mon Sep 17 00:00:00 2001 From: XeonMations Date: Fri, 6 Sep 2024 07:32:20 +0300 Subject: [PATCH 06/42] and now, for errors --- .../chemistry/reagents/other_reagents.dm | 7 +-- .../chemistry/reagents/toxin_reagents.dm | 8 +++- .../modules/research/designs/mecha_designs.dm | 10 ---- code/modules/research/designs/tool_designs.dm | 10 ---- code/modules/research/techweb/all_nodes.dm | 2 - code/modules/surgery/organs/lungs.dm | 26 ++++++++++ .../mecha/equipment/tools/other_tools.dm | 19 -------- tgui/packages/tgui/interfaces/DnaConsole.js | 48 +++++++++---------- .../tgui/interfaces/GravityGenerator.js | 6 +-- 9 files changed, 62 insertions(+), 74 deletions(-) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 10b8e0b0fa486..231289476ac06 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1010,11 +1010,12 @@ color = "#B8B8C0" // rgb: 184, 184, 192 chem_flags = CHEMICAL_RNG_GENERAL | CHEMICAL_RNG_FUN | CHEMICAL_RNG_BOTANY taste_description = "the inside of a reactor" - var/irradiation_level = 1 process_flags = ORGANIC | SYNTHETIC + /// How much tox damage to deal per tick + var/tox_damage = 0.5 /datum/reagent/uranium/on_mob_life(mob/living/carbon/M) - M.apply_effect(irradiation_level/M.metabolism_efficiency,EFFECT_IRRADIATE,0) + M.adjustToxLoss(tox_damage * delta_time * REM) ..() /datum/reagent/uranium/reaction_turf(turf/T, reac_volume) @@ -1033,7 +1034,7 @@ color = "#C7C7C7" // rgb: 199,199,199 chem_flags = CHEMICAL_BASIC_ELEMENT taste_description = "the colour blue and regret" - irradiation_level = 2*REM + tox_damage = 1*REM process_flags = ORGANIC | SYNTHETIC diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index 567fc0d499958..4c2caa90ba950 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -50,7 +50,7 @@ ..() /datum/reagent/toxin/mutagen/on_mob_life(mob/living/carbon/C) - C.apply_effect(5,EFFECT_IRRADIATE,0) + C.adjustToxLoss(0.5 * delta_time * REM) return ..() /datum/reagent/toxin/plasma @@ -372,7 +372,11 @@ process_flags = ORGANIC | SYNTHETIC /datum/reagent/toxin/polonium/on_mob_life(mob/living/carbon/M) - M.radiation += 10 + if (!HAS_TRAIT(M, TRAIT_IRRADIATED) && SSradiation.can_irradiate_basic(M)) + M.AddComponent(/datum/component/irradiated) + else + M.adjustToxLoss(1 * REM * delta_time) + ..() /datum/reagent/toxin/histamine diff --git a/code/modules/research/designs/mecha_designs.dm b/code/modules/research/designs/mecha_designs.dm index 8535193130a15..a031fe9d8c0c1 100644 --- a/code/modules/research/designs/mecha_designs.dm +++ b/code/modules/research/designs/mecha_designs.dm @@ -351,16 +351,6 @@ construction_time = 100 category = list("Exosuit Equipment") -/datum/design/mech_generator_nuclear - name = "Exosuit Module (ExoNuclear Reactor)" - desc = "Compact nuclear reactor module." - id = "mech_generator_nuclear" - build_type = MECHFAB - build_path = /obj/item/mecha_parts/mecha_equipment/generator/nuclear - materials = list(/datum/material/iron=10000,/datum/material/glass = 1000,/datum/material/silver=500) - construction_time = 100 - category = list("Exosuit Equipment") - /datum/design/mech_plasma_cutter name = "Exosuit Mining (217-D Heavy Plasma Cutter)" desc = "A device that shoots resonant plasma bursts at extreme velocity. The blasts are capable of crushing rock and demolishing solid obstacles." diff --git a/code/modules/research/designs/tool_designs.dm b/code/modules/research/designs/tool_designs.dm index d0493343f4b5b..65908d52f12bb 100644 --- a/code/modules/research/designs/tool_designs.dm +++ b/code/modules/research/designs/tool_designs.dm @@ -300,13 +300,3 @@ build_path = /obj/item/wirebrush category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SERVICE - -/datum/design/wirebrush_adv - name = "Advanced Wirebrush" - desc = "An advanced wirebrush." - id = "wirebrush_adv" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 200, /datum/material/glass = 200, /datum/material/uranium = 200, /datum/material/plasma = 200) - build_path = /obj/item/wirebrush/advanced - category = list("Equipment") - departmental_flags = DEPARTMENTAL_FLAG_SERVICE diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 9d7cad9d579fe..d1cea4c6792cd 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -1551,7 +1551,6 @@ "laserscalpel", "mechanicalpinches", "searingtool", - "wirebrush_adv", ) prereq_ids = list("adv_engi") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) @@ -1988,7 +1987,6 @@ design_ids = list( "mech_ccw_armor", "mech_energy_relay", - "mech_generator_nuclear", "mech_proj_armor", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index eeb4bf3bbfc6e..01ea6c1df495e 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -50,6 +50,11 @@ var/BZ_brain_damage_min = 1 var/gas_stimulation_min = 0.002 //Nitryl and Stimulum + var/tritium_irradiation_moles_min = 1 + var/tritium_irradiation_moles_max = 15 + var/tritium_irradiation_probability_min = 10 + var/tritium_irradiation_probability_max = 60 + var/cold_message = "your face freezing and an icicle forming" var/cold_level_1_threshold = 260 var/cold_level_2_threshold = 200 @@ -278,6 +283,27 @@ H.hallucination += 5 H.reagents.add_reagent(/datum/reagent/metabolite/bz,1) + // Tritium + var/trit_pp = PP(breath,GAS_TRITIUM) + if (trit_pp > 50) + breather.radiation += trit_pp/2 //If you're breathing in half an atmosphere of radioactive gas, you fucked up. + else + breather.radiation += trit_pp/10 + // If you're breathing in half an atmosphere of radioactive gas, you fucked up. + if (trit_pp > tritium_irradiation_moles_min && SSradiation.can_irradiate_basic(breather)) + var/lerp_scale = min(tritium_irradiation_moles_max, trit_pp - tritium_irradiation_moles_min) / (tritium_irradiation_moles_max - tritium_irradiation_moles_min) + var/chance = LERP(tritium_irradiation_probability_min, tritium_irradiation_probability_max, lerp_scale) + if (prob(chance)) + breather.AddComponent(/datum/component/irradiated) + + gas_breathed = PP(breath,GAS_TRITIUM) + + if (trit_pp > 0) + var/ratio = gas_breathed * 15 + breather.adjustToxLoss(clamp(ratio, MIN_TOXIC_GAS_DAMAGE, MAX_TOXIC_GAS_DAMAGE)) + + breath.adjust_moles(GAS_TRITIUM, -gas_breathed) + // Nitryl var/nitryl_pp = PP(breath,GAS_NITRYL) if (prob(nitryl_pp)) diff --git a/code/modules/vehicles/mecha/equipment/tools/other_tools.dm b/code/modules/vehicles/mecha/equipment/tools/other_tools.dm index 89c3f16316c46..08db9acd21abb 100644 --- a/code/modules/vehicles/mecha/equipment/tools/other_tools.dm +++ b/code/modules/vehicles/mecha/equipment/tools/other_tools.dm @@ -435,25 +435,6 @@ update_equip_info() return TRUE - -/obj/item/mecha_parts/mecha_equipment/generator/nuclear - name = "exonuclear reactor" - desc = "An exosuit module that generates power using uranium as fuel. Pollutes the environment." - icon_state = "tesla" - max_fuel = 50000 - fuel_per_cycle_idle = 10 - fuel_per_cycle_active = 30 - power_per_cycle = 50 - var/rad_per_cycle = 30 - -/obj/item/mecha_parts/mecha_equipment/generator/nuclear/generator_init() - fuel = new /obj/item/stack/sheet/mineral/uranium(src, 0) - -/obj/item/mecha_parts/mecha_equipment/generator/nuclear/process() - if(..()) - radiation_pulse(get_turf(src), rad_per_cycle) - - /////////////////////////////////////////// THRUSTERS ///////////////////////////////////////////// /obj/item/mecha_parts/mecha_equipment/thrusters diff --git a/tgui/packages/tgui/interfaces/DnaConsole.js b/tgui/packages/tgui/interfaces/DnaConsole.js index 33ba91ceaa394..8ea55e10d8de9 100644 --- a/tgui/packages/tgui/interfaces/DnaConsole.js +++ b/tgui/packages/tgui/interfaces/DnaConsole.js @@ -55,8 +55,8 @@ const MUT_COLORS = { 4: 'average', }; -const RADIATION_STRENGTH_MAX = 15; -const RADIATION_DURATION_MAX = 30; +const PULSE_STRENGTH_MAX = 15; +const PULSE_DURATION_MAX = 30; /** * The following predicate tests if two mutations are functionally @@ -69,16 +69,16 @@ const isSameMutation = (a, b) => { export const DnaConsole = (props, context) => { const { data, act } = useBackend(context); - const { isPulsingRads, radPulseSeconds } = data; + const { isPulsing, timeToPulse } = data; const { consoleMode } = data.view; return ( - {!!isPulsingRads && ( + {!!isPulsing && ( - Radiation pulse in progress... + Pulse in progress... - {radPulseSeconds}s + {timeToPulse}s )} @@ -104,7 +104,7 @@ const DnaScannerButtons = (props, context) => { const { data, act } = useBackend(context); const { hasDelayedAction, - isPulsingRads, + isPulsing, isScannerConnected, isScrambleReady, isViableSubject, @@ -120,7 +120,7 @@ const DnaScannerButtons = (props, context) => { {!!hasDelayedAction && @@ -183,7 +183,7 @@ const SubjectStatus = (props, context) => { const DnaScannerContent = (props, context) => { const { data, act } = useBackend(context); - const { subjectName, isScannerConnected, isViableSubject, subjectHealth, subjectRads, subjectStatus } = data; + const { subjectName, isScannerConnected, isViableSubject, subjectHealth, subjectDamage, subjectStatus } = data; if (!isScannerConnected) { return DNA Scanner is not connected.; } @@ -211,9 +211,9 @@ const DnaScannerContent = (props, context) => { {subjectHealth}% - + { good: [0, 30], olive: [-Infinity, 0], }}> - {subjectRads}% + {subjectDamage}% @@ -974,13 +974,13 @@ const DnaConsoleEnzymes = (props, context) => { - + - + - + @@ -988,20 +988,20 @@ const DnaConsoleEnzymes = (props, context) => { ); }; -const RadiationEmitterSettings = (props, context) => { +const PulseSettings = (props, context) => { const { data, act } = useBackend(context); - const { radStrength, radDuration } = data; + const { pulseStrength, pulseDuration } = data; return ( -

+
act('set_pulse_strength', { val: value, @@ -1014,9 +1014,9 @@ const RadiationEmitterSettings = (props, context) => { animated width="32px" stepPixelSize={10} - value={radDuration} + value={pulseDuration} minValue={1} - maxValue={RADIATION_DURATION_MAX} + maxValue={PULSE_DURATION_MAX} onDrag={(e, value) => act('set_pulse_duration', { val: value, @@ -1029,7 +1029,7 @@ const RadiationEmitterSettings = (props, context) => { ); }; -const RadiationEmitterProbs = (props, context) => { +const PulseEmitterProbs = (props, context) => { const { data } = useBackend(context); const { stdDevAcc, stdDevStr } = data; return ( @@ -1049,7 +1049,7 @@ const RadiationEmitterProbs = (props, context) => { ); }; -const RadiationEmitterPulseBoard = (props, context) => { +const PulseBoard = (props, context) => { const { data, act } = useBackend(context); const { subjectUNI = [] } = data; // Build blocks of buttons of unique enzymes diff --git a/tgui/packages/tgui/interfaces/GravityGenerator.js b/tgui/packages/tgui/interfaces/GravityGenerator.js index 6908d09c92348..862d32cd1e851 100644 --- a/tgui/packages/tgui/interfaces/GravityGenerator.js +++ b/tgui/packages/tgui/interfaces/GravityGenerator.js @@ -3,14 +3,12 @@ import { Box, Button, LabeledList, NoticeBox, ProgressBar, Section } from '../co import { Window } from '../layouts'; export const GravityGenerator = (props, context) => { - const { act, data } = useBackend(context); - const { charging_state, operational } = data; + const { data } = useBackend(context); + const { operational } = data; return ( {!operational && No data available} - {!!operational && charging_state !== 0 && WARNING - Radiation detected} - {!!operational && charging_state === 0 && No radiation detected} {!!operational && } From a5753dceb836b7e3e99c99c3942f9f6b2d46b80d Mon Sep 17 00:00:00 2001 From: XeonMations Date: Fri, 6 Sep 2024 07:44:43 +0300 Subject: [PATCH 07/42] rahhhhh --- .../weather/weather_types/radiation_storm.dm | 10 ++++----- code/datums/wires/dna_scanner.dm | 6 ------ code/game/machinery/dna_scanner.dm | 19 ------------------ .../objects/items/devices/traitordevices.dm | 8 ++++++-- .../projectile/energy/accelerator_particle.dm | 4 ---- icons/mob/screen_alert.dmi | Bin 128444 -> 131855 bytes 6 files changed, 10 insertions(+), 37 deletions(-) diff --git a/code/datums/weather/weather_types/radiation_storm.dm b/code/datums/weather/weather_types/radiation_storm.dm index f4870c0c5126d..c29d4e41415e6 100644 --- a/code/datums/weather/weather_types/radiation_storm.dm +++ b/code/datums/weather/weather_types/radiation_storm.dm @@ -22,7 +22,6 @@ /area/security/prison/asteroid/service, /area/space/nearstation, /area/solar, /area/security/prison, /area/holodeck/prison) target_trait = ZTRAIT_STATION - immunity_type = RAD /datum/weather/rad_storm/telegraph() ..() @@ -37,20 +36,19 @@ return var/mob/living/carbon/human/H = L - if(!H.dna || HAS_TRAIT(H, TRAIT_GENELESS)) + if(!H.dna || HAS_TRAIT(H, TRAIT_RADIMMUNE)) return if (SSradiation.wearing_rad_protected_clothing(H)) return - H.random_mutate_unique_identity() - H.random_mutate_unique_features() + H.randmuti() if(prob(50)) if(prob(90)) - H.easy_random_mutate(NEGATIVE+MINOR_NEGATIVE) + H.easy_randmut(NEGATIVE+MINOR_NEGATIVE) else - H.easy_random_mutate(POSITIVE) + H.easy_randmut(POSITIVE) H.domutcheck() /datum/weather/rad_storm/end() diff --git a/code/datums/wires/dna_scanner.dm b/code/datums/wires/dna_scanner.dm index 6794f01bd90ef..32249bafeb036 100644 --- a/code/datums/wires/dna_scanner.dm +++ b/code/datums/wires/dna_scanner.dm @@ -30,9 +30,6 @@ if(WIRE_BOLTS) S.locked = !S.locked S.update_icon() - if(WIRE_LIMIT) - if(iscarbon(user)) - S.irradiate(user) if(WIRE_OPEN) if(!S.locked) if(S.state_open) @@ -50,9 +47,6 @@ if(WIRE_IDSCAN) if(!mend) S.ignore_id = TRUE - if(WIRE_LIMIT) - if(iscarbon(usr)) - S.irradiate(usr) if(WIRE_OPEN) if(!mend) S.open_machine() diff --git a/code/game/machinery/dna_scanner.dm b/code/game/machinery/dna_scanner.dm index acb42123e8b20..21a3d0ea379be 100644 --- a/code/game/machinery/dna_scanner.dm +++ b/code/game/machinery/dna_scanner.dm @@ -152,25 +152,6 @@ return close_machine(target) -/obj/machinery/dna_scannernew/proc/irradiate(mob/living/carbon/target) - if(HAS_TRAIT(target, TRAIT_RADIMMUNE)) - return - to_chat(target, "You feel warm.") - target.rad_act(250/(damage_coeff ** 2)) - - if(!target.has_dna() || HAS_TRAIT(target, TRAIT_BADDNA)) - return - - var/resist = target.getarmor(null, RAD) - if(prob(max(0,100-resist))) - target.randmuti() - if(prob(20)) - if(prob(90)) - target.easy_randmut(NEGATIVE+MINOR_NEGATIVE) - else - target.easy_randmut(POSITIVE) - target.domutcheck() - /obj/machinery/dna_scannernew/proc/shock(mob/user, prb) if(machine_stat & (BROKEN|NOPOWER)) // unpowered, no shock return FALSE diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index 651f0acd9e694..6af096f8ac6bc 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -83,6 +83,10 @@ effective or pretty fucking useless. ..() if(!irradiate) return + var/mob/living/carbon/human/human_target = M + if(istype(human_target) && !used && SSradiation.wearing_rad_protected_clothing(human_target)) //intentionally not checking for TRAIT_RADIMMUNE here so that tatortot can still fuck up and waste their cooldown. + to_chat(user, span_warning("[M]'s clothing is fully protecting [M.p_them()] from irradiation!")) + return if(!used) log_combat(user, M, "irradiated", src) var/cooldown = get_cooldown() @@ -95,8 +99,8 @@ effective or pretty fucking useless. if(M) if(intensity >= 5) M.apply_effect(round(intensity/0.075), EFFECT_UNCONSCIOUS) - else - to_chat(user, "The radioactive microlaser is still recharging.") + return + to_chat(user, span_warning("The radioactive microlaser is still recharging.")) /obj/item/healthanalyzer/rad_laser/proc/handle_cooldown(cooldown) spawn(cooldown) diff --git a/code/modules/projectiles/projectile/energy/accelerator_particle.dm b/code/modules/projectiles/projectile/energy/accelerator_particle.dm index 328c56c543ede..f96a0d9ee2a66 100644 --- a/code/modules/projectiles/projectile/energy/accelerator_particle.dm +++ b/code/modules/projectiles/projectile/energy/accelerator_particle.dm @@ -8,7 +8,6 @@ projectile_phasing = (ALL & ~(PASSMOB | PASSBLOB | PASSANOMALY | PASSMACHINE)) suppressed = SUPPRESSED_VERY //we don't want every machine that gets hit to spam chat hitsound = null - irradiate = 60 var/energy = 10 var/stop_dissipate = FALSE @@ -18,14 +17,11 @@ /obj/projectile/energy/accelerated_particle/weak range = 8 energy = 5 - irradiate = 30 stop_dissipate = TRUE //because its supposed to keep the singu/tesla stable at the same size /obj/projectile/energy/accelerated_particle/strong range = 15 energy = 15 - irradiate = 90 /obj/projectile/energy/accelerated_particle/powerful range = 20 energy = 50 - irradiate = 300 diff --git a/icons/mob/screen_alert.dmi b/icons/mob/screen_alert.dmi index b99c973312bd8a6d55d39bfb4e7075a878f18791..35e78185beab50975511e89e65505fdd26fd1192 100644 GIT binary patch literal 131855 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ⅇ7(6g~x3VVs{v3 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 Date: Fri, 6 Sep 2024 07:57:15 +0300 Subject: [PATCH 08/42] dasdsadsa --- code/__DEFINES/reactions.dm | 3 + code/__HELPERS/radiation.dm | 6 ++ code/controllers/subsystem/radiation.dm | 99 ++++++++++++------- code/datums/components/irradiated.dm | 1 - .../atmospherics/gasmixtures/reactions.dm | 2 +- .../clothing/glasses/engine_goggles.dm | 2 +- .../clothing/under/jobs/engineering.dm | 10 +- 7 files changed, 79 insertions(+), 44 deletions(-) diff --git a/code/__DEFINES/reactions.dm b/code/__DEFINES/reactions.dm index fd0dc83d6ad36..d3358c9dacb24 100644 --- a/code/__DEFINES/reactions.dm +++ b/code/__DEFINES/reactions.dm @@ -57,3 +57,6 @@ #define FUSION_RAD_MIDPOINT 15 //! If you decrease this by one, the fusion rads will *triple* and vice versa #define FUSION_MIDDLE_ENERGY_REFERENCE 1e6 //! This number is deceptively dangerous; sort of tied to TOROID_CALCULATED_THRESHOLD #define FUSION_BUFFER_DIVISOR 1 //! Increase this to cull unrobust fusions faster + +/// Maximum range a radiation pulse is allowed to be from a gas reaction. +#define GAS_REACTION_MAXIMUM_RADIATION_PULSE_RANGE 20 diff --git a/code/__HELPERS/radiation.dm b/code/__HELPERS/radiation.dm index 12178d28fc2bb..0f5ea9358ab0d 100644 --- a/code/__HELPERS/radiation.dm +++ b/code/__HELPERS/radiation.dm @@ -15,6 +15,10 @@ /// You can also pass in a minimum exposure time. If this is set, then this radiation pulse /// will not irradiate the source unless they have been around *any* radioactive source for that /// period of time. +/// The chance to get irradiated diminishes over range, and from objects that block radiation. +/// Assuming there is nothing in the way, the chance will determine what the chance is to get irradiated from half of max_range. +/// Example: If chance is equal to 30%, and max_range is equal to 8, +/// then the chance for a thing to get irradiated is 30% if they are 4 turfs away from the pulse source. /proc/radiation_pulse(atom/source, max_range, threshold, chance = DEFAULT_RADIATION_CHANCE, minimum_exposure_time = 0) if(!SSradiation.can_fire) return @@ -25,6 +29,7 @@ pulse_information.threshold = threshold pulse_information.chance = chance pulse_information.minimum_exposure_time = minimum_exposure_time + pulse_information.turfs_to_process = RANGE_TURFS(max_range, source) SSradiation.processing += pulse_information @@ -36,6 +41,7 @@ var/threshold var/chance var/minimum_exposure_time + var/list/turfs_to_process #define MEDIUM_RADIATION_THRESHOLD_RANGE 0.5 #define EXTREME_RADIATION_CHANCE 30 diff --git a/code/controllers/subsystem/radiation.dm b/code/controllers/subsystem/radiation.dm index afd570ff31e07..4d0e580aff82a 100644 --- a/code/controllers/subsystem/radiation.dm +++ b/code/controllers/subsystem/radiation.dm @@ -10,17 +10,19 @@ SUBSYSTEM_DEF(radiation) /datum/controller/subsystem/radiation/fire(resumed) while (processing.len) - var/datum/radiation_pulse_information/pulse_information = popleft(processing) + var/datum/radiation_pulse_information/pulse_information = processing[1] var/datum/weakref/source_ref = pulse_information.source_ref var/atom/source = source_ref.resolve() if (isnull(source)) + processing.Cut(1, 2) continue pulse(source, pulse_information) if (MC_TICK_CHECK) return + processing.Cut(1, 2) /datum/controller/subsystem/radiation/stat_entry(msg) msg = "[msg] | Pulses: [processing.len]" @@ -28,48 +30,73 @@ SUBSYSTEM_DEF(radiation) /datum/controller/subsystem/radiation/proc/pulse(atom/source, datum/radiation_pulse_information/pulse_information) var/list/cached_rad_insulations = list() + var/list/cached_turfs_to_process = pulse_information.turfs_to_process + var/turfs_iterated = 0 + for (var/turf/turf_to_irradiate as anything in cached_turfs_to_process) + turfs_iterated += 1 + for (var/atom/movable/target in turf_to_irradiate) + if (!can_irradiate_basic(target)) + continue - for (var/atom/movable/target in range(pulse_information.max_range, source)) - if (!can_irradiate_basic(target)) - continue - - var/current_insulation = 1 - - for (var/turf/turf_in_between in get_line(source, target) - get_turf(source)) - var/insulation = cached_rad_insulations[turf_in_between] - if (isnull(insulation)) - insulation = turf_in_between.rad_insulation - for (var/atom/on_turf as anything in turf_in_between.contents) - insulation *= on_turf.rad_insulation - cached_rad_insulations[turf_in_between] = insulation - - current_insulation *= insulation - - if (current_insulation <= pulse_information.threshold) - break + var/current_insulation = 1 - SEND_SIGNAL(target, COMSIG_IN_RANGE_OF_IRRADIATION, pulse_information, current_insulation) + for (var/turf/turf_in_between in get_line(source, target) - get_turf(source)) + var/insulation = cached_rad_insulations[turf_in_between] + if (isnull(insulation)) + insulation = turf_in_between.rad_insulation + for (var/atom/on_turf as anything in turf_in_between.contents) + insulation *= on_turf.rad_insulation + cached_rad_insulations[turf_in_between] = insulation - // Check a second time, because of TRAIT_BYPASS_EARLY_IRRADIATED_CHECK - if (HAS_TRAIT(target, TRAIT_IRRADIATED)) - continue + current_insulation *= insulation - if (current_insulation <= pulse_information.threshold) - continue + if (current_insulation <= pulse_information.threshold) + break - var/irradiation_result = SEND_SIGNAL(target, COMSIG_IN_THRESHOLD_OF_IRRADIATION, pulse_information) - if (irradiation_result & CANCEL_IRRADIATION) - continue + SEND_SIGNAL(target, COMSIG_IN_RANGE_OF_IRRADIATION, pulse_information, current_insulation) - if (pulse_information.minimum_exposure_time && !(irradiation_result & SKIP_MINIMUM_EXPOSURE_TIME_CHECK)) - target.AddComponent(/datum/component/radiation_countdown, pulse_information.minimum_exposure_time) - continue + // Check a second time, because of TRAIT_BYPASS_EARLY_IRRADIATED_CHECK + if (HAS_TRAIT(target, TRAIT_IRRADIATED)) + continue - if (!prob(pulse_information.chance)) - continue - - if (irradiate_after_basic_checks(target)) - target.investigate_log("was irradiated by [source].", INVESTIGATE_RADIATION) + if (current_insulation <= pulse_information.threshold) + continue + + /// Perceived chance of target getting irradiated. + var/perceived_chance + /// Intensity variable which will describe the radiation pulse. + /// It is used by perceived intensity, which diminishes over range. The chance of the target getting irradiated is determined by perceived_intensity. + /// Intensity is calculated so that the chance of getting irradiated at half of the max range is the same as the chance parameter. + var/intensity + /// Diminishes over range. Used by perceived chance, which is the actual chance to get irradiated. + var/perceived_intensity + + if(pulse_information.chance < 100) // Prevents log(0) runtime if chance is 100% + intensity = -log(1 - pulse_information.chance / 100) * (1 + pulse_information.max_range / 2) ** 2 + perceived_intensity = intensity * INVERSE((1 + get_dist_euclidean(source, target)) ** 2) // Diminishes over range. + perceived_intensity *= (current_insulation - pulse_information.threshold) * INVERSE(1 - pulse_information.threshold) // Perceived intensity decreases as objects that absorb radiation block its trajectory. + perceived_chance = 100 * (1 - NUM_E ** -perceived_intensity) + else + perceived_chance = 100 + + var/irradiation_result = SEND_SIGNAL(target, COMSIG_IN_THRESHOLD_OF_IRRADIATION, pulse_information) + if (irradiation_result & CANCEL_IRRADIATION) + continue + + if (pulse_information.minimum_exposure_time && !(irradiation_result & SKIP_MINIMUM_EXPOSURE_TIME_CHECK)) + target.AddComponent(/datum/component/radiation_countdown, pulse_information.minimum_exposure_time) + continue + + if (!prob(perceived_chance)) + continue + + if (irradiate_after_basic_checks(target)) + target.investigate_log("was irradiated by [source].", INVESTIGATE_RADIATION) + + if(MC_TICK_CHECK) + break + + cached_turfs_to_process.Cut(1, turfs_iterated + 1) /// Will attempt to irradiate the given target, limited through IC means, such as radiation protected clothing. /datum/controller/subsystem/radiation/proc/irradiate(atom/target) diff --git a/code/datums/components/irradiated.dm b/code/datums/components/irradiated.dm index 63a9379b9c159..641b331bdbb9d 100644 --- a/code/datums/components/irradiated.dm +++ b/code/datums/components/irradiated.dm @@ -12,7 +12,6 @@ /// This atom is irradiated, and will glow green. /// Humans will take toxin damage until all their toxin damage is cleared. -/// Items will attempt to irradiate whoever is holding them, as well as whatever they are inside. /datum/component/irradiated dupe_mode = COMPONENT_DUPE_UNIQUE diff --git a/code/modules/atmospherics/gasmixtures/reactions.dm b/code/modules/atmospherics/gasmixtures/reactions.dm index 16ef2b0df09f8..bf41f97fced9d 100644 --- a/code/modules/atmospherics/gasmixtures/reactions.dm +++ b/code/modules/atmospherics/gasmixtures/reactions.dm @@ -143,7 +143,7 @@ /proc/radiation_burn(turf/open/location, energy_released) if(istype(location) && prob(10)) - radiation_pulse(location, max_range = energy_released/TRITIUM_BURN_RADIOACTIVITY_FACTOR, threshold = RAD_MEDIUM_INSULATION, chance = (DEFAULT_RADIATION_CHANCE / 3)) + radiation_pulse(location, max_range = min(sqrt(burned_fuel * effect_scale / TRITIUM_OXYBURN_MULTIPLIER) / TRITIUM_RADIATION_RANGE_DIVISOR, GAS_REACTION_MAXIMUM_RADIATION_PULSE_RANGE), threshold = TRITIUM_RADIATION_THRESHOLD_BASE * INVERSE(TRITIUM_RADIATION_THRESHOLD_BASE + (burned_fuel * effect_scale / TRITIUM_OXYBURN_MULTIPLIER))) /datum/gas_reaction/tritfire/react(datum/gas_mixture/air, datum/holder) var/energy_released = 0 diff --git a/code/modules/clothing/glasses/engine_goggles.dm b/code/modules/clothing/glasses/engine_goggles.dm index f9e8a078c43c2..7d58ee8897124 100644 --- a/code/modules/clothing/glasses/engine_goggles.dm +++ b/code/modules/clothing/glasses/engine_goggles.dm @@ -7,7 +7,7 @@ /obj/item/clothing/glasses/meson/engine name = "engineering scanner goggles" - desc = "Goggles used by engineers. The Meson Scanner mode lets you see basic structural and terrain layouts through walls, the T-ray Scanner mode lets you see underfloor objects such as cables and pipes, and the Radiation Scanner mode let's you see objects contaminated by radiation." + desc = "Goggles used by engineers. The Meson Scanner mode lets you see basic structural and terrain layouts through walls and the T-ray Scanner mode lets you see underfloor objects such as cables and pipes." icon_state = "trayson-meson" item_state = "trayson-meson" actions_types = list(/datum/action/item_action/toggle_mode) diff --git a/code/modules/clothing/under/jobs/engineering.dm b/code/modules/clothing/under/jobs/engineering.dm index 663c013b4e14c..592d7f074efe3 100644 --- a/code/modules/clothing/under/jobs/engineering.dm +++ b/code/modules/clothing/under/jobs/engineering.dm @@ -7,7 +7,7 @@ resistance_flags = NONE /obj/item/clothing/under/rank/engineering/chief_engineer - desc = "It's a high visibility jumpsuit given to those engineers insane enough to achieve the rank of \"Chief Engineer\". It has minor radiation shielding." + desc = "It's a high visibility jumpsuit given to those engineers insane enough to achieve the rank of \"Chief Engineer\". Made from fire resistant materials." name = "chief engineer's jumpsuit" icon_state = "chiefengineer" item_state = "gy_suit" //TODO replace it @@ -16,7 +16,7 @@ resistance_flags = NONE /obj/item/clothing/under/rank/engineering/chief_engineer/skirt - desc = "It's a high visibility jumpskirt given to those engineers insane enough to achieve the rank of \"Chief Engineer\". It has very minor radiation shielding." + desc = "It's a high visibility jumpskirt given to those engineers insane enough to achieve the rank of \"Chief Engineer\". Made from fire resistant materials." name = "chief engineer's jumpskirt" icon_state = "chiefengineer_skirt" item_state = "gy_suit" @@ -46,7 +46,7 @@ dying_key = DYE_REGISTRY_JUMPSKIRT /obj/item/clothing/under/rank/engineering/engineer - desc = "It's an orange high visibility jumpsuit worn by engineers. It has minor radiation shielding." + desc = "It's an orange high visibility jumpsuit worn by engineers. Made from fire resistant materials." name = "engineer's jumpsuit" icon_state = "engine" item_state = "engi_suit" @@ -55,13 +55,13 @@ /obj/item/clothing/under/rank/engineering/engineer/hazard name = "engineer's hazard jumpsuit" - desc = "A high visibility jumpsuit made from heat and radiation resistant materials." + desc = "A high visibility jumpsuit. Made from fire resistant materials." icon_state = "hazard" item_state = "syndicate-orange" alt_covers_chest = TRUE /obj/item/clothing/under/rank/engineering/engineer/skirt - desc = "It's an orange high visibility jumpskirt worn by engineers. It has minor radiation shielding." + desc = "It's an orange high visibility jumpskirt worn by engineers. Made from fire resistant materials." name = "engineer's jumpskirt" icon_state = "engine_skirt" item_state = "engi_suit" From 85d66c77e71ab96d0b5014cf3e0960857ae77d98 Mon Sep 17 00:00:00 2001 From: XeonMations Date: Mon, 9 Sep 2024 19:24:29 +0300 Subject: [PATCH 09/42] target acquired --- .../dcs/signals/signals_obj/signals_object.dm | 3 + code/__DEFINES/devices.dm | 1 + code/__DEFINES/reactions.dm | 5 ++ code/__DEFINES/traits/declarations.dm | 22 ++++++- code/controllers/subsystem/radiation.dm | 2 +- code/datums/components/irradiated.dm | 12 ++-- code/datums/components/radiation_countdown.dm | 4 +- .../diseases/advance/symptoms/radiation.dm | 15 +++-- .../elements/radiation_protected_clothing.dm | 2 +- code/datums/elements/rust.dm | 3 - code/game/machinery/computer/dna_console.dm | 19 ++++-- .../circuitboards/machine_circuitboards.dm | 12 ---- code/game/objects/items/debug_items.dm | 2 +- .../objects/items/devices/geiger_counter.dm | 8 --- code/game/objects/items/devices/scanners.dm | 2 +- .../objects/items/devices/traitordevices.dm | 4 +- code/game/objects/items/storage/boxes.dm | 1 - code/modules/admin/admin_verbs.dm | 1 - code/modules/admin/verbs/debug.dm | 57 ------------------ code/modules/admin/verbs/mapping.dm | 1 - .../antagonists/clock_cult/mobs/eminence.dm | 3 - .../atmospherics/gasmixtures/reactions.dm | 6 +- code/modules/cargo/exports/large_objects.dm | 5 -- code/modules/cargo/packs.dm | 10 --- code/modules/clothing/head/jobs.dm | 14 ++--- code/modules/clothing/spacesuits/hardsuit.dm | 38 ------------ .../modules/clothing/suits/reactive_armour.dm | 3 - .../holoparasite/holoparasite_damage.dm | 6 -- code/modules/mob/living/carbon/human/human.dm | 1 - .../mob/living/carbon/human/species.dm | 2 +- code/modules/mob/living/carbon/life.dm | 24 +------- .../mob/living/carbon/monkey/monkey.dm | 3 - code/modules/mob/transform_procs.dm | 4 -- code/modules/pool/pool.dm | 2 +- code/modules/power/gravitygenerator.dm | 6 +- code/modules/power/singularity/singularity.dm | 1 - code/modules/power/supermatter/supermatter.dm | 14 ++--- .../supermatter/supermatter_delamination.dm | 2 - .../projectiles/projectile/energy/ebow.dm | 1 - .../projectile/energy/nuclear_particle.dm | 39 ++---------- .../chemistry/reagents/alcohol_reagents.dm | 2 +- .../chemistry/reagents/drink_reagents.dm | 3 +- .../chemistry/reagents/medicine_reagents.dm | 2 +- .../chemistry/reagents/other_reagents.dm | 2 +- .../chemistry/reagents/toxin_reagents.dm | 4 +- .../research/designs/machine_designs.dm | 8 --- code/modules/security/genpop.dm | 2 +- code/modules/surgery/organs/lungs.dm | 10 +-- .../traits/xenoartifact_malfunctions.dm | 4 +- sound/effects/wounds/sizzle1.ogg | Bin 0 -> 52702 bytes sound/effects/wounds/sizzle2.ogg | Bin 0 -> 28436 bytes 51 files changed, 105 insertions(+), 292 deletions(-) create mode 100644 sound/effects/wounds/sizzle1.ogg create mode 100644 sound/effects/wounds/sizzle2.ogg diff --git a/code/__DEFINES/dcs/signals/signals_obj/signals_object.dm b/code/__DEFINES/dcs/signals/signals_obj/signals_object.dm index a8f84509c1816..dd501f9d0b6f0 100644 --- a/code/__DEFINES/dcs/signals/signals_obj/signals_object.dm +++ b/code/__DEFINES/dcs/signals/signals_obj/signals_object.dm @@ -32,3 +32,6 @@ ///Called when a payment component changes value #define COMSIG_OBJ_ATTEMPT_CHARGE_CHANGE "obj_attempt_simple_charge_change" +/// from /datum/component/supermatter_crystal/proc/consume() +/// called on the thing consumed, passes the thing which consumed it +#define COMSIG_SUPERMATTER_CONSUMED "sm_consumed_this" diff --git a/code/__DEFINES/devices.dm b/code/__DEFINES/devices.dm index 5aa3279722f11..7086e9f649bcf 100644 --- a/code/__DEFINES/devices.dm +++ b/code/__DEFINES/devices.dm @@ -1,5 +1,6 @@ // Role disk defines +#define DISK_POWER (1<<0) #define DISK_ATMOS (1<<1) #define DISK_MED (1<<2) #define DISK_CHEM (1<<3) diff --git a/code/__DEFINES/reactions.dm b/code/__DEFINES/reactions.dm index d3358c9dacb24..11fbdcd3b86ae 100644 --- a/code/__DEFINES/reactions.dm +++ b/code/__DEFINES/reactions.dm @@ -60,3 +60,8 @@ /// Maximum range a radiation pulse is allowed to be from a gas reaction. #define GAS_REACTION_MAXIMUM_RADIATION_PULSE_RANGE 20 + +/// A scaling factor for the range of radiation pulses produced by tritium fires. +#define TRITIUM_RADIATION_RANGE_DIVISOR 0.5 +/// The threshold of the tritium combustion's radiation. Lower values means it will be able to penetrate through more structures. +#define TRITIUM_RADIATION_THRESHOLD 0.3 diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm index 8e5d0d5446fd5..979a8a33ddce0 100644 --- a/code/__DEFINES/traits/declarations.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -66,7 +66,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_RESISTCOLD "resist_cold" #define TRAIT_RESISTHIGHPRESSURE "resist_high_pressure" #define TRAIT_RESISTLOWPRESSURE "resist_low_pressure" -#define TRAIT_RADIMMUNE "rad_immunity" #define TRAIT_VIRUSIMMUNE "virus_immunity" #define TRAIT_PIERCEIMMUNE "pierce_immunity" #define TRAIT_NODISMEMBER "dismember_immunity" @@ -297,4 +296,25 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// Disables the floating animation. See above. #define TRAIT_NO_FLOATING_ANIM "no-floating-animation" + +// Radiation defines + +/// Marks that this object is irradiated +#define TRAIT_IRRADIATED "iraddiated" + +/// Immune to being irradiated +#define TRAIT_RADIMMUNE "rad_immunity" + +/// Harmful radiation effects, the toxin damage and the burns, will not occur while this trait is active +#define TRAIT_HALT_RADIATION_EFFECTS "halt_radiation_effects" + +/// This clothing protects the user from radiation. +/// This should not be used on clothing_traits, but should be applied to the clothing itself. +#define TRAIT_RADIATION_PROTECTED_CLOTHING "radiation_protected_clothing" + +/// Whether or not this item will allow the radiation SS to go through standard +/// radiation processing as if this wasn't already irradiated. +/// Basically, without this, COMSIG_IN_RANGE_OF_IRRADIATION won't fire once the object is irradiated. +#define TRAIT_BYPASS_EARLY_IRRADIATED_CHECK "radiation_bypass_early_irradiated_check" + // END TRAIT DEFINES diff --git a/code/controllers/subsystem/radiation.dm b/code/controllers/subsystem/radiation.dm index 4d0e580aff82a..c714c413af79a 100644 --- a/code/controllers/subsystem/radiation.dm +++ b/code/controllers/subsystem/radiation.dm @@ -73,7 +73,7 @@ SUBSYSTEM_DEF(radiation) if(pulse_information.chance < 100) // Prevents log(0) runtime if chance is 100% intensity = -log(1 - pulse_information.chance / 100) * (1 + pulse_information.max_range / 2) ** 2 - perceived_intensity = intensity * INVERSE((1 + get_dist_euclidean(source, target)) ** 2) // Diminishes over range. + perceived_intensity = intensity * INVERSE((1 + get_dist_euclidian(source, target)) ** 2) // Diminishes over range. perceived_intensity *= (current_insulation - pulse_information.threshold) * INVERSE(1 - pulse_information.threshold) // Perceived intensity decreases as objects that absorb radiation block its trajectory. perceived_chance = 100 * (1 - NUM_E ** -perceived_intensity) else diff --git a/code/datums/components/irradiated.dm b/code/datums/components/irradiated.dm index 641b331bdbb9d..3d538a23c7fc1 100644 --- a/code/datums/components/irradiated.dm +++ b/code/datums/components/irradiated.dm @@ -131,12 +131,12 @@ var/obj/affected_limb = human_parent.get_bodypart(ran_zone()) human_parent.visible_message( - span_boldwarning("[human_parent]'s [affected_limb.name] bubbles unnaturally, then bursts into blisters!"), - span_boldwarning("Your [affected_limb.name] bubbles unnaturally, then bursts into blisters!"), + "[human_parent]'s [affected_limb.name] bubbles unnaturally, then bursts into blisters!", + "Your [affected_limb.name] bubbles unnaturally, then bursts into blisters!", ) if (human_parent.is_blind()) - to_chat(human_parent, span_boldwarning("Your [affected_limb.name] feels like it's bubbling, then burns like hell!")) + to_chat(human_parent, "Your [affected_limb.name] feels like it's bubbling, then burns like hell!") human_parent.apply_damage(RADIATION_BURN_SPLOTCH_DAMAGE, BURN, affected_limb) playsound( @@ -170,7 +170,7 @@ if (isitem(parent)) qdel(src) - return COMPONENT_CLEANED + return TRUE COOLDOWN_START(src, clean_cooldown, RADIATION_CLEAN_IMMUNITY_TIME) @@ -179,10 +179,10 @@ if (isliving(source)) var/mob/living/living_source = source - to_chat(user, span_boldannounce("[icon2html(geiger_counter, user)] Subject is irradiated. Contamination traces back to roughly [DisplayTimeText(world.time - beginning_of_irradiation, 5)] ago. Current toxin levels: [living_source.getToxLoss()].")) + to_chat(user, "[icon2html(geiger_counter, user)] Subject is irradiated. Contamination traces back to roughly [DisplayTimeText(world.time - beginning_of_irradiation, 5)] ago. Current toxin levels: [living_source.getToxLoss()].") else // In case the green wasn't obvious enough... - to_chat(user, span_boldannounce("[icon2html(geiger_counter, user)] Target is irradiated.")) + to_chat(user, "[icon2html(geiger_counter, user)] Target is irradiated.") return COMSIG_GEIGER_COUNTER_SCAN_SUCCESSFUL diff --git a/code/datums/components/radiation_countdown.dm b/code/datums/components/radiation_countdown.dm index dfb77d360af4c..09a9ea7ac16b6 100644 --- a/code/datums/components/radiation_countdown.dm +++ b/code/datums/components/radiation_countdown.dm @@ -20,7 +20,7 @@ time_added = world.time - to_chat(parent, span_userdanger("The air around you feels warm...perhaps you should go somewhere else.")) + to_chat(parent, "The air around you feels warm...perhaps you should go somewhere else.") start_deletion_timer() @@ -29,7 +29,7 @@ /datum/component/radiation_countdown/proc/remove_self() if (!HAS_TRAIT(parent, TRAIT_IRRADIATED)) - to_chat(parent, span_notice("The air here feels safer.")) + to_chat(parent, "The air here feels safer.") qdel(src) diff --git a/code/datums/diseases/advance/symptoms/radiation.dm b/code/datums/diseases/advance/symptoms/radiation.dm index 7b2c63d3a532d..f4acd5d789ebc 100644 --- a/code/datums/diseases/advance/symptoms/radiation.dm +++ b/code/datums/diseases/advance/symptoms/radiation.dm @@ -42,7 +42,7 @@ /datum/symptom/radiation/proc/radiate(mob/living/carbon/M) to_chat(M, "You feel a wave of pain throughout your body!") - M.radiation += 75 * power + ADD_TRAIT(M, TRAIT_IRRADIATED, "radiation symptom") return 1 /datum/symptom/radconversion @@ -86,13 +86,12 @@ return var/mob/living/M = A.affected_mob if(A.stage >= 4) - if(M.radiation) - M.radiation -= max(M.radiation * 0.05, min(10, M.radiation)) + if(HAS_TRAIT(M, TRAIT_IRRADIATED)) + REMOVE_TRAIT(M, TRAIT_IRRADIATED, "radconversion symptom") M.take_overall_damage(2) - if(prob(5)) - if(M.stat != DEAD) - to_chat(M, "A tear opens in your flesh!") - M.add_splatter_floor() + if(M.stat != DEAD) + to_chat(M, "A tear opens in your flesh!") + M.add_splatter_floor() if(M.getToxLoss() && toxheal) M.adjustToxLoss(-2, forced = TRUE) //this is removing foreign contaminants, it's not a toxinheal drug. of course its safe for slimes M.take_overall_damage(1) @@ -105,5 +104,5 @@ M.take_overall_damage(burn = 2) //this uses burn, so as not to make it so you can heal brute to heal all the damage types this deals, and it isn't a no-brainer to use with Pituitary if(prob(5) && M.stat != DEAD) to_chat(M, "A nasty rash appears on your skin!") - else if(prob(2) && ((M.getCloneLoss() && cellheal) || (M.getToxLoss() && toxheal) || M.radiation) && M.stat != DEAD) + else if(prob(2) && ((M.getCloneLoss() && cellheal) || (M.getToxLoss() && toxheal) || HAS_TRAIT(M, TRAIT_IRRADIATED)) && M.stat != DEAD) to_chat(M, "You feel a tingling sensation") diff --git a/code/datums/elements/radiation_protected_clothing.dm b/code/datums/elements/radiation_protected_clothing.dm index 152ed26e26991..c74614a745fea 100644 --- a/code/datums/elements/radiation_protected_clothing.dm +++ b/code/datums/elements/radiation_protected_clothing.dm @@ -22,4 +22,4 @@ /datum/element/radiation_protected_clothing/proc/on_examine(datum/source, mob/user, list/examine_text) SIGNAL_HANDLER - examine_text += span_notice("A patch with a hazmat sign on the side suggests it would protect you from radiation.") + examine_text += "A patch with a hazmat sign on the side suggests it would protect you from radiation." diff --git a/code/datums/elements/rust.dm b/code/datums/elements/rust.dm index 46526ab89cdf3..09ad9d7942dc6 100644 --- a/code/datums/elements/rust.dm +++ b/code/datums/elements/rust.dm @@ -58,9 +58,6 @@ user.balloon_alert(user, "You start scraping off the rust...") if(!do_after(user, 2 SECONDS * item.toolspeed, target = source)) return - if(istype(item, /obj/item/wirebrush/advanced)) - var/obj/item/wirebrush/advanced/brush = item - brush.irradiate(user) else user.balloon_alert(user, "Sucessfully scraped off the rust!") Detach(source) diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm index eb4918e339e22..8f1bae1ba0964 100644 --- a/code/game/machinery/computer/dna_console.dm +++ b/code/game/machinery/computer/dna_console.dm @@ -28,6 +28,9 @@ /// Flag for the mutation ref search system. Search will include advanced injector mutations #define SEARCH_ADV_INJ 8 +#define GENETIC_DAMAGE_PULSE_UNIQUE_IDENTITY "ui" +#define GENETIC_DAMAGE_PULSE_UNIQUE_FEATURES "uf" + /// Boilerplate define for whenever a cooldown is upgraded. /// This will recalculate the current timeout if the given cooldown is currently active. #define CALCULATE_UPGRADED_TIMEOUT(cd_index, to_index, new_length) \ @@ -119,6 +122,8 @@ /// Index of the enzyme being modified during delayed enzyme pulse operations var/genetic_damage_pulse_index = 0 + /// Which dna string to edit with the pulse + var/genetic_damage_pulse_type /// World time when the enzyme pulse should complete COOLDOWN_DECLARE(genetic_damage_pulse_timer) @@ -1226,10 +1231,11 @@ return var/type = params["type"] + genetic_damage_pulse_type = type var/obj/item/dnainjector/timed/I switch(type) - if("ui") + if(GENETIC_DAMAGE_PULSE_UNIQUE_IDENTITY) // GUARD CHECK - There's currently no way to save partial genetic data. // However, if this is the case, we can't make a complete injector and // this catches that edge case @@ -1370,8 +1376,10 @@ // Set the appropriate timer and index to pulse. This is then managed // later on in process() + var/type = params["type"] + genetic_damage_pulse_type = type var/len = length_char(scanner_occupant.dna.uni_identity) - COOLDOWN_START(src, genetic_damage_pulse_timer, radduration * 10) + COOLDOWN_START(src, genetic_damage_pulse_timer, pulse_duration * 10) genetic_damage_pulse_index = WRAP(text2num(params["index"]), 1, len + 1) START_PROCESSING(SSobj, src) return @@ -1588,7 +1596,7 @@ var/damage_increase = rand(100/(connected_scanner.damage_coeff ** 2),250/(connected_scanner.damage_coeff ** 2)) switch(type) - if("ui") + if(GENETIC_DAMAGE_PULSE_UNIQUE_IDENTITY) // GUARD CHECK - There's currently no way to save partial genetic data. // However, if this is the case, we can't make a complete injector and // this catches that edge case @@ -2085,13 +2093,13 @@ // GUARD CHECK - Can we genetically modify the occupant? Includes scanner // operational guard checks. // If we can't, abort the procedure. - if(!can_modify_occupant()) + if(!can_modify_occupant() || ((genetic_damage_pulse_type != GENETIC_DAMAGE_PULSE_UNIQUE_IDENTITY) && (genetic_damage_pulse_type != GENETIC_DAMAGE_PULSE_UNIQUE_FEATURES))) genetic_damage_pulse_index = 0 STOP_PROCESSING(SSobj, src) return var/len = length_char(scanner_occupant.dna.uni_identity) - var/num = randomize_GENETIC_DAMAGE_accuracy(genetic_damage_pulse_index, pulse_duration + (connected_scanner.precision_coeff ** 2), len) //Each manipulator level above 1 makes randomization as accurate as selected time + manipulator lvl^2 //Value is this high for the same reason as with laser - not worth the hassle of upgrading if the bonus is low + var/num = randomize_GENETIC_DAMAGE_accuracy(genetic_damage_pulse_index, pulse_duration + (connected_scanner.precision_coeff ** 2), len) //Each manipulator level above 1 makes randomization as accurate as selected time + manipulator lvl^2 //Value is this high for the same reason as with laser - not worth the hassle of upgrading if the bonus is low var/hex = copytext_char(scanner_occupant.dna.uni_identity, num, num + 1) hex = scramble(hex, pulse_strength, pulse_duration) @@ -2099,6 +2107,7 @@ scanner_occupant.updateappearance(mutations_overlay_update = 1) genetic_damage_pulse_index = 0 + genetic_damage_pulse_type = null STOP_PROCESSING(SSobj, src) return diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index cc63d49ef1d1a..371a35b5fdd8f 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -270,18 +270,6 @@ icon_state = "engineering" build_path = /obj/machinery/rnd/production/protolathe/department/engineering -/obj/item/circuitboard/machine/rad_collector - name = "radiation collector (Machine Board)" - icon_state = "engineering" - build_path = /obj/machinery/power/rad_collector - req_components = list( - /obj/item/stack/cable_coil = 5, - /obj/item/stock_parts/matter_bin = 1, - /obj/item/stack/sheet/plasmarglass = 2, - /obj/item/stock_parts/capacitor = 1, - /obj/item/stock_parts/manipulator = 1) - needs_anchored = FALSE - /obj/item/circuitboard/machine/rtg name = "RTG (Machine Board)" icon_state = "engineering" diff --git a/code/game/objects/items/debug_items.dm b/code/game/objects/items/debug_items.dm index 1632687cd033c..d3343f5385052 100644 --- a/code/game/objects/items/debug_items.dm +++ b/code/game/objects/items/debug_items.dm @@ -239,7 +239,7 @@ /obj/item/storage/backpack/debug/ComponentInitialize() . = ..() - AddComponent(/datum/component/rad_insulation, _amount = RAD_FULL_INSULATION, contamination_proof = TRUE) //please datum mats no more cancer + AddComponent(/datum/element/radiation_protected_clothing) var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.allow_big_nesting = TRUE STR.max_w_class = WEIGHT_CLASS_GIGANTIC diff --git a/code/game/objects/items/devices/geiger_counter.dm b/code/game/objects/items/devices/geiger_counter.dm index 3751e54295a09..a1d91c1e2c1eb 100644 --- a/code/game/objects/items/devices/geiger_counter.dm +++ b/code/game/objects/items/devices/geiger_counter.dm @@ -97,8 +97,6 @@ to_chat(user, "[icon2html(src, user)] [isliving(target) ? "Subject" : "Target"] is free of radioactive contamination.") /obj/item/geiger_counter/AltClick(mob/living/user) - . = ..() - (mob/living/user) if(!scanning) to_chat(usr, "[src] must be on to reset its radiation level!") return FALSE @@ -106,9 +104,3 @@ last_perceived_radiation_danger = null update_icon() return TRUE - -#undef RAD_LEVEL_NORMAL -#undef RAD_LEVEL_MODERATE -#undef RAD_LEVEL_HIGH -#undef RAD_LEVEL_VERY_HIGH -#undef RAD_LEVEL_CRITICAL diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 69f3420431a67..9915388854538 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -259,7 +259,7 @@ GENE SCANNER message += "\tBrain Activity Level: [(200 - M.getOrganLoss(ORGAN_SLOT_BRAIN))/2]%." if(HAS_TRAIT(M, TRAIT_IRRADIATED)) - render_list += "Subject is irradiated. Supply toxin healing.\n" + message += "Subject is irradiated. Supply toxin healing.\n" if(advanced && M.hallucinating()) message += "\tSubject is hallucinating." diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index 6af096f8ac6bc..be1d29c6d5f52 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -85,7 +85,7 @@ effective or pretty fucking useless. return var/mob/living/carbon/human/human_target = M if(istype(human_target) && !used && SSradiation.wearing_rad_protected_clothing(human_target)) //intentionally not checking for TRAIT_RADIMMUNE here so that tatortot can still fuck up and waste their cooldown. - to_chat(user, span_warning("[M]'s clothing is fully protecting [M.p_them()] from irradiation!")) + to_chat(user, "[M]'s clothing is fully protecting [M.p_them()] from irradiation!") return if(!used) log_combat(user, M, "irradiated", src) @@ -100,7 +100,7 @@ effective or pretty fucking useless. if(intensity >= 5) M.apply_effect(round(intensity/0.075), EFFECT_UNCONSCIOUS) return - to_chat(user, span_warning("The radioactive microlaser is still recharging.")) + to_chat(user, "The radioactive microlaser is still recharging.") /obj/item/healthanalyzer/rad_laser/proc/handle_cooldown(cooldown) spawn(cooldown) diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index 738f84b630de7..b1c57fa17dcb7 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -1202,7 +1202,6 @@ /obj/item/storage/box/material/ComponentInitialize() . = ..() - AddComponent(/datum/component/rad_insulation, _amount = RAD_FULL_INSULATION, contamination_proof = TRUE) //please datum mats no more cancer var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 1000 STR.max_w_class = WEIGHT_CLASS_GIGANTIC diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 9ff0afaa39ec6..240adada714d1 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -264,7 +264,6 @@ GLOBAL_LIST_INIT(admin_verbs_hideable, list( /client/proc/Debug2, /client/proc/reload_admins, /client/proc/cmd_debug_make_powernets, - /client/proc/startSinglo, /client/proc/cmd_debug_mob_lists, /client/proc/cmd_debug_del_all, /client/proc/enable_debug_verbs, diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index ea3f0eb3df786..841e813f71083 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -579,63 +579,6 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that return dresscode -/client/proc/startSinglo() - - set category = "Debug" - set name = "Start Singularity" - set desc = "Sets up the singularity and all machines to get power flowing through the station" - - if(alert("Are you sure? This will start up the engine. Should only be used during debug!",,"Yes","No") != "Yes") - return - - for(var/obj/machinery/power/emitter/E in GLOB.machines) - if(E.anchored) - E.active = 1 - - for(var/obj/machinery/field/generator/F in GLOB.machines) - if(F.active == 0) - F.set_anchored(TRUE) - F.active = 1 - F.state = 2 - F.power = 250 - F.warming_up = 3 - F.start_fields() - F.update_icon() - - spawn(30) - for(var/obj/machinery/the_singularitygen/G in GLOB.machines) - if(G.anchored) - var/obj/anomaly/singularity/S = new /obj/anomaly/singularity(get_turf(G), 50) -// qdel(G) - S.energy = 1750 - S.current_size = 7 - S.icon = 'icons/effects/224x224.dmi' - S.icon_state = "singularity_s7" - S.pixel_x = -96 - S.pixel_y = -96 - S.grav_pull = 0 - //S.consume_range = 3 - S.dissipate = 0 - //S.dissipate_delay = 10 - //S.dissipate_track = 0 - //S.dissipate_strength = 10 - - for(var/obj/machinery/power/rad_collector/Rad in GLOB.machines) - if(Rad.anchored) - if(!Rad.loaded_tank) - var/obj/item/tank/internals/plasma/Plasma = new/obj/item/tank/internals/plasma(Rad) - Plasma.air_contents.set_moles(GAS_PLASMA, 70) - Rad.drainratio = 0 - Rad.loaded_tank = Plasma - Plasma.forceMove(Rad) - - if(!Rad.active) - Rad.toggle_power() - - for(var/obj/machinery/power/smes/SMES in GLOB.machines) - if(SMES.anchored) - SMES.input_attempt = 1 - /client/proc/cmd_debug_mob_lists() set category = "Debug" set name = "Debug Mob Lists" diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm index e02867cb99c55..67b135113df10 100644 --- a/code/modules/admin/verbs/mapping.dm +++ b/code/modules/admin/verbs/mapping.dm @@ -31,7 +31,6 @@ GLOBAL_LIST_INIT(admin_verbs_debug_mapping, list( /client/proc/count_objects_all, /client/proc/cmd_assume_direct_control, //-errorage /client/proc/cmd_give_direct_control, - /client/proc/startSinglo, /client/proc/set_server_fps, //allows you to set the ticklag. /client/proc/cmd_admin_grantfullaccess, /client/proc/cmd_admin_areatest_all, diff --git a/code/modules/antagonists/clock_cult/mobs/eminence.dm b/code/modules/antagonists/clock_cult/mobs/eminence.dm index 276e4f2495c3f..21bc71730d3fb 100644 --- a/code/modules/antagonists/clock_cult/mobs/eminence.dm +++ b/code/modules/antagonists/clock_cult/mobs/eminence.dm @@ -70,9 +70,6 @@ /mob/living/simple_animal/eminence/start_pulling(atom/movable/AM, state, force = move_force, supress_message = FALSE) return FALSE -/mob/living/simple_animal/eminence/rad_act(amount) - return - /mob/living/simple_animal/eminence/Initialize(mapload) . = ..() GLOB.clockcult_eminence = src diff --git a/code/modules/atmospherics/gasmixtures/reactions.dm b/code/modules/atmospherics/gasmixtures/reactions.dm index f7b8bd4bea9ac..3c31f6d49aec5 100644 --- a/code/modules/atmospherics/gasmixtures/reactions.dm +++ b/code/modules/atmospherics/gasmixtures/reactions.dm @@ -141,9 +141,9 @@ item.temperature_expose(air, temperature, CELL_VOLUME) location.temperature_expose(air, temperature, CELL_VOLUME) -/proc/radiation_burn(turf/open/location, energy_released) +/proc/radiation_burn(turf/open/location, energy_released) //Most, if not all of this will be changed when we're on LINDA... atleast i hope. if(istype(location) && prob(10)) - radiation_pulse(location, max_range = min(sqrt(burned_fuel * effect_scale / TRITIUM_OXYBURN_MULTIPLIER) / TRITIUM_RADIATION_RANGE_DIVISOR, GAS_REACTION_MAXIMUM_RADIATION_PULSE_RANGE), threshold = TRITIUM_RADIATION_THRESHOLD_BASE * INVERSE(TRITIUM_RADIATION_THRESHOLD_BASE + (burned_fuel * effect_scale / TRITIUM_OXYBURN_MULTIPLIER))) + radiation_pulse(location, max_range = min(sqrt(energy_released) / TRITIUM_RADIATION_RANGE_DIVISOR, GAS_REACTION_MAXIMUM_RADIATION_PULSE_RANGE), threshold = TRITIUM_RADIATION_THRESHOLD) /datum/gas_reaction/tritfire/react(datum/gas_mixture/air, datum/holder) var/energy_released = 0 @@ -425,7 +425,7 @@ if(location) var/standard_energy = 400 * air.get_moles(GAS_PLASMA) * air.return_temperature() //Prevents putting meaningless waste gases to achieve high rads. if(prob(PERCENT(((PARTICLE_CHANCE_CONSTANT)/(reaction_energy-PARTICLE_CHANCE_CONSTANT)) + 1))) //Asymptopically approaches 100% as the energy of the reaction goes up. - location.fire_nuclear_particle(customize = TRUE, custompower = standard_energy) + location.fire_nuclear_particle() radiation_burn(location, max(2000 * 3 ** (log(10,standard_energy) - FUSION_RAD_MIDPOINT), 0)) var/new_heat_capacity = air.heat_capacity() if(new_heat_capacity > MINIMUM_HEAT_CAPACITY) diff --git a/code/modules/cargo/exports/large_objects.dm b/code/modules/cargo/exports/large_objects.dm index c5e80f845a7e9..b8b816ec7c714 100644 --- a/code/modules/cargo/exports/large_objects.dm +++ b/code/modules/cargo/exports/large_objects.dm @@ -71,11 +71,6 @@ unit_name = "field generator" export_types = list(/obj/machinery/field/generator) -/datum/export/large/collector - cost = 400 - unit_name = "radiation collector" - export_types = list(/obj/machinery/power/rad_collector) - /datum/export/large/tesla_coil cost = 450 unit_name = "tesla coil" diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 1fdd34360450f..7b9e02812e922 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -1326,16 +1326,6 @@ crate_type = /obj/structure/closet/crate/secure/engineering dangerous = TRUE -/datum/supply_pack/engine/collector - name = "Radiation Collector Crate" - desc = "Contains three radiation collectors. Useful for collecting energy off nearby Supermatter Crystals, Singularities or Teslas!" - cost = 2200 - max_supply = 4 - contains = list(/obj/machinery/power/rad_collector, - /obj/machinery/power/rad_collector, - /obj/machinery/power/rad_collector) - crate_name = "collector crate" - /datum/supply_pack/engine/sing_gen name = "Singularity Generator Crate" desc = "The key to unlocking the power of Lord Singuloth. Particle Accelerator not included." diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index bd0e3a015ecf0..5dc05fa0ac93a 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -384,21 +384,21 @@ name = "central command captain beret" desc = "A pure white beret with a Captain insignia of Central Command." icon_state = "beret_centcom_captain" - armor = list(melee = 80, bullet = 80, laser = 80, energy = 80, bomb = 80, bio = 80, rad = 80, fire = 80, acid = 80, stamina = 80, BLEED = 80) + armor = list(melee = 80, bullet = 80, laser = 80, energy = 80, bomb = 80, bio = 80, fire = 80, acid = 80, stamina = 80, BLEED = 80) strip_delay = 120 /obj/item/clothing/head/beret/ccofficer name = "central command officer beret" desc = "A black Central Command Officer beret with matching insignia." icon_state = "beret_centcom_officer" - armor = list(melee = 80, bullet = 80, laser = 80, energy = 80, bomb = 80, bio = 80, rad = 80, fire = 80, acid = 80, stamina = 80, BLEED = 80) + armor = list(melee = 80, bullet = 80, laser = 80, energy = 80, bomb = 80, bio = 80, fire = 80, acid = 80, stamina = 80, BLEED = 80) strip_delay = 120 /obj/item/clothing/head/beret/ccofficernavy name = "central command naval officer beret" desc = "A Navy beret commonly worn by Central Command Naval Officers." icon_state = "beret_centcom_officer_navy" - armor = list(melee = 80, bullet = 80, laser = 80, energy = 80, bomb = 80, bio = 80, rad = 80, fire = 80, acid = 80, stamina = 80, BLEED = 80) + armor = list(melee = 80, bullet = 80, laser = 80, energy = 80, bomb = 80, bio = 80, fire = 80, acid = 80, stamina = 80, BLEED = 80) strip_delay = 120 //For blueshields, but those aren't in so I renamed them to centcom guards @@ -406,28 +406,28 @@ name = "officer beret" desc = "A black CentCom guard's beret." icon_state = "beret_centcom_officer" - armor = list(melee = 40, bullet = 20, laser = 10, energy = 10, bomb = 10, bio = 5, rad = 5, fire = 5, acid = 30, stamina = 30, BLEED = 20) + armor = list(melee = 40, bullet = 20, laser = 10, energy = 10, bomb = 10, bio = 5, fire = 5, acid = 30, stamina = 30, BLEED = 20) strip_delay = 60 /obj/item/clothing/head/beret/ccguardnavy name = "navy officer beret" desc = "A navy CentCom guard's beret." icon_state = "beret_centcom_officer_navy" - armor = list(melee = 40, bullet = 20, laser = 10, energy = 10, bomb = 10, bio = 5, rad = 5, fire = 5, acid = 30, stamina = 30, BLEED = 20) + armor = list(melee = 40, bullet = 20, laser = 10, energy = 10, bomb = 10, bio = 5, fire = 5, acid = 30, stamina = 30, BLEED = 20) strip_delay = 60 /obj/item/clothing/head/beret/sergeant name = "spacepol sergeant beret" desc = "A navy SpacePol sergeant's beret." icon_state = "beret_centcom_officer_navy" - armor = list(melee = 40, bullet = 20, laser = 10, energy = 10, bomb = 10, bio = 5, rad = 5, fire = 5, acid = 30, stamina = 30, BLEED = 20) + armor = list(melee = 40, bullet = 20, laser = 10, energy = 10, bomb = 10, bio = 5, fire = 5, acid = 30, stamina = 30, BLEED = 20) strip_delay = 60 /obj/item/clothing/head/beret/captain name = "captain beret" desc = "A lovely blue Captain beret with a gold and white insignia." icon_state = "beret_captain" - armor = list(melee = 50, bullet = 30, laser = 20, energy = 30, bomb = 15, bio = 10, rad = 10, fire = 10, acid = 60, stamina = 40, BLEED = 20) + armor = list(melee = 50, bullet = 30, laser = 20, energy = 30, bomb = 15, bio = 10, fire = 10, acid = 60, stamina = 40, BLEED = 20) strip_delay = 90 diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index b2c6a910b9e77..c08e61944aaa0 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -24,25 +24,13 @@ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR visor_flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH clothing_flags = NOTCONSUMABLE | STOPSPRESSUREDAMAGE | THICKMATERIAL | SNUG_FIT | HEADINTERNALS - var/current_tick_amount = 0 - var/radiation_count = 0 - var/grace = RAD_GEIGER_GRACE_PERIOD - var/datum/looping_sound/geiger/soundloop /// If the headlamp is broken, used by lighteater var/light_broken = FALSE -/obj/item/clothing/head/helmet/space/hardsuit/Initialize(mapload) - . = ..() - soundloop = new(src, FALSE, TRUE) - soundloop.volume = 5 - START_PROCESSING(SSobj, src) - /obj/item/clothing/head/helmet/space/hardsuit/Destroy() if(!QDELETED(suit)) qdel(suit) suit = null - QDEL_NULL(soundloop) - STOP_PROCESSING(SSobj, src) return ..() /obj/item/clothing/head/helmet/space/hardsuit/attack_self(mob/user) @@ -62,8 +50,6 @@ ..() if(suit) suit.RemoveHelmet() - if(user.client) - soundloop.stop(user) /obj/item/clothing/head/helmet/space/hardsuit/item_action_slot_check(slot) if(slot == ITEM_SLOT_HEAD) @@ -74,12 +60,8 @@ if(slot != ITEM_SLOT_HEAD) if(suit) suit.RemoveHelmet() - if(user.client) - soundloop.stop(user) else qdel(src) - else if(user.client) - soundloop.start(user) /obj/item/clothing/head/helmet/space/hardsuit/proc/toggle_hud(mob/user) var/datum/component/team_monitor/worn/monitor = GetComponent(/datum/component/team_monitor/worn) @@ -97,26 +79,6 @@ if(msg && ishuman(wearer)) wearer.show_message("[icon2html(src, wearer)][msg]", MSG_VISUAL) -/obj/item/clothing/head/helmet/space/hardsuit/rad_act(amount) - . = ..() - if(amount <= RAD_BACKGROUND_RADIATION) - return - current_tick_amount += amount - -/obj/item/clothing/head/helmet/space/hardsuit/process(delta_time) - radiation_count = LPFILTER(radiation_count, current_tick_amount, delta_time, RAD_GEIGER_RC) - - if(current_tick_amount) - grace = RAD_GEIGER_GRACE_PERIOD - else - grace -= delta_time - if(grace <= 0) - radiation_count = 0 - - current_tick_amount = 0 - - soundloop.last_radiation = radiation_count - /obj/item/clothing/head/helmet/space/hardsuit/emp_act(severity) . = ..() display_visor_message("[severity > 1 ? "Light" : "Strong"] electromagnetic pulse detected!") diff --git a/code/modules/clothing/suits/reactive_armour.dm b/code/modules/clothing/suits/reactive_armour.dm index 993f0b7e2234a..8f445695b9863 100644 --- a/code/modules/clothing/suits/reactive_armour.dm +++ b/code/modules/clothing/suits/reactive_armour.dm @@ -133,13 +133,11 @@ cooldown_message = "The reactive teleport system is still recharging! It fails to activate!" reactivearmor_cooldown_duration = 10 SECONDS var/tele_range = 6 - var/rad_amount= 15 /obj/item/clothing/suit/armor/reactive/teleport/reactive_activation(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", damage = 0, attack_type = MELEE_ATTACK) owner.visible_message("The reactive teleport system flings [owner] clear of [attack_text], shutting itself off in the process!") playsound(get_turf(owner),'sound/magic/blink.ogg', 100, 1) do_teleport(teleatom = owner, destination = get_turf(owner), no_effects = TRUE, precision = tele_range, channel = TELEPORT_CHANNEL_BLUESPACE) - owner.rad_act(rad_amount) return TRUE /obj/item/clothing/suit/armor/reactive/teleport/emp_activation(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", damage = 0, attack_type = MELEE_ATTACK) @@ -148,7 +146,6 @@ playsound(get_turf(owner), 'sound/machines/buzz-sigh.ogg', 50, 1) playsound(get_turf(owner), 'sound/magic/blink.ogg', 100, 1) do_teleport(teleatom = src, destination = get_turf(owner), no_effects = TRUE, precision = tele_range, channel = TELEPORT_CHANNEL_BLUESPACE) - owner.rad_act(rad_amount) return FALSE //you didn't actually evade the attack now did you //Fire diff --git a/code/modules/holoparasite/holoparasite_damage.dm b/code/modules/holoparasite/holoparasite_damage.dm index 4b273f893617a..50bc33af4a306 100644 --- a/code/modules/holoparasite/holoparasite_damage.dm +++ b/code/modules/holoparasite/holoparasite_damage.dm @@ -114,12 +114,6 @@ /mob/living/simple_animal/hostile/holoparasite/fire_act() return FALSE -/** - * A holoparasite's crystalline structure is unaffected by radiation. - */ -/mob/living/simple_animal/hostile/holoparasite/rad_act(amount) - return FALSE - /** * An un-manifested holoparasite will be immune to EMPs, i.e in the case of a dextrous holoparasite. */ diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index f9c26acec182c..e470cd546d59b 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -96,7 +96,6 @@ tab_data["Toxin Levels"] = GENERATE_STAT_TEXT("[getToxLoss()]") tab_data["Burn Severity"] = GENERATE_STAT_TEXT("[getFireLoss()]") tab_data["Brute Trauma"] = GENERATE_STAT_TEXT("[getBruteLoss()]") - tab_data["Radiation Levels"] = GENERATE_STAT_TEXT("[radiation] rad") tab_data["Body Temperature"] = GENERATE_STAT_TEXT("[bodytemperature-T0C] degrees C ([bodytemperature*1.8-459.67] degrees F)") //Diseases diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 706397d287314..d9ea56ce8dd66 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1498,7 +1498,7 @@ GLOBAL_LIST_EMPTY(features_by_species) * - time_since_irradiated: The amount of time since the mob was first irradiated * - delta_time: The amount of time that has passed since the last tick */ -/datum/species/proc/handle_radiation(mob/living/carbon/human/source, time_since_irradiated, delta_time) +/datum/species/proc/handle_radiation(mob/living/carbon/human/H, time_since_irradiated, delta_time) if(time_since_irradiated > RAD_MOB_KNOCKDOWN && DT_PROB(RAD_MOB_KNOCKDOWN_PROB, delta_time)) if(!H.IsParalyzed()) H.emote("collapse") diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 2c0d4819aa5dd..0e782dd54b31a 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -336,32 +336,12 @@ if(dna.temporary_mutations[mut] < world.time) if(mut == UI_CHANGED) if(dna.previous["UI"]) - dna.unique_identity = merge_text(dna.unique_identity,dna.previous["UI"]) + dna.uni_identity = merge_text(dna.uni_identity,dna.previous["UI"]) updateappearance(mutations_overlay_update=1) dna.previous.Remove("UI") dna.temporary_mutations.Remove(mut) continue - if(mut == UF_CHANGED) - if(dna.previous["UF"]) - dna.unique_features = merge_text(dna.unique_features,dna.previous["UF"]) - updateappearance(mutcolor_update=1, mutations_overlay_update=1) - dna.previous.Remove("UF") - dna.temporary_mutations.Remove(mut) - continue - if(mut == UE_CHANGED) - if(dna.previous["name"]) - real_name = dna.previous["name"] - name = real_name - dna.previous.Remove("name") - if(dna.previous["UE"]) - dna.unique_enzymes = dna.previous["UE"] - dna.previous.Remove("UE") - if(dna.previous["blood_type"]) - dna.blood_type = dna.previous["blood_type"] - dna.previous.Remove("blood_type") - dna.temporary_mutations.Remove(mut) - continue - for(var/datum/mutation/human/HM in dna.mutations) + for(var/datum/mutation/HM in dna.mutations) if(HM?.timed) dna.remove_mutation(HM.type) diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 3d67252925f1c..f1e5cac628470 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -266,9 +266,6 @@ CREATION_TEST_IGNORE_SUBTYPES(/mob/living/carbon/monkey) if(!QDELETED(src)) qdel(src) -/mob/living/carbon/monkey/tumor/handle_mutations_and_radiation() - return - /mob/living/carbon/monkey/tumor/has_dna() return FALSE diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 69bd4086c1916..d7f3aee06b493 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -74,7 +74,6 @@ O.adjustFireLoss(getFireLoss(), 0) O.setOrganLoss(ORGAN_SLOT_BRAIN, getOrganLoss(ORGAN_SLOT_BRAIN)) O.updatehealth() - O.radiation = radiation //move implants to new mob if(tr_flags & TR_KEEPIMPLANTS) @@ -224,8 +223,6 @@ O.adjustFireLoss(getFireLoss(), 0) O.setOrganLoss(ORGAN_SLOT_BRAIN, getOrganLoss(ORGAN_SLOT_BRAIN)) O.updatehealth() - O.radiation = radiation - //move implants to new mob if(tr_flags & TR_KEEPIMPLANTS) for(var/obj/item/implant/IMP as anything in implants) @@ -371,7 +368,6 @@ O.adjustFireLoss(getFireLoss(), 0) O.adjustOrganLoss(ORGAN_SLOT_BRAIN, getOrganLoss(ORGAN_SLOT_BRAIN)) O.updatehealth() - O.radiation = radiation //move implants to new mob if(tr_flags & TR_KEEPIMPLANTS) diff --git a/code/modules/pool/pool.dm b/code/modules/pool/pool.dm index 9639fa63eb569..7c7d1fc7ba196 100644 --- a/code/modules/pool/pool.dm +++ b/code/modules/pool/pool.dm @@ -52,7 +52,7 @@ Place a pool filter somewhere in the pool if you want people to be able to modif /turf/open/indestructible/sound/pool/Entered(atom/movable/AM) . = ..() - AM.wash(CLEAN_TYPE_WEAK) + AM.wash(CLEAN_WASH) if(isliving(AM)) var/datum/component/swimming/S = AM.GetComponent(/datum/component/swimming) //You can't get in the pool unless you're swimming. if(!S) diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index 1017a2e591d21..00b3b9b4b4f12 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -297,12 +297,11 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne /obj/machinery/gravity_generator/main/proc/enable() charging_state = POWER_IDLE on = TRUE - update_use_power(ACTIVE_POWER_USE) + use_power = ACTIVE_POWER_USE if (!SSticker.IsRoundInProgress()) return - soundloop.start() if (!gravity_in_level()) investigate_log("was brought online and is now producing gravity for this level.", INVESTIGATE_GRAVITY) message_admins("The gravity generator was brought online [ADMIN_VERBOSEJMP(src)]") @@ -314,12 +313,11 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne /obj/machinery/gravity_generator/main/proc/disable() charging_state = POWER_IDLE on = FALSE - update_use_power(IDLE_POWER_USE) + use_power = IDLE_POWER_USE if (!SSticker.IsRoundInProgress()) return - soundloop.stop() if (gravity_in_level()) investigate_log("was brought offline and there is now no gravity for this level.", INVESTIGATE_GRAVITY) message_admins("The gravity generator was brought offline with no backup generator. [ADMIN_VERBOSEJMP(src)]") diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index ab05035a77d48..0c0fb0a947da5 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -137,7 +137,6 @@ CREATION_TEST_IGNORE_SUBTYPES(/obj/anomaly/singularity) return time_since_act = 0 if(current_size >= STAGE_TWO) - radiation_pulse(src, min(5000, (energy*4.5)+1000), RAD_DISTANCE_COEFFICIENT*0.5) if(prob(event_chance))//Chance for it to run a special event TODO:Come up with one or two more that fit event() dissipate(delta_time) diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index c733b22eecece..c16311a26ef7a 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -823,18 +823,18 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) matter_power += 200 //Some poor sod got eaten, go ahead and irradiate people nearby. - radiation_pulse(src, max_range = 6, threshold = 0.3, chance = 30) - for(var/mob/living/L in range(10)) - investigate_log("has irradiated [key_name(L)] after consuming [AM].", INVESTIGATE_ENGINES) - if (HAS_TRAIT(near_mob, TRAIT_RADIMMUNE) || issilicon(near_mob)) + radiation_pulse(AM, max_range = 6, threshold = 0.3, chance = 30) + for(var/mob/living/near_mob in range(10)) + investigate_log("has irradiated [key_name(near_mob)] after consuming [AM].", INVESTIGATE_ENGINES) + if(HAS_TRAIT(near_mob, TRAIT_RADIMMUNE) || issilicon(near_mob)) continue if(ishuman(near_mob) && SSradiation.wearing_rad_protected_clothing(near_mob)) continue - if(L in viewers(get_turf(src))) - L.show_message("As \the [src] slowly stops resonating, you find your skin covered in new radiation burns.", 1,\ + if(near_mob in viewers(get_turf(src))) + near_mob.show_message("As \the [src] slowly stops resonating, you find your skin covered in new radiation burns.", 1,\ "The unearthly ringing subsides and you find your skin covered in new radiation burns.", MSG_AUDIBLE) else - L.show_message("An unearthly ringing and fills your ears, and you find your skin covered in new radiation burns.", MSG_AUDIBLE) + near_mob.show_message("An unearthly ringing and fills your ears, and you find your skin covered in new radiation burns.", MSG_AUDIBLE) /obj/machinery/power/supermatter_crystal/proc/disengage_field() if(QDELETED(src)) diff --git a/code/modules/power/supermatter/supermatter_delamination.dm b/code/modules/power/supermatter/supermatter_delamination.dm index dc60dff74c3c9..463859d379c43 100644 --- a/code/modules/power/supermatter/supermatter_delamination.dm +++ b/code/modules/power/supermatter/supermatter_delamination.dm @@ -47,8 +47,6 @@ //Hilariously enough, running into a closet should make you get hit the hardest. var/mob/living/carbon/human/H = mob H.hallucination += max(50, min(300, DETONATION_HALLUCINATION * sqrt(1 / (get_dist(mob, src) + 1)) ) ) - if (get_dist(victim, src) <= DETONATION_RADIATION_RANGE) - SSradiation.irradiate(victim) for(var/mob/M in GLOB.player_list) if(M.get_virtual_z_level() == supermatter_z) diff --git a/code/modules/projectiles/projectile/energy/ebow.dm b/code/modules/projectiles/projectile/energy/ebow.dm index e646332ded9c1..21d470df670f5 100644 --- a/code/modules/projectiles/projectile/energy/ebow.dm +++ b/code/modules/projectiles/projectile/energy/ebow.dm @@ -20,7 +20,6 @@ eyeblur = 10 slur = 10 knockdown = 0 - irradiate = 400 /obj/projectile/energy/bolt/radbolt/Initialize(mapload) . = ..() diff --git a/code/modules/projectiles/projectile/energy/nuclear_particle.dm b/code/modules/projectiles/projectile/energy/nuclear_particle.dm index 5ccb53ede786e..1ac349e8ff5ee 100644 --- a/code/modules/projectiles/projectile/energy/nuclear_particle.dm +++ b/code/modules/projectiles/projectile/energy/nuclear_particle.dm @@ -17,50 +17,19 @@ "purple" = "#FF00FF" ) -/obj/projectile/energy/nuclear_particle/proc/random_color_time() +/obj/projectile/energy/nuclear_particle/Initialize(mapload) + . = ..() //Random color time! var/our_color = pick(particle_colors) add_atom_colour(particle_colors[our_color], FIXED_COLOUR_PRIORITY) set_light(4, 3, particle_colors[our_color]) //Range of 4, brightness of 3 - Same range as a flashlight -/obj/projectile/energy/nuclear_particle/proc/customize(custompower) - irradiate = max(3000 * 3 ** (log(10,custompower)-FUSION_RAD_MIDPOINT),10) - var/custom_color = HSVtoRGB(hsv(clamp(log(10,custompower)-12,0,5)*256,rand(191,255),rand(191,255),255)) - add_atom_colour(custom_color, FIXED_COLOUR_PRIORITY) - set_light(4, 3, custom_color) - switch (irradiate) - if(10 to 100) - name = "pathetically weak nuclear particle" - damage = 1 - if(100 to 200) - name = "very weak nuclear particle" - damage = 2 - if(200 to 500) - name = "fairly weak nuclear particle" - damage = 4 - if(500 to 1500) - name = "slightly weak nuclear particle" - damage = 7 - if(4000 to 8000) - name = "powerful nuclear particle" - damage = 15 - if(8000 to 30000) - name = "extremely strong nuclear particle" - damage = 20 - if(30000 to INFINITY) - name = "impossibly strong nuclear particle" - damage = 30 - /obj/projectile/energy/nuclear_particle/on_hit(atom/target, blocked, pierce_hit) if (ishuman(target)) - radiation_pulse(target, max_range = 0, threshold = RAD_FULL_INSULATION) + SSradiation.irradiate(target) ..() -/atom/proc/fire_nuclear_particle(angle = rand(0,360), customize = FALSE, custompower = 1e12) //used by fusion to fire random nuclear particles. Fires one particle in a random direction. +/atom/proc/fire_nuclear_particle(angle = rand(0,360)) //used by fusion to fire random nuclear particles. Fires one particle in a random direction. var/obj/projectile/energy/nuclear_particle/P = new /obj/projectile/energy/nuclear_particle(src) - if(customize) - P.customize(custompower) - else - P.random_color_time() P.fire(angle) diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index eaf99cf4a5e5d..84257fd34b79c 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -554,7 +554,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Screwdriver" glass_desc = "A simple, yet superb mixture of Vodka and orange juice. Just the thing for the tired engineer." -/datum/reagent/consumable/ethanol/screwdrivercocktail/on_mob_life(mob/living/carbon/M) +/datum/reagent/consumable/ethanol/screwdrivercocktail/on_mob_life(mob/living/carbon/M, delta_time) if(M.mind && (M.mind.assigned_role in list(JOB_NAME_STATIONENGINEER, JOB_NAME_ATMOSPHERICTECHNICIAN, JOB_NAME_CHIEFENGINEER))) //Engineers lose radiation poisoning at a massive rate. ADD_TRAIT(M, TRAIT_HALT_RADIATION_EFFECTS, "[type]") if (HAS_TRAIT(M, TRAIT_IRRADIATED)) diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index 4d67bdd2f423d..adaeee74c4995 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -461,7 +461,8 @@ M.drowsyness = 0 M.AdjustSleeping(-40) M.adjust_bodytemperature(10 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal()) - M.radiation += 4 + if (SSradiation.can_irradiate_basic(M)) + M.AddComponent(/datum/component/irradiated) ..() . = 1 diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index c03c7ee618284..2628158604e45 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -579,7 +579,7 @@ REMOVE_TRAIT(L, TRAIT_HALT_RADIATION_EFFECTS, "[type]") return ..() -/datum/reagent/medicine/potass_iodide/on_mob_life(mob/living/carbon/M) +/datum/reagent/medicine/potass_iodide/on_mob_life(mob/living/carbon/M, delta_time) if (HAS_TRAIT(M, TRAIT_IRRADIATED)) M.adjustToxLoss(-1 * REM * delta_time) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 937097db011be..cfbba10887116 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1014,7 +1014,7 @@ /// How much tox damage to deal per tick var/tox_damage = 0.5 -/datum/reagent/uranium/on_mob_life(mob/living/carbon/M) +/datum/reagent/uranium/on_mob_life(mob/living/carbon/M, delta_time) M.adjustToxLoss(tox_damage * delta_time * REM) ..() diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index 4c2caa90ba950..cf04564e198ca 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -49,7 +49,7 @@ M.domutcheck() ..() -/datum/reagent/toxin/mutagen/on_mob_life(mob/living/carbon/C) +/datum/reagent/toxin/mutagen/on_mob_life(mob/living/carbon/C, delta_time) C.adjustToxLoss(0.5 * delta_time * REM) return ..() @@ -371,7 +371,7 @@ toxpwr = 0 process_flags = ORGANIC | SYNTHETIC -/datum/reagent/toxin/polonium/on_mob_life(mob/living/carbon/M) +/datum/reagent/toxin/polonium/on_mob_life(mob/living/carbon/M, delta_time) if (!HAS_TRAIT(M, TRAIT_IRRADIATED) && SSradiation.can_irradiate_basic(M)) M.AddComponent(/datum/component/irradiated) else diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index b1bfcdfa293d8..6522c6f96ce27 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -507,14 +507,6 @@ category = list ("Misc. Machinery") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE -/datum/design/board/rad_collector - name = "Machine Design (Radiation Collector Board)" - desc = "The circuit board for a radiation collector array." - id = "rad_collector" - build_path = /obj/item/circuitboard/machine/rad_collector - category = list ("Misc. Machinery") - departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE - /datum/design/board/grounding_rod name = "Machine Design (Grounding Rod Board)" desc = "The circuit board for a grounding rod." diff --git a/code/modules/security/genpop.dm b/code/modules/security/genpop.dm index d4b9b929abe5b..f3f69cceb74a2 100644 --- a/code/modules/security/genpop.dm +++ b/code/modules/security/genpop.dm @@ -13,7 +13,7 @@ max_integrity = 600 integrity_failure = 0.35 //Robust! It'll be tough to break... - armor = list("melee" = 50, "bullet" = 20, "laser" = 0, "energy" = 80, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 50, "stamina" = 0) + armor = list("melee" = 50, "bullet" = 20, "laser" = 0, "energy" = 80, "bomb" = 10, "bio" = 100, "fire" = 90, "acid" = 50, "stamina" = 0) anchored = TRUE idle_power_usage = 2 resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index 196b6cee4bc16..91c459b5bda95 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -289,22 +289,18 @@ // Tritium var/trit_pp = PP(breath,GAS_TRITIUM) - if (trit_pp > 50) - breather.radiation += trit_pp/2 //If you're breathing in half an atmosphere of radioactive gas, you fucked up. - else - breather.radiation += trit_pp/10 // If you're breathing in half an atmosphere of radioactive gas, you fucked up. - if (trit_pp > tritium_irradiation_moles_min && SSradiation.can_irradiate_basic(breather)) + if (trit_pp > tritium_irradiation_moles_min && SSradiation.can_irradiate_basic(H)) var/lerp_scale = min(tritium_irradiation_moles_max, trit_pp - tritium_irradiation_moles_min) / (tritium_irradiation_moles_max - tritium_irradiation_moles_min) var/chance = LERP(tritium_irradiation_probability_min, tritium_irradiation_probability_max, lerp_scale) if (prob(chance)) - breather.AddComponent(/datum/component/irradiated) + H.AddComponent(/datum/component/irradiated) gas_breathed = PP(breath,GAS_TRITIUM) if (trit_pp > 0) var/ratio = gas_breathed * 15 - breather.adjustToxLoss(clamp(ratio, MIN_TOXIC_GAS_DAMAGE, MAX_TOXIC_GAS_DAMAGE)) + H.adjustToxLoss(clamp(ratio, MIN_TOXIC_GAS_DAMAGE, MAX_TOXIC_GAS_DAMAGE)) breath.adjust_moles(GAS_TRITIUM, -gas_breathed) diff --git a/code/modules/xenoarchaeology/traits/xenoartifact_malfunctions.dm b/code/modules/xenoarchaeology/traits/xenoartifact_malfunctions.dm index 8c9847a3b6a27..9b39b5ae4ed37 100644 --- a/code/modules/xenoarchaeology/traits/xenoartifact_malfunctions.dm +++ b/code/modules/xenoarchaeology/traits/xenoartifact_malfunctions.dm @@ -136,7 +136,7 @@ flags = BLUESPACE_TRAIT | URANIUM_TRAIT | PLASMA_TRAIT /datum/xenoartifact_trait/malfunction/radioactive/on_init(obj/item/xenoartifact/X) - X.rad_act(25) + radiation_pulse(X.loc, max_range = 25, threshold = 0.3) /datum/xenoartifact_trait/malfunction/radioactive/on_item(obj/item/xenoartifact/X, atom/user, atom/item) if(istype(item, /obj/item/geiger_counter)) @@ -149,7 +149,7 @@ return TRUE /datum/xenoartifact_trait/malfunction/radioactive/activate(obj/item/xenoartifact/X) - X.rad_act(25) + radiation_pulse(X.loc, max_range = 25, threshold = 0.3) //============ // twin, makes an evil twin of the target diff --git a/sound/effects/wounds/sizzle1.ogg b/sound/effects/wounds/sizzle1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..4a3d2290181cf2fe219d0196f441420d133e0105 GIT binary patch literal 52702 zcmeFZcUY52*D!vkl7xUsNJ6NaK)?V2Llv+kp@pUpDWPdd07Fwjz`h$GASEC~K)|we zX+eU3fU8Rv1eGF9EZA05bamIZ?&JCe-RF6q-}`&7@BOapy}tjx`x@q&Idf*tJ*Ui^ zIroHZyLN2{z`)2@C~^Ov~9KLzn;~eAZ6_j z;l6s@hA;o=DTI6*%1nvDi{2};*p|4992YGJ_)386PPSrLS~08`)@0hY_}$Ta6C?LU z?oKjU9UTPw*42dV6aWGcN{FQwc}P4_;12*80N_(i)K5gYo75In(himuaaK!1jO@~) z>>-j+YB~JRjBFD@001Z;rXlmIe{qkw;joLeHb1e#A$qI*IkHNQ?~((u|DCaLcU^m3 z?Cu*TMhLYam~!3#lS9eCb5}D#7A2FU%#P_Mj!@2>PDGj3SEQk=M#$-2R?liqY;}BA zU!CvxoYp?URyA**^6;{p2@tkihKC*5cf;Z7>Ay4N*LjeY@4|*_MPS&7)#0;D>Pi!p zLw%bT84xR{3Ah#F-4*yTh3@r9>bBqLz8bcZ)-K!qy#19=a#&zW@%AYzpzWTec% zL{{xy7ZuYIeX3K`)EPh4MjvZKe??JB6}tL1Kt*(U-TyB|1(ihp_lYSQF$I`PUS3Vm zy_!IE;Zm{v$?u&qcXWAIgb{3U4QGf=AS}X6*~YhEp>+y zbVrrk;F?b-+6M01G`G)tPRWW@j{NVR)UW!YoCxJiR7s2&VO!V*+lui8}8`x z+Ha+UxKk?fhAAaX>*;CrVXbf_Ui4JCO2YzA**9pS{FnM}yt0&CbZTu!x8Jw%{#J{I z9j9;fIXqDI$i96lwi_9yEd3F2`qg#hD(pY24^t_(@OjeknKbgze7FElsiU0GPdcuC zqQY{-q((n4-_@fb-G{5Swl*p4>&(djAi;dq;(umeRr#A1*T`~AuhA}yTaD3Iv*v*t zjxSmVFivPor54j|m0FzF@ypqLEe@R6+K$;^v)UrAhe_=>i&6@e98ti6Ykf76%+kbb zCg+q^@$Z6rO}&ZLoBX$Q^Np@A&PbUit<1MuZ}Ru^4@`*|y343RGUJ0KyRyq0%FaG(s6zcG%MsG%@QHp2X%)+ z9iN@94wW7&Fm!c)N!dP*fp(NmxM$#RJq(V~+vk^?Cy(H;%sYp(g0zo6x73)=Q?w3s&DOh51cIi>$M!vEvIf6D=-ii6aZe?)dA z#SARA2LZ<(F=b@;*EV8d(Cdu{w7oQzc*Kos%2lTSX&uT9_BWdY`Wx5OAq#BQoK?A* z9{n%J5Fj5^Hk?%=b5}3%_O8?@ao&?*ccI2Xf_c>00ssu?ZuBx+4w%TFR6{L8cCpgPCFMy zDxIKg0~=)#d-mzUI^@mYmGh?MR7Hc8+l!LzuvNC(i9G1)KB5s1fJ_B?AJ~^XIao!@ zQTk7f*AnPszdQTly|?>^oqWVAd752CE3a$pu}~7a`E`p@I(MS-e}Qeh@ybeZH+QwUnIR~o}mDe>iDt8j*SHzj*FwLx0Sfg@x0k0zYhs_m7ildeN zdRpiZzi)M|ipIw0JuPNqfYO0lD2@z*FRj+v=m4hZ4c%nwr$2*rrCsTo$LchHK?vUR%P2QHo_A4dfaw*8~QL z_3V{@JVZujGZgqu>Fo)N1mg}*sca9+Urz7CQEEv__oe|aT=j8^WR^-ld8@~0sS>uf zHbRMa`UKZe2~$@(97#%)nj$WH`Sd=e|8Yi%0s@%dxSbQXm4Wm7%5DPCyR<5U2haY^yevNo+`RK}{m+t~P` zzjKxUbIIY0tIU7V)2rlra->$*>h?`n1%PdP0l>61JXvz0O3|y_=)kM{rNk0pqV&1o zlo|}1W0Fzu|5bmGSlLI6`TK-oCk_9*lz{s8Q_FvxU;b~F=7VG99RUF8Mh1i#B+0XG zrk)|>!!@IL?xI(?O-OrYJba zr1POtKuVZ$D#4+ul-i=;T=P!SsW^&KYOzX~(AuLz2~$obmhRE5geitdv3V}EQz5IZ zv2t6JC;L1VGr_{<4&!R6Y!%krF>6r7wHn56SC+~pjNuO?VYB7a;1jt1kNVrqmB_J5 zT`-KuYZwkzDh@JInrA*!wC@HCU~aMpm_{VlS}lKKcr{W}U;I@t-O4khQuT&cHEdO{ zxHY7GN;M-(R!?Fzh_4MSrF*HAnU?UM4V4lZ_nNZDYJ-xTQSGg7J!q?*ut&qc8fuG* zxL^AszPiZDqv)!qic{)t5m(tSLrLSC@2q49N=f5ugNO3Sif1FgH5AE|c(s2wC{SF)o=N?hFT>dCGZ<)m5{Rf_jq3k6>&|!Rh7#x zWOem3G&LXGYTdFC?1s1UVt%z*W&9QZCtP006;SX&~^-)KoNJ&*T(< z0hB6QZ@`7gw4hY?R_yh%Uwg(509aY$nCz?}vSp<<&9n|89)e{a0Y)a~IhVS`7Ld@1 zp)eITf{jVz=`uk`d;15OYwx|5=$x+D?)RLjqyqr@z>;$LS^x|Ts>&WMzy1gyv04-p zO9vMAYx4%+BLHx?;;byuFZPZbH#6DJt{e}qtv<@-4fJ&`P>8=@K#2dB{4Ynp#C}Qoa`4NMFNt6Fe%XJ^;WCDEko4Nu zs!e4EOOC$%nrpY9Qr`%rYkeF;(v#2L4Wn#>;Env`IaR)yp>nlwwI-vSE3L&byWc&y zZT7OQK9|;=xf^-1E-1j!efo#^bh=sIiL0P-_f7gH<)>x%eQTPS+mfxXLc>1;xrMPt z2ilE4zBbN%EIZ=qU)?#}xK)^Ru~>LK%-=u!&K_QszM!2;9;+g(3-(tH&Yj+ra6gK` z^gJJ5Z;LkoR@{f!Y_}T>%Yzx*Yi0uRuapBj#pV+8zA8}Mk@`1uy$nN8B z_?JZnzGmvj{G8v`Hab$dfUmVCYh7EBqHyAx>F95&D=tU1N9-oaHL2V+YW=01q^i$= zzsW(%*VivWXMR0O`%z=!faatmSZ!V793q3DZ9+FGDfYQupB~KUS+{_N#8zs$b5e@m zEQ;rM3FZu<6C{<7eRKt%50On!J1RSTAOP~V%DiMOxK($_XP=&pE4+v%kmoF$`gG86 zO+y{r?Iy=_uF(7rs|)=bSxi!B-DZQ zz~caaT0QYGq`3q`YYnCHcK;*a-3RreK`z?Rj>_od&3NYE8sT!bM^oUzTez4q&#if; z{y~lOED!%&65|hx78uYJF}UnY5QH<(0h{#O+~@duAcwf40Y5YC-X+#aicj!;pE6%tNd}Z708M7`CeLrk z(53Zv?y?P?D+K9!TsC+)b%)^dTceQy=J|HeGuXUcM&AZtKl(Ps`tqYzE>Ftsu${=E z>1}`3P9ysJnY??#GPf%ETC?6k0+n_D2|BqMdgiR#^Y zjloy!qdWJukBilFQ6CN?fRFb2j!7|30=76$Ukv!Uvkz}=ZEmdo68vRmEPI91t>1lq zam((hKF0VYU+dz{TbT(he>VO8!^ADUs0*)>7xG$;JZwWA`6a;WMl~ZdU5f0mTT^+l z3qKg!;YVmKpP3J*!TLCfLQ^&4W*SM}L8EUIn>5dR7~Yon6tcrTe1Dp16nrK*(;mzl zjE!j34@?L! zz%+wXTAo`T)+MDBVhpkwXtX%a%o0!IlHjRiXLk{%mkAKS_U+=jJg5cr9FpA68PDX* z%w3)P99X^JCC4mJoIB9=IR4$n%QJIN=Vsp%&{~(itV@97(R=`q^U(Rn0(ZF;d*BVd z?8KQDU#>v|`5?%MbHBJxK>{|D{7--b&TuFC0y+K~sm=&U=<6R~fPK1`@Z;?92aBDQ zvby30y~w3l9pLrzcE#_+U7f!tq<@ZqXMVTKs(Ee}VR}k~zl2FfiwS#200#upY>D{W2Si_Q(#2lRrMiWwN!36Sx~-fU_%Cm!o}@t%3! z?HA1z$imW0BF8vxQUq(qV`{(->I1z-hRY?!Qup(md?S{n5Jc$B5y|YGPT+Jm7-6ID zvjQUMNY98#1DIcgM;Wv1^lWgzXl{sgUQbUdnuFwS8T1N(aHfr`Bi$q5?sc}D9nr3= zShQ%ehrNa+bnhZLgmeu9ZP^-6}+{9RffOlD#D~-ByH`T|`2nA>yNr z%})V)p6!o(@ajJ7hlev8co;swQm+K4l0qU=s3xECAf`=R?nS1h8vC!~1IU%}UtirE zP7CwZP*oSAJ!ZjLLMI8}4u&AGI*$upa@K=(ko=oa&cGqw?=4z4K?dUX{ts$^cp>7r zgVD6C_-W%#n)=Zyysy|)md3~Y(7 zHq6yr8;@AT>7>kFk0^itptCWP)v2AH#bb@6WzwW#Vxx}f3?A-0IT#Ee<3~;Du!#CP zwh2$J+FrGOiX=~s6V|wr>SrZeRpCLV{;9Rm3Va&&mMw}xa;DVG5EgPstwsd}IkfuH z5&Z@1m4~G{GD(=L_fgADTYK&u(2Rv~R}wEWpQ%en9&{Cz4kfJ*c+zS(i{}+owQXXZ z+>2eZClyi5$f4W9-sT(I2V#uNi#`E(!~%+Xe3M-;@y3Eb(+WX3k65SE>cZjg2ba^! zn)-LdK85#0-TjdSr!U8$gY$rur+w}^!E$%&^t3AAt(v)0kM!B}n!{_2{X>8>dz{!v z&|BlA+KWI3Ku2gf*z!9wpzl9EE{BOgYInBOKXKUWk9xcJXAoeZmiXPk{&~@2 z=Py0uHbcIaxUQodU~jd~o;OE#4V2tIuzAD#^H+X5Ay|4VJsvmOX?jL6FN;{*)L9h} zAPGUa7e!f;&6nAHoXap=O~UJ?G5N=ATR)bx84UKRSePOP9WFuR6Q*H>MF0N*b^HdCnwJI<$j+ft~m3(WU+`wYx*Inm5NZzVCSS`W4%(Xo*E4zdG>P}Whuk|a+) znMs)Lf0nk@u#OOlEjQh_^sI(dv`)gS;Kq(WkGr^>*;+7sH|a{c*}|sSy2vc7*=6?a z+%wiGbBS}uC{vC2x^z;26-pJ~!e6O?>0~&+&E=Te*;ZUGWyt`3*!U5 z;>%!h0i8)lV8FsSh22lDbguYg15GDe&uUZvSC;*H(rT^&{JBjkx?n$$YV%GIkh1nl zmG6DK+nrpgg9x-w>!T!44;VST<=uxBwOeq%o!^<4{;ct9^S;kVF8x+D|1ea!j)z3t zz3cCo^|=vS+;+2d*0eo2Zn1NH{NirH(2fkaYI<6cjc^jc_>!po3>tk8&?l zUnC(4apqP_zeR@e0`D*1%E(D`^?q6}VZohv7mA!nB@oi_JXS=JW!qg)4JQz7j+6*1 zR3mNSNL!b!_ogf^uxeK7&OIW%$3!B_1;*X=T-;0hs}}|C+E(V8gD!5P^LeG%x{fJu zlQazhZ0{H^y7FFqcV3?zLd>i7 z%CX(@K7GWMoEv0$WpgUioPUx@*xGOx=?aHB1AGj)9c*kuFa~xk`<((8rDcWh(6`Y+ zGC>Oh&LQPG)7-iu%+j1`uD*?U6L2!9?1k0qO*>Tpy2GGbQ}OUIt7W@eQGcG|Gy{4r zu4s+#>bC~p+;|Bc{?s+)cp<%Y_>eUTOYDrI@2zz!OC!4uAkA`|yp_=uBfO9m#BrIN z2VuyeYz+UDoe6tGL?r zD}%#JooPK;PmDKD9^zP;m~aYxg2J8pL>|+eXI+iq{U$>Z)1NAgq` zD)v&)@)WYOo@ch2WCRN~OwkCUhg9~~V<^WYI+C-l2u5Dqt->Lq*{~)lyDaE7=2+@?-@}03jHO;|pGHp~%N3e~` zqOpS38BpXKkJ7WXK?MZFwixLwSjSN|3m1>?^^G?1D6D%%juIHbihA3J3&Rjrc5m2g zNd6!fDYOd}a6A6g1U~_l?N?wDYa(2iC|qlr$y;J;ZW7PyZ9Z3|Wu^6pRS+)tsfga~ zMJL`#dDjolkg9HLSb5XzkViqZvxV^9Rv@j$lG{+Y9pYWT=H`CQAp5u4nG#o5+bv_K z)DfTpUqO$p5jv3WesA*D349Qx7w$^h50;=1~;A+cwqS@}IOqbEKmp}$N6OoGF`%?^h5%d+k44$g`!e>&m% zsp!ZN(dD2RXM**6>e)VUkd`oFM7eUG$A;|MbYY~*YiKwKYCpquCQlj&9u1c0Hva}# zG}7_ZNJh%704TG_G_8P;0+0$Ffr9*K+E4|Z^rj;g#=p}^Sq{Q9Uu(-69>7=xo3Iy2 zci;wXwkt`3)l7ATg$@t+29Je3H&^ zb>1#+p0|_5_t!70Q{6(<6%~`(P{2WWF>ea<*ycGorXq7_lXJD8B4mU$(Mfq^I@M@Q zX5b2BnC4fNL0843Wi4nULJW*o%@Be2C{=_6lj#BwtvVwD0zPd>F_9l;rrEuC^~td> zU>g@*dkAZ`gR^jS#FgLEn)gr@U?`|)aF(UaJXM+v5>VHVIO-FDzk?0|{}FUp{a~hZ zOm0k4#u)Z|*{zH+Bq-wyiC^}8tqZ=yUYSFm0ZSmgsz=~3kOey8vdf{L!9d);TgN9m zALvB2j9E;#o4GHo9R>jdmuxC$W{`D9FIKs#KK7aUBRKxVyW3kDwz=&?_5RAkE_ND`HjB<4j*N0IoJU;5s$(Q?d#*Wo zK9KnGaJ0~=W=p0J#LVpX5fL&Zb$Se9e0*#~G>cFZZyuvNCXYw&i?~GLYzRS;5KZ2%qX#R&A6%-}`YWDmu6wtb> z`uk4Hkl2~Xx>A$1!&Jt-^8mkWwtA1SXEaxRc_w6Mb;5o_v+6bdj#uA}j(7gJPSJTk zrDXlSS^CylUr)me$9bzwYEAi7`&EMI21b&|dJ8V`WR<)pNJtFlMhxnq`g!>+5}ShOzI zea5L}#2I`ORc6S>M?Ix;@kYFEtBCWM^k|jB${C#mfzwG z-8FNu>)#O-zaHV_g!SL0O{ZXeWLi|V8g?>NaIHR=TB8$(p(F|;#jVnIenb@^E|ozF zQ7!R}h)4x>IvQLUhie-Gd5YW##)-nlqt;v4i-~nzTiVu#IHQt-WZn=>^q;2R9nv>o zVV`fDHPwLdXlNu%EL;SZ+)14?H|(kK{ZI17Q(pTFr=OT|9`CX>Rb6?x=fcjw-+WcN2VQob zwS7sI^W5X_z0x`C`=YM4gQ+p)Q%w51K;D*%C+fI-ShHyub(itX8s~>ba^+)j&l&deA>fi(JW=%5XV< zvv-q^iC!Tv;zI=$KYns&(G0k;_J((@#;m$r!@~qq^&ttVgC0=W)o&mLe zt*snL%%M047}KNxv?hW^j>G1u%_Vwg9)^|_)SUl~k~C*=CLd%l@=GBOFPOMsE|u`| zV7SEec-{E}LnLTPhE?c4G*uqr^)&!}gujN$0f=Ri>ye|AWH3{&mGtHc7&y(63^TSY zhWozpb+_I(VLsIBxdtfRtM_7ib79_@+iM!~4qm;vb*u^B9g_FkJ1yHj`S7vvS9`6O z^*7wwJk97Fh3k!#4{5p7`-_5j15B{!*hrf<-)oHqD*RZu7pc_Mw`wK&PN$tBB!;yH zZ-pE=&^PTcS&Fs_oE;jIG*k2gh70IcM)-99ViZ3pRbrK5fU=nFtnMvB&<^?6J^L6i zf=^TjJpIdQYSC7^b0l@!+s!y_%F9~ukF4Cg*yB7kKc|!`&Iu`{CHh#-WgDxhK^&qM zG;*q*PU0X^jEb-U9Jkm<6&MsYy(kVM(aR7o9mp8D_4YIfr|!)=YYd%PN{e-M;6{Z zRFFn9puo*)Bpb>x{UD4YxH!PYd(jy0>pbZ@pB3E5W#l+!uN-jS#u$P|2~-2eaJf}A ziD54p5iz4Xat6Cw^fy#D>jfu>fEt1>&6AN4q}s|bqk{1x=YLNXjl@3r zyyeo5C!n42P(bzf4H#80qf=oX4FZHeb?zA~{e0=epTGVfCkudzj1Z0$Kyd+^L%ssb}(Ry262#zWRp;r7k468gp z;P$6Zn;9*CN*99XuZLHmax|D!Qc7>^fMFD+E-aAa%X6>eNhwD5%_^R0@4K)h$ zwe*^#)bX98VAG#1-j4-hPc#NGmO6qF-64d&f>QEO4}ADK319$#VD8RhQ6+YG!xnN;9jEbmG841_pv#jX!MAdb2 zD1&c49z#_e`fcF?F%`x{xUUZ|N=Wsilfi&byF=6!eRN^YnRP#|3I4%I&zr$R_(-IE zswCma2WwrZDJp|G7@VX3EO>Q2xvY%H!0vR5wibvnV*OX^0U$bCZWw$&OC;^wTxzo0 z)Dr&JOo$2qKM7HLQ&@e*`pol(^yIMj9Y4g%rlXsJar)TVNF9S`2G)HXdfZ4rc)V?d z!sj_I1LLzmN#wUmJQ3X^rA7Uyjyhsc{mXVF4-#uTVvNqag(6S*d37$kK45}1HsB5H zOkuP0#&*M{>MU&jNlbO`bV{C$I#Q^05ghvtWedTzSWF$rczq$M2Qo z*t)zmB|wM3hbGe(+lo?QJLov*D|JS(7_*}fB<$}L6~qUytcTyX2>_rKdp#$J1#|*T zcI#3QGX{`00i+4An02RJTpzk%r0pKBlJ~0Nk*lu=z9syiJ%9lphPjA;A`^p#fvg5R zQT0Ug5OE>BqwrXTZ7=BT+_;CTdl3@WoVs=K1j#RcqVFFBUJGrrLv@|#lwR#q40tcuhqs5W%_5&yFo=00jj=kcDbog2W4*|y;ns);hHx5< zV5L2J&a4U_ok<-mJuuoEksoe8mD-9t4CtKR-K-_QmK^Pdrd8Oc3qzIyIF7p;e|I83Npl>l;$0qo>}em1 z3qG0pYxjMiqUAz@{Do7x(KeBJ$McgPM!Pp7?d<51tU8~Hynu`&UXCdxK`F%K-f|kP zs-~{$S4DG)$@Xa9s>f2h;?!2_y$(5otZECF z9VzAHtFVBX+mzYlH)nBA_)ur? zKqfF%)1TykePHA!<8|~8Qh5!J>{RFPI){e&oNeE>S zjFz$9(zv9sPoZa+4gya9>0`|YHqYteQ5et^KkLuAabqZ+4Emr0@b~8>q}J*QrIW6= zj)e$L7MGRCpl8dez@Zeu`ULEY?z=VBLA$oK-=l8Ovn|6s^&vd`4JM7h^EOcJv zq?$QnJQ_7qhH}uFA!7{i{7YKmURN`aaZN2Uav`-C17*t$_iAgY!jtMY6W6!nyRaAd zBicS1y#xWmJ1e7rOcxnNdJY-!YFe#`;Gv3~1jxr=H)91Q6xgfR(oi4Tpzvy&pf*Dw z4|vQR>Q%pS^d8H)h^a>kOD;a|r7Xn3Id;u-Lue%E8SC9-7OW&IH-`)-m1*8x@G;4- z8|=b>J?Do>raXvO1j$UH4ckKNUc2F_= zvrOvX9~Yh5V^00?Q~$Bu;J>bp8|#bIq2udsIxK-O;)-MMk_YT}8b${=KMp>8b>*#X z?qp`Ory?RJ%s7>BUbXg<_I{D)1-EU(X9tA4L*nu8O!1EnzbGi?HJ@ zcEh9tHT93t0cwl&g=AEjDnysymEKt(daqA~SRo2lkgG%t1IXoem;6>C z7UYFhjq@P&HV2gkZET#R(+#Q{Youv_4;CI(ph#Go?jJWFXV&c%y!0bg|5cB>5*ZuV;W7^+j0MT8f-ZX)W&q^q1*J#gC3i#s0b4&JjC#0-^dnjL&u zI}=dLU3}WnmJ_wnda=8DpH+lpTD6*HbZEaJ&shk8aoyIOC6v#@>16 zh>_ki=b=tAGaEU6TxnK?sX?xWSsTu*D!3PCr;Q~SV8px%4Od#x7#Pe44q>m~?zSke zxeDtug+az+AmR{;`8un&Gv-(JK5iLJTx*O!P)1;jr7YA4x*+EbPeQz6$E8;LfY z#PvxRL$A&Er_~?O;v)GHJvl|u6tog3E{vTa`M_Mxf zBhs>Z?c*2K^HkE8h_AOg622Vx689zLYt&`+c1QGIAJCh?ji5sxKU4%kfHi7wU;h9B z&>I96jIMq2E271K=#xXGWt~>y7chXKt}eY19D)z2q$s@7!=bsts_^qUU zoIsC@eG63&rMOzrvT3F4!di9T9uvdYR(5wcmhxj@mkzlDkLqGr!a#_RXAUtbh(>8c zh@m(6YT@Crkv6VO?@C~!R;MNmtY*x?kk+_}H3zjjGt~4NAda2Ssv`|2F2#i8+E-@7 zh~QpGK~tbwrrH7C)QI<=k90xgSC2#)^Lal6TiskdG`I2`KL8mX1H@|i2as8P*e1*Q z;m&N3PH+Xy2L?{{J#_Wt?P}1yIkXJcK&S>@s2>S7RM83ig{ksE>4MKXyg0V!`jITn zb2ir7ldQ{Aw`c(3?&ERGjysr(RF(RY_nzsSRFghz#5)3T}WunX=m$M3n*MKDmV zU{%%ZYKsD0O*W7Q-X8&xYV?;8eTk-$(l*#|NzE-zf0d>m^%E(sh>y+yR`G($hK4XKel>0%5p3XOlndQTaX}5CrAP2?7)h> z#eK9kP=ySY#?K|0IyF2d-hZ*d*aKj~%SvFt=KA(iFq=SNHrc0<2+l@9-o8Gnj6Rw# zzK%b-!JvOs6dh$!TosDzx}wGuCv9BPU0m@@iA%OwAnbhb%6Iq14Mv^(6$6I9YodLS z+tZ}>XY-;>ik=;Tjq=JW50~>7X8D&NVhA9ZW+RH^gwSxH!V$^<1Yl~~B`ZJRyN3w8fj3Z9}_^+yQwq`QQ4Vn99RW5 zA$A;2*r;HZQHS52xpHB~p}?ssY(|8%TWZOKGEO93dYqr$;o`FBLe}ksA0Jy1psw6H zg=_9o#;mcA+F~8zoP3BCrp%7Ge1D2G9;`dj@Um3w0=DTSi(gV04A~@k0n1Odm4a|U zv>JoKsgLh9Ltp^oozX0ShUyZwc%_wz9|4#U!+;rX8rP2I}$7H0B1f86zHq@?Vpa_IgE(m9XWXAa2Bspjx_ z2ao2JZF!x>1tleVDVuIH>{+a1Q}wU%{2HK_?l!i9YxEEld0yTwXG@l6xn&xQL(5~i zHb+u02$SZ_z=osXdcAT<8VSa=~&o#x(2QtbTk)0Yn>%P*^pgui;* zJ{Ja8cg${o!1bE+vR>N%{Xt&wceZnd`}Fs|YTj8WKmYxo-O0_L5BHo+@tt3cmzN(l zm#?j>jV{wmAr2Hc*v?#!n=F8Vv__a>YB+u&i?fA?9V!*8_U+a@(x-@B}v9hIF!N!=vX8r)S?T*)$FNt>h0%{THex1}&H= zB1XGbg%jYOy1_?0G7rTDsH+(}ACZS>!VpMkiI)&qfRfDXbi4%)(11$_O+ehYlrduy zHDr?oXMnqQU*2Z*?D!1GHGu6qLo(vzuq)9Kj6r7d8WyKiOOhiEVRIvNR38)AK=Vip8}J?rCn3Ru zk}eaEj1X}JuhnqpA6nmQY(MZMxz*Newxg=S(XS)2DPsM;mUCQ{6x^*mPLxSF>>{(I z7S91cgerXR9b^{l&L|wUDrL6d;wv#yU{q9G8w!bIgIwFR(9Nj|9t0sqfzA#`M=Z9r z5~aOMEQM zzo<-mHI!a~#L?XLcSq7ssC@Tx}(GvRwP{ z-q&cAS&7fvY=`x$?6!k=7x2G3$8zeLPUx0I1bdze7o6-h@5YN)0JB^kj>IS#mWeDu zSzUcdBf5^K`GvN(OM@wJ3Mkbw3Bg(`i?cL?R{#aq1wwYfctt~nt+yes7tGwDrFB91 ziv|GOaP8KJKpJ+6kXDFA@UaK5@(+Q*4x`DCEG)ohzV=^ua*R-O?i5PqwY6;Ojtykz zgVRu87Dpr(onjRw*&DF!znm~4g#q7pJ^m@rpkD%dA7*Xnz%=zawCb)8a4dLIMULZb zySR3lNlumYOc%BFaX$)}GF*Qy;gTeC>Cj@SVRVE*ZK0#woy(dfp$%=p;knYwX@v@Br1r!5hH4j= zWHfYllox;w(Y$-Q6Uv*2QYA`QC5o*6H!>bv7<(r-00DI~5?rQ9x9ioq5Re~xJ0 z8y;P_-JLi6u$<&cp9aFf6VT(sdZ{ zbFw<(46;b?lmfTZx-o-RX45%r4$DeFgkwClvGD4`8S&*R4Aemy?ZkHmq_bAC^wi43 zO!KoU7^A;-*+p#)==^-pL#9h9t{S+cCME={wrfqC$*8>vwSv}fEdc}50Jh{(Qd?CR zP{OmMWv&;gQ(0(I$g+iD5a%q($W8w>n4Pf&6Jra;pmeB_tMw+H^=60(&Bi3JU@ln|*8Ok-$BpaVp~()Y)9oIr2j6Nj7-mdK zNUT$?U^MGtE$i9P1?b^rSb9)}(fT~v_5gx{DJNy9ibNucz@s%2V}{usp|$S0QQ~1@ z)E(N1`Rmu^d4FuZc;}Je_ZwkZr(EY>8Bb~dc9+zZXlc#Q#u;($_~Np=oNLj|nz1>wJ;5*Y~}M6I_zj57ydDB$Xc3a78LA zyPUPo&{B2K78_&{Xt-Fg2CTd(s-fZx>isg;uBUI3S*U9^ zc=F2plddgBhpECQeiMgVPVls|6;D}Pat9!CtIs}TVbbDj=h zAa+((OA|W)WGi#HjZ%`QFl2yx$*H$iR~0t`24vH!?mB}4P_4a6HK!GPUOG+n+Ml$X zmEXEhPx3U0K2!v4Q2{=lDr`7!b1b_rdY|o;b(gspPfnk1x5FE@^sUzja{SZ!q zwX)s92Ew$_cIMzA?RbQj^$8OpVcqQjpLuL1&I@7MamTwhMdwGiFjLPSO8X2Z7(*n7 zUv0I@*APYZPuX4&OzrfYv+;I4rh!Hfrg6C z>@ps6pcwLr@T+-*y%Km$UIn84KqSWBrxi^KAE~e;O`4Hk+XJ>>**&v8VF#;$QKc)_ zN>Y#mB*leJ{WR~F-_vb(APtsVUf`k&k_I#~Cc*B1?ou%9NMe6Dba%{g46ee3OpSxU zx9;*t6+q!==RrPB`dW=I?oT^k1Du_wHs!F2K)rM4+Bao`DpU2}E4`Gv`)BuyoQ}2+ zH*g|zT4c;0jDZ7(ehi7Xc8at+tB|l*H&;%?pK^_-*S)(P@_>2i_Y^I&gi1NhF2A$K z)oHx7wbjP@;rsf+Dp0d5J=~v-u!8Z?gTaQp+YjgxQiy~$xI9nF;H-wwyPwr(LG4;ib*|lXz z&DjB}{(BLyWBBD3S)WqJ1O|FTCJa^1)zf*(=Ca<(6 zFZjqLtdR&{ot>Z7^Y{L`-hc@LRo)$6zhYE+E)II~_VTgfEhz|hGI3BqwgOY*W=Rp0 zy$y!dXE#_9zZ_EDXF2ob_?MC|X2bF z(9qR)Yc_Q)dVlvOaIE;O#8zsv!(ih5GDW!iWPG*x)Ft7HoYdl$ozs%VbtVnw^r?rK zWpI5E6qoEum?W4bPo}el7y30b!>h@L1a>Y-3M(WCbwmQMlg(}17b>^L5!Fy1kPkZ= z-(mor=4*vSH=YbH(4^L2`*TZ76^9HQGZ*a71KeC_UC74~Px$rtU-2I&LwxiSsdzQkI3TX;rfw3oAusZk&jV_+LOwlJHGVBs{oI_ zr_Z?*(YBt5xxfc;33A~8$*f`MTEE4G&vtod=67`T>Z`Y3%eowl?Kq?SOs{oD{mgDy zEXY=lWnl?aA5$weIHj`L_CkFQnGDy`73vr|kuqIM>mv-;{>HO7=)3XG;IJ6+@D?5z z&Yme4Z*xRxX+kq+$rC(j=H8%Pr5IhBK4_xi(>&`TL7p8Xa~x&w*F?TFK4#HnI=RC= zGsVsDhU|I%2shu>@;BLB@bf-bwWq<1$J9vf8HRx+q0mAwl?3%~v2xB#rOK>_efY^m zKt0)~hl^w#s9=Hk&S(RF)#`c(CI>I`hi4c#A7I4~d!qFR4K7;R2$2EfHt=<6sj$>> zFoGTjv;!sdv&v5+;oQW}z4yJDhuzPE_Z)b<5b4Oav!FoCDzwZhK1XJGOU6;a@{S+f z|G*j@1wem^G7OPfLUsfC`q7`r!JI)pIsN0G${Q|j=f1ms+x2rj$JssF@3U_2kI5fE zK+QUnDf{zz#)-Eh(t|UG&MkJ1X2#71?{t^7?f&D=ZPMYU?p@Eibp#h)-U(g52Yp!8 zb0B3Q&)xr4(sJ=2Wu5>#b9d$KMg)XSJ!}ci08`oFc?E|Y14@fs2wvtnq7eFo;9ZiH zORDj17XY>iXSkcAfFsw7gTN2Mvx%wkEMdjmZsLR1!ZQIa0jCQpX9a<~qPYjMbv7h| zq^u<8mW}4##&Q>VstLqw$!Ko&Q<8d@?Kpm*YU@gJW=A?u0Sog&3nCfd^;$IdkW3>U zRY+2)048Z;^K4Eh;%X{ED&M0LZ|P&=L5E620@~1%oP-U-R!ASL!YU)q0Pu<|YT{<5 zF*Cr5rL-O8a6gX;Lj)Aj9=(G*kHu)S{CgkSSTg++k^hURGmlC#Z~y-d0s^7|0^w2t zqM@RpsoDAfBHR9Hq9WSqN0JRsV#$RuH~MsgQR5YlvyPI--*bNO&;2I{4)^D}-^=TA4jDQP$a0~igAbwIuWa^Ga#cI2=utTw5i_5zCdPE> zPh1{o$sq%xy%esfXi^$}K}E}Y`O=NOCqeG+AT=;}-FsU?Q^?T!`?;{s*|fz=$QGzX zpUn_f!8gC!zPTPhGe2P$)i&*~OY_?DaW??GirsT=v*PuO+mi`B7j{1^{H}Jb=)V{G z+Y9%F1C?Lj{&~9c&$_36Yj)nB2o5Z1?(+#KE=6YZt5Frh2@*Cz!cI;M!;K)kZT)10R0Q~Zs09jXo> zBtzifp5anlG{X)B2*(4$5&17|krwD&YmIhsYoM_xcnlPP8h?N0f>@{P>Z|}A~tn5kAMN-s4|HyZ-Lf;?_Y)YN#5!RbKyUkJs1l2cJVU zFCNaRu6%S%U3q-07va`U*m%|Y*UZZ~c!&7Sc5m7b9@w&m?%dvF{AxaV&Xkao64Gqh z&RyY`f^(`1oPt+?&`hXHAT&SU$vnCdA|0)rbn3fTyozG1z|_g|+34!1iteMO?AQK? zn7$_!6;ntie3o=cKB{v#q+D72Z^6p}i;6l#Iyj!+yU=sN&eyLLnh>cqCA`0EbUgp~ zE{9EIdp2&*b^q#S+4TE_1YY>$pV{j+^bqMhz^#6Blh^6{c1cWShhyGQnHCl1I|y#% z0(O*|3fdEzL6Cw9MltVd&s2k~s%=$W9Q#Jx^QOV*1Y3Hz1D<+)@CpORv zou+bv&b$V1Jk`jgHS`@J961uMH^??H5ewh@DCH@UP!}_W1%XdnaDbe|oZ_`K3d5j>VqS zdEe6eZ4Y$|2j5sutvA^H;A_;DhrPuN&y=Zb*@FYYRu^E+(1TFUV^r({3rq9i^613h z4|IX-2_zp~2D5{203t=?I?)rDRF`IoO={`XN`J^O6CCI5(Q(@{=r|6lX~T5F2M)hs zX@Zc#^FZ3;aj3-K*f9LW6)ughsXTwxfV@H=WbB?_^F%;qr=jZm^+&1fb+OT_!W9 zU)Ww9dtO?97XT&~?Lb1gGPD7YDlWD3(MpM)@PFO7gVY#P&*9kfF}4oqNJ2L#&DLHF z{Or|al*>GgaQ?8-y$`!09xVBxzejcJ+zM9uy&_JjW-dB*;(Y$ot~vV4V>19{d`l7A z;MR7o=r4pv_x0FU+v>A6%^xVkL|5KO>pa8%%VD6C=oZn5pY6XR=*#I?vuY|Ss4mSl z4>y!;d$+=}W2>XjfdC6}KxsX+FjW4cn*klP7KidhM)4>xGW6lKp#eo@Vn5*=Pvksw z-;qnWXqSrV#$VVZ#EDn`9X>Myu@|oNGB4q9>sIEFHuGiiEEaY6`SMZg>l?@KW%Rn~ ztvzDQrXKEx_576T84c>i?5q0dlr+D(Q@6l57;Lyq_sI@sE}GYsfSB*bz#G7qAgiQu zUn}QuW1jbLQ` z^DxF05UL9VF!mM!8nL9H1=L#G*zBbIsaNDARC+YjBm!Oh1kZZ|BY`Z44-3=8YZ_YG z@%U+I6%XCrFv!CgDK=k-jd8GmA&laIpU>kBLD$!~apL{y8Kx`FnU z@BQZoexAUbX>9B(drW+H_LocggwMW1k7)@f&j-%Fwp?iagR&t?aFVjt8ujnj+Kh~` z&(A}5Yc0n!EqW$?Dp#m5s~pU5ptQ!7DMqdd-bVc(R9wHpOmLoX@&y;t4#VfU;TL$s zyY0#A20-=@7l$+YQXp%i%W;LC+(C9Rzy-jv`=27&IGJYvWKRe=Y}#$IYaS{`9!XD{ z8CLR{kMufRbz_>>;_!;=!EFD>S2`>=nFTFw)@9edj*M7ORl{P|*-|A=?HBWdd2S@C zA@*rA-L%8VI_9G@J01gW@2(FoDV`e~(RYMUvp!YyLjVbvjT2d6E3wp$bF3~NB|l;} zgxEdKiG=X2;jn)=}}gohAh>tbuJ0%KSv2tk>Hfy!F`j|^j#-DcNDlM=Df%ncl% z5p-&lT3Q-(O9GzX7OlZ)Oo6ZZsGr+^>=PH-`Wv!ps><#X*IT{!xw6Rs*!JzmANJ_G zvY!d<72HNmNLXC@L)zwrnhmJq+mnBQ4i(45C77C_w$C)3)V4iv3+G!LpT-fo zy#X|+6vM}<9qQ$|mG#V5O=$e)b_w-hT!#iS_!=+-Lol|#>#bgOVVW4DkxR<^m1b3b z4)&lZXUFw6{Hgi1ctd0cp$Lm8a0(6jFW!-<%$}n^z;W!e9=3+(2~#D zWmB`1O$Fl8@0!gHtwD#R+O&!dh&ZHdp zB5~=x_i1US)nS**=DWMUj86}jTvCQ@H&KG+fFj-jZE@~iIY-Th$wpdf=BU94G$)E$ z`5Fzu3Zs)iNG1mBCeaFth}%hd>lN1dw=wmoGnMIh&+s4@TFV6=z*E_MSvOc;fg>D? z0>y1Hg8N1W`cLFKwna=XmgG2Zv(89yJma)=;EDgN5>c=}K1Vb*E>n`TK?v|B=yW}% z9z3(f%)AuDPqrvx(2!Wy*w$4A7QwO>l2ba#bJq>OyIG+&On{2uRqz6bZEj;hm+j2h z)NBxyjF5XHJsTZ7p=b~h%;3N^PCzlQgtx9H#LM~gj*m6p9)EgF+B`tCe(xR4z-p{e zB%`iLyJSZB%3KYI=8zVDjRG^>>`du_ROCd80#Y9K+*d)5u_dGXW&H4}o4eo=3<-ce zpgprOVI{eNM}I$jIWm|vTTnq&-r1{1zlrZ|dikwuAl2g3$-%MUImY2^8k%|V_n=9lg9)NuVU zbqc;&XU&m6MSwJc1-O8u(nO5dAeT9%hQM8P8G=;kGzpq@7fQzMp5Vk2aQ_g1wKt%+7g)BNxKMO3e0Id_8kD(zH^TsdPhb-FSHPMX zQ4k_g=+JaAX13l8Hi>F)-U%8lfHMrl+-`MO_hQscYRDnJL(e$807GWicLHV#v;jy< zk)NbyDCl|gi)ryo#ff?O&{E%J8>mzoz+$h6r=Pof<*B9&6iMU=maHK%5NLz&Sb+mT zGDiCGcTb`|@KZ!Vr7X!x$fNbvmCYsgO;P|tS2+ZQFsB9%1hCZjWR{h@<#zsq&~bJr zG?4|lHv^4&IZ#VrGF-i0yE z3pJ_(e;)ILQ}SAV+*>}fBhGMD&fM|89(Dg)9sibZzJ|AK`en#<75!Y*p^n$bx4A6M z4~*})>@J#pni74VmsPp2a9UJXoKQOw<&Xvh#1{^~>GQ}-pkoH8Oq19AvSSEUY;rfY zO7@J9Sy<7p1j~pdTCOIylbpt(f*oD!>Se3saxWiFnP z8hP=t7Vxyo`S^Ps*Nk;h?B$e+y{c7CTT@l=l@_>g>6Mx` zxICXC8zOon7wXA_)7W8PRHDoxGrLG``x+unDyJ5#!jWN{Dn_g`NWjoMN=K@%)XTGQ zCpWk3_;tjmWywd0Q{JZoEd9#I0yJyQ~dR?7y-*2#z}9O=W27yDGYn6_|1yD79Yb-!an zcW=0&cIWTS;WF=4_LK7dSxK?fxt4))vCmy{i8)lHqlfQ=hI>%IfWAgwrl7$d!Se%6 zE=n1L`pjUl4etDIz3JSCJ*QK7ftiu5FLxybv>&ie-2SG<3mcfeW%kIk>*3p9nDm7| z9ip*DpYU1mC~FHl3LI#9#45%2ZQtwwgdYgbkvs<*!j@(aT&*dkIJ&@vzpMk)=fby& z*PQI_%t_kbNw$44u&s%|9BK)^NPypL3;Ua;20-l;)yf$@ND3* zG$l-rld#N|P!VRi=;E&Qq!Dy%Jqals8n91*ph!GPu%~@0EtsVoLXP%1MbT~BVtH(G zD8%E8-7I0NTpr8r6d+50v76JZ>u-iB%DkGgK+~W?dsB-IR&SSY_`Uw#=}qKrv|oG$ zyDCDgZJ!T%o?q)R&*03JFIUB!E9t41gPWLm2}3Aac%!*ZjKO%bM~jL@NIMB02+IwQ z-Y91Fthx((+yd>vBpgR-6CrW%n)DbOrsOIIfM@|CNL#GJ=s0>B?xYbl%q5KaAfHiM zf6^~8EAPWPdU6L87=E?0odpQ*ITy@;OFZEkEm5E;54&0*VYtB`&6?_tlqVV!qu-Cj zOQz+o*n{2(Ugv*Wh<6qOk_|!NrV~1!55)j*WpJ?sndwTFq@wq%wUGM&k1X^!Wo_u% zhL3pHj>ip-u@zHi)*bz4Y~cl9$F=(7{YYW1#%Wz)ever8SJ(4U-e|5SdY(j^wS&93}SEd%r3H300ne ziPTau_|)H;0J{-#{|1JcVp9-pXMF3v50EHC4dF^bK;5kCMYlulI$7C75K8OtD2c zKwl*v1<+$8t44*DIK8C5x4NAQCfNsR^h}VI9GE9BH96S!zJKyPfDU|jxD(c;al@9N z%K&Bfv*w=<-yuqfr@*o&EXW6_>Jq)3h2h}9&+rht6&%3W#qhJV z1$+f0`L-1VOzwzY^Q5qJHasWJ|K)J(^*+f0Irq2Ek23+jS!MR8DOq0K&~uvm_J~by z-<>l;o-Db}Ex`8_ie=#nVfgjLnbc*)#2%t;hj>-Yh!)N9d~YX0s=GwD=Z4Y25+}`@ zU6*YbRSr^=Lu-7uaOVgOX73Nl+p74-?q**FZ?sm>EkP+Wj9mu88+f^|NdO}XAy?p{ z)9O>HU|Yc0_HNx(?2s(TxadoU43!-#fR9?tx?D#MTh3z;Pu635RbIw6o5;+LbB`;f{9j#{*kN#zHu1U9OyRmNU?4q&ihNY5+vF z^x3b-G?b*iJ+=?Y-v})02P!FXk389;_w~el$G!ruxVXPwXXYOH#TZz6rTzJ2^otU| z5Q1%j*+JV+u)8i#5BJ`5`7S7%IoRh|3R}9$@$-BNRo4?M3HI}C@xcj}c&)sS;gpf9 zw$Sr12B6(?A@w6k1mmmUw@r?gQZ39%Oc-vuKPz&Kb?)>awzI%K1zA%A(tdh5($|5W z4DCjGUk)4=U54V*F`yiIf>z$oiG$nNXI{-VxMg+@n%O5;(^4LT+DV79a<9=d~CWDe&$KV2_p49tT}B>M~lb;lqg* zjB0$IrV2y6itHAF3XvdTDM0aRC-^`H;4uOjhAWt23%v`_UPZQy@SVmd)RZEU)Rum_ zm4gOBkPi$e4jL`NfCne{YFe1a|C@=beJvuk&z8NjS}IfO^!9}$Pk#q0`DUya1b$jS zbOyD?dR`ZX{hWH4dFAg(-p-1}ekbyg|I|IrTZlylI3G!v8|Vyo=z9WB%92OX50Q3) zYSi(*Crq>eUrVI7J)r0W#dt$78x`$|8De{Ojl;uYuVETEFAkV(gv?r3Ys#fA0=X+> zKXXucv9Bu}Uf2qMI!O>LXL^_eo+^N1=1Y;2w?ELSu)UheN2eE zHDF7kU4@LWcik#^eqo=-EGgI%0~9dTXBsYo4C@i*Zvo&|x#R0h_$h(`Z!%8xF5}KG z79bFZ-u~PJ*b_)Sm)TiI!R6OET%RpYvQBC+hmOsSYSY;`Pw*wut^xFD&)Wfnr3SQ( zhAM_;8sOeRKS`U}tF3^0dhIVp=bmTW%I$2JO0-X`sjp6W|MTof5D3_kvtM(!=Jb8< zflc9tc6*5h^7*!u=^@#u$no+e;A~dW=!5XJPuBKjmd~6n4Yx1;-a1c-HYiSUDem6a z0`VNU&&Bn*No6rq7o9*#(wfMe22yg_RL{CmhJo#(%<(Q-7PG|cASDR1hU$lWG}2_~ z`XNDcRiK_@L-$DNPvG0MQ#%kWH?&ojOQmCOQ-=#cx@xyQJM-+|bCb=GGMlWiXoc3=yxV-W~0^) z1N8matO$1z4=sVk2a;~S%TR1F6t zQYjJ81O9<+qkWh1nKFdI2iPxFI{`NspfABNm2=zM$_7&6{~$J5d)EB35oYw{^p>pv zbKM7Q=lN|JB*R084&B-@H+-gJZ%?)Y=@4+Wgq^)uj~DwM=UqeBTC@QX9JQ!*k z1UThC7?_h{plC2tfG_bMM@}z3iZ3s7<)d|MJp?Hw-%$xOg=hfRR+XnZINa)3npd&; zwNS?Sd0ua#w%LH3IMO*HA}Gh31+a_Nt7j>YMyDCbe8;Z98wXOVYh2IN9Sw)vH4k!m zVZMQ0wDiWLihdqRci0yAP76*s!K9m?@iw?xet@>vwPogoj3lAq7~QsaAy_rm4d=;% zcIT$q;BpKhNVwdV={(XDRZWD94O=&k7YjK|k`m?iAc3z0 zLp+7lOLqTwEXg;u;akMp)$2i1fzP6&d%>jS`guzoSBgK&r3)1#dr3I3a~S+6c#?D-aCU;B8FUnF&A)X=mK0<58bXO5nVEp z#IhH+lg&h7?yDedVm`Kw`IsZOMc{2KG69|=nse)9N8X{(4oph~P&HrQ-PL&e_8aS0 zcI+}#DyEb(4=+H67F26Z$xnak+I!l{mip(xmvd!J5C?~Fu5Wu^=uKp9?z`smov+W| z{?LGIlGbrQ?H!F`atnadr=M#0J=Wf`IjF>Mp+8@4S8;VnDj@-tngh-*fmONwEO?_s z3?ytglU*7EL7N&eyVmy={`Sk02_)nvFwC>qUQ>(6m3_YEN^%*PN({JL=$LcUn~JJp zNgN_Z!&lPls%g$VSP?+0nBDFvqZ5W_7hp~zRm>Q)1bY`Y0+U=@0X*0+5o{E=o~K6t zShH@4K~Guh!|nD~h?e)s-6nv0|6eLc{u^ktvGX z)}nwAW2q;8s9t0=lhD^AdDQRJ<3K-}!&19=5Ln*Ybvx~N^Z zwyHX|mtpEPOrAh;nF!WYAgDpw8-jE>5CJef5$p=wV59p0bQA~QTpY_JmknjB1=g-r z9%kXxQLx!Hp#7EugKdMU&zFgZkYzER$N-bVI1mUf88u+6%&JNo#vM2gFBl;yH1}$^ ztvMC0_mx)x-N4y$aBHz(gwjkQScDeCwNl-zdEN=nswSV{5u-Zlf|e7suiQh+8`kw@ zS35HPPsY%P#{T=ds^_Na!QR05oshQw#ys-%(T>6&a(%%@`lINFM1PgPx;i)#mgX75 zS2*(bd;#RfaMClqc|la&5S-V|I?d&;IqXVAafut zq^F{Td&aIqfKC@H$?rsjWH_4~+orJUN*_QQ>?0)7=p4A1FB1fsii`5|AxQ%1jJ^Dn z6n~Z8A$Uc>CaCN!gefw~2&kpjI~*H15f{2RLRFCSpPOLsnl!bh&Q^!r;rfiXO@nC%DYI zF85Q~X@Z4UvLEnC-^AS@_axhD=pXuWAaS*yZhHk)n!8DR=Mm0Act#Hy2cI8e7Q&r6}Xl{(J5$vuf zQPkSL(!#~Q{5t4F6k2;f6$EQu3!yb%SowJ8Msgfrz}^}b9ImKwH`^cKSzwwp^vXOh zZnnJL7E)aRG5JtH^nwWH&^j_03(0MS*I@;`r;KLmNJRh$RA|(5BFT~mV8-s(5Xup&>X+p;Tnj*T66*Rqy$whK8rbPYxw{~Bqvy}`iXuhUk=dw&ZLh! z0u0h-Fd&BhEDtV6zAT5tefX4PCN{XBe^k>CtfBnf0tfC$35C18Wlc)WM%o2&)$oo7 zTLB=QROWv1LRY5G?LVDP_U$VUQ&rE;l%`+E`0?xQyT9chUGx0Tr($O>&lh-_>v%z3 z2;^u;imRlD&}Xs*rZ4t+#2^-=gZNQZ5jq!$wOlOQZ3uxB59xI0|8Bgo0XcWZ)ub@C zYtnt06xQ#Z^t2;TTyl$H5?1Sy`;uxkn(GVYcPib>1s>XXi8R44GAu}n)H%&iteq<^ zLMhI#o~V>YW7(~cW9#sHB6*j6f<>5MeT!bJSLpK6buE*g7<< zi!@=SM++KOpjpU}$Mr)GK5ml^3M9kMx-zF>Cn7`01HS(~J_xj+;vaoH4} z=qCw*sbLFKvq=@HyN=a39(ubA`&*_vFzKhj{^@;hcH0Yy``XX3PfxF2H?zJPWijh- zg94vCT%RcLRG`e}Z)9`3!<{aij3*o^4rMi3ax(4UaT_9IeH%>p`ie0YX@x{|L33A; znXr|hQGzE#tF4#QB%^L+cpHJ)xQ$ALdChL6AHcj8I&7bG?1P6N@Z2hj0p<2pH%2(* z-ac7Hun!991V7 zIy86`&cj-C9-p3ImC-NqVy=V7tBN#@g$Xe}bt;uXN4%Xqf$Psq@vI}8(8PwpV4%4^ zP^v?41OSvg3j5KqbPXWN7|WqdbF^Vmb9^mM_XiEWd8CCs9rfID<8!67rLh_-&*jK~qkzHc zC8K)dJ`|Ap>$)^TIng*+sP9=Sl^5T3VYc;zevP*dTJHIKm1EHZy>;c)^0L%jB`BJC zTe7;LJ+ITxb9qZmRoKPai2X}rFF!Vi2H7{zmpfZhB2xNy=*bZaCC;KT;2M!BHBqo}1_LhBz1k{|2>S}(QN*`M_WD)z2m}H&+2Y^8uL!~T zpf{4dt)OKcLMoyzlHpMF=ZLSUjYq3AA+JqcYnLIV975GorSc+Q_GVZ2A7d`DtLSE< zNXA>P_|6Deaq(F!osR2sU^GKurGD$&U{))O&>*XTqkBVSt77O46g2=+PfCkNrS1bS z7_g1Z1c|H;#Z_jYVs$v3H?q)%BVk2*#VRtfRqw;{VCCQ5O`Tf{C=;z@-V!O0H;Pw! z{3m@IyZ7MT@}YJoSWLc%reDg#B9{Q2JX*LDZa_`~YlWWCkE-XYoV2+sbH{`ApJl2F zW@&**HyoAZQ_$9uA2i^BAxaEzz{r1KhZB21Ym5OswS#%1+VbMre?CVC+~QW_8fcCu zoez6`jY$UHQA&T^TKk}^DRp1m1-mKP6(X;+b*kvZ@t~HcA4g$Zo1R}dC}`W%JY$_$ zGxR!;oTPh`jA0sO$Srca>pnUlNg@TCYBE%zT}zj)yBVvv z$`Eg)dpkk{ON8bQV`N~WM+yyCsqS{7Pli;DI7;#(FA4aEIk+3*($|i!OqjMgw~b-M zbrYPBU9$)A(GHyw+=~$-(@!5Nd<_lG@Vr3{%1PfjfK=8OXjtl^;&FJyYP6{j$w#6p z1{UgU3(1{c9mPnrWR-O;*uufyUggPe&u;|Fm6Y%mCs+SHhEK=w!pq;je4J}Z>ig?^ zl;kt=!mF}h)%{XX7YGf{6QCI{J_By;$;nimG5iSdlQX z59^GH5Qu)Ct|cxKS{IB-1=eO>D+v|XOcp|eE);hUwaLh6m6xWf6hFv8dE;afyb|1b zizE*y-LCHQGSoK58(Yip?As*@qmiO<4JzJKuc#SSI%c^JJPpNEG^4=^tTrU%HJef8 z9<B>gVJLdIQL6__`jNmLW!MCB`!{e5oOL z@BchTGXTt=YSLV&y}o}A7_ESXnKUX^Eg0vv3Gh|Sph}hmpQr4!C9zbd-n@vvHu4fn z3vTTwds_MDUl7BbfA8w|u#mbXSx0t;$iVk4WPm>I!P_aO_z|*vyra>@AaGZj7aZg> z@5Y_N{(E35*!4;FE}zyDrbMKf!+;$A3Yrd*za#{1H&BCD3xdT!3q&$-bI%vFK1F-! zEC762ieE5!9iJdB?qS?H3;Mcb49vZq7<=;~=-}7n8){s*l9lO3n^rmdx zKO9zDTT?VM(3cu#KF#SkF2DyZ;Cy_i0+S$zO9{q=d$!}u@S$Q>NpQ=0R0pFjtqksR zG)~h?lX4Z{Xz?Qcy5po0O#>36^R1P*P1j^iVMUn9c;h`yMHWW(1eBL~z-XOJ82}*H z%gQSeW^HP;v<#-ssr7$57$Q&919&%#MeZy?<)2+pL=0|y&;BFn*;vx^y~hN1tsEG%b-PV9WKN`K4s>pj?646Eb zxp1M{z$h72VhkIHz53>=i}QNeje+1B`Kn$m#^*b3-?W>(b$<}K+-ms17`Sdu2L}y` zK(wg2pd^4}f{lCd>&-I4BLjH#e?d*3oa_?UKYZu$(<|qF)_ylJ)CX8#Fr!|4^nvu> z!IYKpfk%_kF4pe@bkWk}t-wI)>>M`M6T{RHgf5SWfuo$G)_YLN)n=d zNq5bPCZ+tgGHZ>D8De?8+l!nRP|vvv=+tUHxJ-rN4p2m~Py4V75^a^G(c&D)vCD?b zjSjthA|mu_0xxjTz6QZ3)iu|<% z5%k)Vuay9Lc#Jd`-#=BtjB}Xg8+UQKaxiXgdFM|516sY*`;&y4VIetwXS^DibO7%C zy=L2Rm<1+qlSa8`yl2%_?n1%AHCa!bd#9gY_Ic8``rEogi-lXT_uDeozFdxcRV&V( zcRef({^nFNNU$go^v~k5K3vcywg%PNwG=RUF;q}J*gjw7fyT@5#d5h2PR~^q<$}Zd zdnVnGCYlyYbQff7^sIBO;{(&?Dw1~t;%eOcw$_n>%KSE<(0md}R9hLahXZ|c5;pR> zNFFpj@t6=FO56ZdTb?#@Db472ePwKLD>&~`j3MGGBYMS|=5lD-T9i>URL2vTbZX1t z38!+Qj0#3aAgv2d?Zl5Ht|fGkNHmNAQQ5?qLaZ){pdUgw7z`i}rUn~2Rd{C#_nfvE zS33=B3%tS*=?2M}-^^La2&~#PI6ZXFU zxA>O1{{QP5aJ{ZEkCgvw{=fQ4_K!V3L_fqovVI)q^8CF+qkgD<6t9N&iQt1!*x;c{ zlXH^2fKb0~VXol7!<>iFs?u7gV?N`v(5T&^0RLs~L(ZN^hBOCN>~z}(v1b3#XPf?r z`t76B`S&jegb|;zKY4`4Bzt6k5_Uv|t?<9r($*GEC{15#8kUP#AS;wR9clU_$p;@f zu*e_AIw$#x>G@K6elch*u_y$`qa|$W(r}_UhExo%Y^bJ}C+y?~+K`G&1W!YlaI8UzD-1vTET-g#1%r?M7{S09xCfa>dU!S3L#F5HNJH#Nc-UAgJ$l%(Nj3@)pZbJ`~TBXdR-uXfnprz}-Qt;x&2UfWs!rKM?Ze-!O$Q{4b=@>f zsHD-&OK`=;=9C(|ytai_Kwm&7RWs2(>^^-vj!zG$YoeB(BuCd#yK!^z#?y192+N*X zI?M>|i>06&QR`P1`ZxY7xa@e$$w#_2IXnv4<#Ra`-K0xsYmXj*YLT~!eTF_sl5O3Z zYw*!EVBoZQ6Ua(PYUMi#9InlwI* zBnhSbZ*g(d)hjtgJO|&K+7~rpt)?~WE$8<+`dw{3wKcVwucpsze08+B5~)&AF~F7=>0WQ?cy$I! zrE!(1W*xpd&d6BcqB+<49-II-5*ZJJhZiGuej%F^YU8{7T6iD3m`1AWfWyHP$0YEW z1{pb**4J6yQTqDgARRDLIs}}y9|`A-vd;)4#=>%5g3>5Pj=3=jS4Onps7-x%m3k=9 zCYGE%BKpI`usP>HpPi9bXg$q;u`Gq!v<{$TkABE5vvD2vL$oa#hZx1bKVKGWDVLTfjT-EV-%pPQ2&Yxz(};EleHMoiByAZG$C`_nCInsPv-C{ z0d>RED56KM+Xl}yhsGbp&Q?7un?1ci%YVmiCmU|CzVIG92TaF2;p3o5(Hf79EjemQ zAo$4;k1N6hL=hiV(uOX0cP<}5Td`tz0OOerwDsi;rUC3Y zJP#8!@NOIT%xVGkYW_PUFZ>-<14pAB|J%Sd>X{$5p+qu>>>5uZYCwEFbtA8N?WfZz zU3+^2T<1MiK}RHWaLM@J-+8&9D0y(3u?!@MUSY;HLL)fJ(|_;({^RY5y*(wueB9jj zlZv}#1$hmu{fwaDGp1`rzTlbBr=)*Ye>{#m8~yONjXksVpnbDuHOAKju{N;@%l$(~ zKgwOlsd*n=TXPDWQJCS|rPWhS4@#_ zEY~ZbXgg5Cc&cCLEHS93vBx*Gn<$J;xO9MEozY$himy_j<|%Wna-z*2)w$o!PR1M_gY&*}Qjn(Dygn%? z#6>zn=#;fI(NfjVhN}ds6$gn==@6QSLcEC>eJjI=WWvNMTL_r`kr=!f&;Y|5ckIKm zr3e!>5O{0dkB(w=sYDp9tx_Ee`Ee4#MpeOp>UU@{RRIbM2n|EQEFNYsf-rVXjY*-Pe-Bz$BCF1>TJkLg5eb-??dEwYdYlJ(;+1zZM<>yx8B~=f;Z$BquQPfr}4%i;Ew@=Jd18cl*xy z)Bkh1*&@u!%IfiG=$*egnnwZwkin$q#zYT&IiI&&xP9LvU|W1}J9H2t`E+*AG2k5r zc=KxMW1q#wz?kJvHMe!|thg52IQ}Q(8?HO<^Skt`V-b2+R#bAY!`~U%R_1;CGeuNx zX!nNY<-g;ze=b_Nq^Sd@m8Rm-N3=u-oO+Tee~BmIsHD@ z+tX4J4{;*Fu@d}1uq1sdd~S1BxX{Qmh|y6biTfi5ZEoZ_>3z%Jj({Ca@F9)fo+@=g zcqW=SJpzHcK>+F$Xa#d2spZ<1Z&%-g^$`uafm_EMsb>dIIz$ACDmSh*0n&cD>j~!( zM?!fxvP=t|gZYlk_oNk5UbVKcF$VQe+o0z(NU>uOj0Hh44Bf7cf2QY;=8}O=wdwo_ z2~Q3Bu>yGX;_HQufpVqwm!-669kI^D0vT`BIB~t})JHldNyXb$s}B zwf;&BozP@-5FTN-LJ=z_$ z%3QxTfno9tt#x;fj`3B{=}lI>xFPi#b|eH*?2I9KJJD3>1>2t7f9fF+-?EB#u?OQu z=hj>MBCEld7)eqhrXOZT=$IKq2fvScQ)qg0y+gy3#!Y;~16jAGQP0L|&rFYvzLfIw zK3%ww;AJ551L=7um^O?a`nh^r5VQTt^)0lR8YTP-JB^6BoX@wf1(?FFBAM!gT{+5X zA;>oWQi}-q8M1w;wP;HoA=QkVn_3J1TK`$JT2WOZOAYp}Rw8 zC4`px$&!%_h86>wI?)libw4ENYDW=QCvoXPMROv3SAKng{F*9$#>2nWMD!|VQ=T|y zT{-}ak(~^82WoU7tBlKi{%kjK0Q+!8%^mE07})sEXPu-w{mVV;DQ7y=BuX$-d`UG- zpSJAKuV%gEHD03O=W{oMP{*U}ffifEJ4;~%+s-SD>5n>NZW!^|eDk zc0PK4);eo!kMNGqoseVRO(Cau`k41;hW`1oWU`C&WUd#Uts^j zvAq`#{@grt@b;Ue-I}zg$G2XK%Fa2oTsrjk@0W!ObNe<3te*aU_V0-Uf9)!v|2~jn z5@*w0m^{?t5F4#TR`yVNu+r3645a&W>4txU+c^#F(}Fy8OAX)7dmYUyI;#-dm{2iO z5-jLg+KFAw>q_5*QH_v1nxa)GIC4DPis4#7Xg$I`aDF%>FTgiI(N;qN()L%ei~QA# zaPO*TRf$F3ide4~eO*@Lgg0*<$EK=-NJMQ}+gM6v##&P_F0?~H3e&9;j6UK!k1@Kf zO7JdnJEb=f6b%C3jg4)Mod}-8dd;D$P(fZU+yDazkyVC1^`V|(503T}Dws}HPE3@` zFu$po@WDgh?RW}@xYMM*1vbMZjT+AsCIRC_I_Ipj2`bznCcwy1&|2@E$Ma+$-xX3tpLC)EB;H1s$S2oP@bwJ6+N0P=h zm)djdvJ#Uj_7`26DY{X+OJtpA-4c$SWm@KtD(;nvSOc{Di!G!INglY+UJV%I9(T{s zKu*q|2AymOqahmaAT#PogDzjKN4D0x5Yz!w~43sUg#x(iCQNow9zCDCsa=^V`cv@Z@!)zOZNeVjg`w z_q&~|i2nf#G=_>7`9uX;rDBbiYWSXswBSf2IdV3{O=}KKBru4;0wKc^aN81$tE2v3 z@Io(-{`d9Y;DvsRGk{4%#mM*_1ho=4?CZn*v{SU{K7Q!;M9&iA0Iv;n_q1V zoE)oaKEJVa__Lo6{5b4lfK}Mh2~fq9l{~t2m3c&9EC&4!jDVQW;=}2ZZe4vmtG@y% z(C|9<@8XpPiNz$xFp_UL)3%aa#8JM~s9sRa12Jeglp<84TkJ4CaH;*GAiUbdOutVd zW-x_x+S>r6cCL2M2ppQ*TIqL&P*IVIoMCCXvg_TG%Dv|sDs4S++TYvCxV|Mb<*`5m z+IACGzjz8XzaAlt$9lklKp~$x-6I7yv*)NqRJ&nV*C=mLSqT^MuEDGfh|^VebUBs> z9Mj06$K&h)tlO|;ykXBS4@97s&t3V%`+wBGmL!)C8xVT|wu{GsbfU3`EUY<-kx?xu6G+ z%HlzSjnku=D;HdsdT-7isqt)R2s{Z1!p#gg7M9k8g*2@YqYr?6gDj!iqb9>?oy4Qf@{6rJGRuaghHx~S z_L%XuM|ehwcd^6Ff@IJQD@=|EpjFNge2B&DnnNZN-gcGA-Pk$1=^DoA)TbS$U^F8B zKI88p1conjO6{pH%AH1ovVbC@swDdgc_4oC-@O7b81jlpK2K8Q=x8sP0aqM)io`Kw zlBShV@!DJdq{q6@DnAc2G+B`wpw4zd6zwaBl#_K~qUmoq;5gquYJFBXC80kq_|Owq zoHr88|EZbqTz*@X@T2PU=kf`wb>N4)D~D$`f>fL4t!npAnbr_pn@;y@h!Ss3YM>k! zOrp;^KA-ri_+#wQmv0r3CnMGf5^8g+tBc)wg6xzg%8I&+hReKur!pB4aN;Jxe7F?0 z$Wq7l6RH3f7GvVV?E~tR92QE|TcCxWiP&BacjBoj&u{PmiWph<#LjB5eou&6=fTxB z&|p)R@w9|#UK8D1 zo-p1fb^p|aMV-8E9T8IPX{e%s()dzE(B|`U-wlK-yFcvsPXD4+vPlJ=gsD;psTn^d zXarTL=#v0i?0wccWB+-8_ZgHBwQCR{J{Zufr7`{MBbN)s*v6NocS2Ibkld5a3I@`g zWOY044EhlRB^-tuJBN@=mLfHerHXo4X8@x2>CK_A-r~R7K>sy&3eX=WdiKdDP70oM z?g%OGiVOQ(nsLDcEGgh#mwIe`X8$t$eD{w_C*g8>*n?4I?%tUfX7|!AmKQvK(fuj= zR7mN}#*0xoL}UH!fl|!}hc*D@5%Q~4x!_+5+Vx$!un}xFWfxl#@1uyp`gj*SN~3j5 z<`u#AIoH*g+j+PP-D90jTJB=Ibn8!DJc}~62T@|S=vZM!Qa$`;aAd)*vkyELKVc?A z>)1VeJ|8ji^S(k8a7a4mfA?RLr?FQvCRwkoMP=m;>Pv@svw@8jKgjCfK*nPJ@zh=8LBJV9A=>^;|2HGY-@7D5QSG_4f(JzX$9+iPk z!qA|uT+J*4UKF3P?krnB_Si*HRK^He8F+|KrjGqq*%sQ_){}-=WZjtDkgR?~dA;gxWg3{Yo{A zKKH3D{!Un(S^v+^HD@Mw9|<`@2RM(zB&b*JtS`aLreHgQncnN z8(PGSL^`_5c+3WyTuimw<7`sn@8F=_eU#c)?tW8 zlD9%4t{-~%YyEE*nn>9}89~XHkgPyLo#aIwL2LiQC(cZipoK^-3tu& z>=?}SZ}_jEN{WK7H4?fu9g9WypfciY`~7;QPK3y!S&$@I*3diyYSLT6Fx_DNPdFqe zED)=jq!@a(f+SVcK>&dA<(|mrpM!#qW*@`Rswhas@^Pxh7{2+8n}shyuv)0=^P7Po zy9?-IWNPSk$yDzq#0{QjHaiF8u^{STc%yKa=5R6A5LYJ!eIuATaa@}Ty;_Mc|mI%JER{7LKv)Ryuws50!5+KJ?;@~5~VB2_1M>`Yz(By#92>d-le*Q$mw=c?^;{9m&}{> z<*NGDYBUXfUC;|_iDVJd2GVEOdN*iaZsJsTkiqASeKye+2d8GM-!Z~{ZOC2S6H~ee z_EIph3Vy^4D9Zbs4yTKrFiSE<)9mFhxS43DL2h2;bK;FHo4F7-{bKkE*wMqpe<)0$ zD265X<)92`5|xh|qMjoWw}QNbys0${hFPF|91Clb;nyblgtS1XU>_Bk!CUeRbc+T4 zFWyD1;n#ecZv_J&v&`95BjQc_P`zbz`7-O2UjH2S)Zt1_ycvOHVD5E=>f1Yi)LAjI zquiHs7Bbu&=y|<GG{*0MW}kv@O-;``kZQD0$>fRa2!!QlugU#7^xyGeJHhV*AEqt zqy!9pW6)s3dvI(9v&F>M1=tIM*G{AkQILM%o;F=d-K4}Tw6;Eox_u6#!+4-_2c5q( zI^`}d2#hPXO>fR%o`K$V$|CyZ*Pii67|N~gwE-NAjlpC7ByEVMyl3%Cyb&}ZQz)@p zm0#jCqPh6xVY(C?^CG^sWiv_E-l*danB#;%m06}njRIhdMut=eACVK4Y>kig-M@b& zlLM+1aW{V148SP>`IZFDCXox)hBK&&d3}H*l|!}DH)rbC!k8Wsl|4bv2z!;hfRTVa z?Sh&>fS0)ra3;F<7%%|9{{sJdv=6ia^xsvlh-7t_-WJ?W*3QMLn*Ch!7TVnl<*K{q zAb@AU2Aqz=tFFlXcLNgAyOp*NEz@!zy9_Ru`ELFpRD_sVU%a`$eAAj;Z3@nG_O2$N z#5*xw50&)FnlEdHMfPTN1ohFRh?U##Wu_4G(6})IroC;?OPs5lz3jn4y<(2#Ud;BR zT2gUwy7mEB?*du#bxe@yc$dYa5!!1JtULnNro)AGjuxFMoK8MmXUBA5+!R&Ly{I{r zCg?Hrs)nv2Ghi1|BFpsa`G;%|hYd!$tE&RSKy%cHu@Cx`BsHRKh?C3}lZv!c!_gEX zmZ2K%b}+fDNCI|M1LO7BJSlT5-C_yj&t(A)DXyI%oMahZ4${6M0aV3qS5xfQ0EZvi zde^NzIu)tsdt&NJ-ZBXQqrZSve)~r>Q-eJqbU!w0TXU2htKJwuY(eC3HDgEeN{+X~ z>S#Kr*9xPZxW#rUIZK)I{?6#|uvA%>rqqBh_|yt?iZ>{J^3Cg69JmGo`EO-y=B#Bj zCRYA#U0?mPN$*Nz)r**8F3aN<0P||eiI&8p=c{9flkM-l6CsIT%)jWoKai^Jdg|N5 z*D2qlL;jQPK6mn$Rt4ws?UJ&mml$0^Cm&72xu|YONv1cs!pShWjnWTecNv0L6{{lB zu=Y?%xD)0zoofm&TDsYFn+dz%;`V}RZ%~7Yxp}BuN5b|P6?ej~$Sy_W>!&|tH>OOb zWMx+e9dNSRvv|zQ6FQRotDnw)Sk8NT8lc(u{3Gcwn@$2}?2U58x-)Xk>7XTDr@K}) zkW0hDY#_zx#IaKM;78t(Xah%Tl-TGCzF4u1E+coemoOuzC8mFt`V9No4n%W~^1H;@pOMEI}^AmW*tuL^5jafEMHx zIY=3<90za436e>;*Xn3b>`lMQo+@4>PN~h_g|M>3n9iEBLF*SxJm5`chVGf02TYCt zQV>n_ix&FDz)9K3GoNRGKL_0p{1in#tVz^sJ@BCNqOsllF7<|Et?1}) zgWt~=p1!s9Rib^MYplTTgl!gIoz^9+=~4H$iAH*-=_FrkiA3(q{6Y!u6ZNrVJb(Z2 zES-9Gssxqb6VfMzH4Q2<*P(KAgWkHR>2#}o@oDXKV^!Fd^NimdEH`m_^warwm2u!K z$rPPHZw#(*CrL0XC1mfh@`jDAPg=?5TiAYBcP~&(c@PxqR8-^J+wodB2KU9Z*~Y%EQaltobyVZ}3JLI$bk zCUe|LCk>x(gjOVZ4kUX+W^4ByLRJZFK>>^^dz)7?bR|2)lc zm(gkSkSMd^p+o3_wb*W=C6f=vvf0W3!7#Y1n66oklXhA6hvQ1(n`l0_4GR~C%Yy4$ zvPYHEJ$Jo_Vc8CN@HE)>VvKp(#x#21EwIu-j96@5a7oQBwBcC^fY^E##7rz)S zo*ndda;?$3SWC-N9_Tx=&D0dn2`$n#X)81Kfvn5oYjS}sI$jj6h$+BpM_PDt{1ASJ zBDh4)o0i!=jMY?sl+2DqB9x9MSP)W6>Ojr}voiyxSWanj1Tzn9_Idcqk0^@2w!Gym zL!xROL3)1iUiU5saJBH_D$;>G|m5RMLV;`2L;`HewEPY;hOM>`y)2{xh5 zJYtwZu^OR~@K_T!0eluS`qC&@>wgg#`TrMTpfo>q_2Zrtf~Gm5*{9IN7)LcB#-X37 znifg9raSW7#E(Ej8o>{;vqg83^pkSFhbaLKyStVQ6^5wd*(9Mr*gcV3tl0Qn&6U zJ+wrGKGS{8{cVl?OZ7vA+e$;x2}Yk<;4!ZBRSTnfdPB}_SqT2xFzKx9Cphcqjy3m1 zo-oxGXRAkIbkt@fe+twD=3;4q5z6=E({-dBb#@~C?YZtW?*+YZM~ms)y&l^Oq@?w= zGGU2w?fb)SU(6>)7|x%re-buGn{zpxno|1_kbiuf|W;-rf!{mJA?78TX~Ok=WbQl;%z!O3o{2n;U+V~8yxg`b=3x^&G;&mgM?N}7g3tgQhA2Fq|)@ue6b zF!=Wp9rNl?He-PZkzk3E$T}w*g4@bTeTao<82m~MXx9grF^SN^2PuYtPDNv1JmV%e z*OR;LuXt{Ak`$nT#JBysM%ijQnFQJ)e6mmCWL@unD97)bi3AvgUDaHrgQI^CyZ4+f zxHK`5dgGMm@>4qyd-{E??tVeu*}e?2yRKLBQ@LBWJXCqL_xM5!WHIQ4xV$>*%mg({ z|NHxiSo?10U#7bElyRm&4O6uBt!AHICOKsEU^Sabri zK&nX08Sk3GUeRfPu}Nrq35B_S#a+fmkjyh-P03nLTiZICp%fo2_Bw7#Y>1^B`Y$9a zI^+(nX>UvO1j(H!%Mna(5o1fkBc66ZMb*{5hx4M$7&i%-J<#)Ab#L1Det6m3*t0*s zL#lJH>c*#7i^QDu?mkfZUI9WbfI=h#=mxgEy$kz!R38FcvAi&9Ul5Xl*degzg37{7 zffAJ!!Skf{MZ!fGzslpUpZM0Ne_2I%Ui-+_c7WMapM8KJA|jw&l6RS5FmwSj%yz5NQ!7r$%+!&`kEAN?JV z1O9bI=Y#nWL$hm6ZF@nab@=?eFF({j|Fdf!F>F0qo!NUQe!`xWz%$A3@vxpbZ6f(} zxX3u@FQ<>nJAW_>yL`7e?)ese-E+_D^_Tmy0*uC6j&`NW7ui;{{=tR&h?cthk*J2Q z{650sm$DWV1fxbs;ayenuKF(mGza)>`9dSi?J;g0VCrXapAbwyr-@<$=j0*~Nx(nF zlGM+rN=OvsNO|F)J5En88tviR?CJQ?69068hYWcRU(5Sm&vuV?uNrXFLM@37JBe6u2?klJLTQvVcNP}ACe!n1nX?^x2L=AUD1^NX zK^lznsui^bHuDEiMaN@1mN`peE{4e8=6>k;pIIta;-E^500@frB};#fDv=++2#j<` z!D6HtDCT7poH35y;r1%oF&z*tXd^J}2%$7vd1YZp2~K*U0}_u=__5kIGV$jw^X^Lr z|1{m}E2~_n&(j~nSQH9I_%gu6PqQ4R=~v~$q)_1FA2xhr5=ioS@6U!CU6C*YI13Za z6@PBL)@|q5DA-e;@&NbaV})1WEBjqCZUY@6omE?GN8M(hse)Xj-W^Ww?OTH<)O40oJVuIyFP?Bh$H>ybmr}@Z@ERwXY zyB8K$)Zx&t`HwTL52;MSDP{t`h5#;}rg-xB46H<_Sx#|R+P%;0+&YshiwiRpN1ES# z_D02q*-+m-DU;qb4&5BnaV|Px_hM&k+nW%#ve^>&ww!r04-I_9R*W!0s7Y*#+iL^< z=9X2=N1-dG4uMQ^Lb)VLrv6-wcQLzhBvTj!ECL{V`eJ7GB`Zy%-QbiRrSCm(mZrM2_8YoGB#oZ6xL8q{`UQL&au`nS z%(<=sdv`C_rr8^QUT0Qa-7*sF0sap{^Yw7yW#7LgQw{S`{Zl3XhP;YhO<&V<{y(!$ zi!l56yXS|KJmRRG2}X*ju*)pp91eY1Ar-+S11Co75z|2Z6|i?IdC$MiX@EqX>dVq) zQ589ck_dd5Q)4r1lYiwqa8C%g)pNvfXvkk;n@o)Nm~t1PoZ3&0q+@X%ID6yU*aBm- z&qnD}FXF@*M)`81NJh!2yxpD0dklw6h(~T$uP;#Zt8J&oNH(Yq&!yzn^MV407+BK9 zKhsa|i-a)~DF&O)EJTvDILfxCA)He|Q0w%$wk%Whpss}w)cwFxYXCdyq$tr|&8Z+59~WoD$8pDXEo^!ecLbq<|)nPUbQwS!X{2x3cOo>PGt(vcxG zU|GAtAnbk+=qB0R%=DZ@6gim*8t%yqa{?<#@XFU}9a{zX(c@+i!Z&2w8E*3hCMz+(wILi7ob?Uv%`?`s2u0u(1<`Y z6;D52yIv4sQd?i9^s|a@p%yft#nzxl0zFUSxHiGr5L7j{543QLqM+V8)1yBUPH$Qk zVH(|PprXim6s!L5Yh->RXiHVt8-|_TzKg*RKek;U?tuhu4?|{zBj5>}pS_foIU)?V zy@8IJB``Vl>_{+F5LS0fgf7Mb+4#O?w!u~!?y~eIvY-W{)Q-nADR7?N3pv*TPnZBI zVLr#^6MZ1wZNhR2i+ICSFN-RL3W}6ypC+~jOh2yFsYt5#r`duW0S~83-94?On+R(C zTK0ERmeYDTfHs51+cFT>GmEK^E#8+oYiqaa`InXqlfV2!%ZhHp&m?{IHPQqi0GMLw7xa!kjxHW3jS zX3(XAJO<<*^y%=qu`vX#ADg~UY-=x6^bGihg&W4}Xp5$GvF7OESa0p_mpoKs%*}@UB^f zsgE>-*6tCmxZs!jB}qmiej?-J-b)wqjH?g~(C2 zT?pE7rsaJbS4uUk%yy4LDu$y!1!mmjaN0<4j>*cmEnJ>uEzgqcE=-XP8qf-=@iGKCA! zL!+p7)93BCX5sxSYXng=PgJJc?m@e|vZXn;rOhk+7U(|md4YA|0r`~OTzM_*DPE_0 zz3p*U*ueO!g?l!Ik*D^xIFXE;j|gLvcHellRlfe7i{?oEzBO zL8vpMwdq4LRT;*up=v>Gsbo^4v^ngKx<-zuGeX8u{8l zd(uDPD#*3F;||*I(D+B+jdJqs}TO zdwWk@$;tx5i)hq@X?=$;cA94l~N>-gRA8Vm+W?D`vgB;B`|NkrsWzSST-cNktj z7@?DV-_hK%TugrH3VYuR0cxTaJpxKM1aFMqtmV7-{M(5eQLjT38}^+>_b)`9oE<%U z+nusbc|LB$*7Ct^tHvC=12@XJ*ZYI1{7^Ez2`BEBB$y--^M&)-^9XEz0Yt}P*j?*I ziKikr8@vs(Dzm;)Z~{?RZ8$6DYWV#5@#MCJ(_tcQwC7MA9qz0w>F}4Sb(y(0x%Z>Y ztfc1a(@)(0wcga}FDi9EsQ8$}Tel?S%J)q>!yU*pqvJP*`< zq9yKq6{L_^)v9)ZM{Rj%7(N2mjG}-z*=6(I$|3esj1L|Y!Ho|Oi^r3TRGEB0!ZwpP z6IRb%^sNSCO^T#CG$`m0ZIi_$+GAbn95Q+yZl=riy1v!k9Ote`J%W_ITBF^kBo!K8Z>7h5c# zDN7UUfY9eF!2m)#2z2gktY*f53To$H*4)aXufHK`yvX(q*RE4j@d)JJ} z&qF2N{7AB)hdQ2iYp>%8Br@mZ|M!r80>5uLd9fg^FS6)4;NgPxy2N5p2`=&UKg35Y7|e>X|QWR z)7jqZt8(wtOu7KkWjjxzbl#E<#l+!SU z%M#)<#8kHh(`p2yV!X@cbB)7ur%j@|L7hq03{SZ*0lKpr57Fk#Wwkg(&bSfr>9KN{ zf1?l6T@I#XdOHNOo2(!v{q3X@!jjVkoi^%h_UTazgA)a1i6Fto)!3evx1r}6!5EMQ zm}pZa1ck2I_%_tZ-uJ2WfwmUdyp4N#8ih;9kmPbP!6t;*nHQU~b(&#vWB7Q!A8v&~A>U59wPzn(d0yOjKQhX+&)b)E4_PBbiM6m7yQ(n$ zG$4B`(-c1nrX#G`LGD{0WZ(f!J(#{l%}fij5?@5vxnHCvMM-l4>^eQINZB z59~PjPB32*5aY;i$q3jEOR!Bq9Sb+-dcZdorR-^9X#U8&I#kY6kP&Q+nA6o_X9j1W z2gFcVfJ;DcSa&FoR_s*9!E&U`vUj9Sc*&7r%a` zck{&Eg_mQxR8inSM}<~cdreRtN`wPK2mESaF}kA1|Gvm<0E?m4O2xJR{QPT&vrRvG zOK$c06r*r?ylq_fU)D=_S&66K1(%^!r`t#3obS)29X02`N)LBJw34ZJr49Ne)zqG&xR}g0NvhS z*H>E@xTO^Cok7qVfNaLaF@3wdl(sZNWUFIy4kn8|VxD4Hxw(b5R=;|z0pZfQ!s!sq z5&>7goDELTKC+sVbyiS}Q}7NaKdRqLUSE*|b#x9|B~IU;)UOT13xPX87nq~soL<0H zcNQceV4@lcZv-%{+zQ<-XY<5PnXmu zxXyVa?N$5#-QbS~B&x+ro6fXh8r@-5|MZeK(_TzFxvs0@yB$4!{OixfjpHPC&)V<7 zQ;Fgnf8VGP7QrKIQ3>s|2tf=)W{+eZdNo}(@X#pBecCXGxrseoN6i=ptv}S;04@V0 zo8HB&)x5->lSY1`fF!te)YhYmE{ioD*5^I?LNiXR0;;2oitgfLx3jE0j`};)EgcN} zy>RoH)w%ZvWVS!v;Q#(wz}OM{+u!FSkN4c{kF;p(nC=fuwLs;B`kN^0K)v3?Q+-if zyTnDNP}^n5LTIaT7u6+AXOODgz! zRrLIYH7$n%j#(jMP!XFZWea!%+LK>4zWwf-Z8 zp>O9+`ym)0$tX7f=?$V66A#}Q5xC>~xBA@J^3r;&1< zJe#5UM#H<5+NvIfAj}}x-OK&?E&h$kp1?KpvrFsD-QX0VQJC|f%l4c~wJj4s^AIge z!I#^H*B7k7b?iyX5NCT|(No+R+yae?Q4_I78w-`@r|e?W_$6h*x^qFeqWRtK)hRG2 zSrl(u$LD5R_ZqwA zmjO9R@~Xfr2DfwNQz5XP?_Y|7)`6}Lt^320t>yjSuC0Q9%6jx(|GFs`S6)dJx#}6w z1p0pEDp-=gyX94hP4c*twoiynK&@JM#|m`9^X|QkJ;az{FL++Efn{XcVvgMzh4tib zbiZYH-duM+b_DEE5yS;mp*sV(45kE=p^(5Vbj}JaR&?zsw$wyK9lg$Qh2;@`ndD1k zao|HJBLc^T>pB*IhR*s*5;57l%1Z_hMN>eL6t|RV0rblFc^wy*zx%BKu2L zHk&d;+MKZ|+*}(9q72|>7FO(6ruOnEiA51A!g$oazrX!MV=e%EY#;}Z=y_SwVmzSsf)+v=7<5Wk_PEon9?#K3f#98)13noPND)h6eYj3@PMvu{g z_f)Qi$pENCS;r>gU9Jbcnw^hqx1HNU!|m2M$zE1C>MBM;}HJ-lIWCRiYsM)}W_`J%2&a$GVrU{0gB zLFNETn;K@~g2h^zKA}@nM=tt83Gf%aLg>M?ve+1Bd7t{~Cv^QvmL!Z3TQZ+#R_N|Lw&?H+W8iYt;m~NW{LHhk`)Rh_87ZGO^k^nUz0Z9%J@BLI zcs9h!^XiR~%v#5M%S4qwA6%*s4_D9*V%17gzM^Df7DL_%ynen?+@Qc^sRHN zKRd@W-`ghRb+oLNN0rCs0B32l;#P@BafJ_vxOO)A1QY3Aos1+5R01JFYmyf*hK4ul zbsEYU;l=vS%vUeH(@zk0#_L05LKmujD%7&?Y#y1#4IfI6UHt~v+iM5y$LQG)8H4Hz2_L`$jSS*n6Y;hS-L&z4m0Jy%1U%2m^ zs}G{<>w13)Gblpn@o^+nr0=2@#HK+gyOe-1xB>(s%*PqDPa9O@#56KS6k#9-nZ2pB zbN9`6oguW&nC}91AOa{S-&NI!@h<;l?6M$Z3~4R&>i@Af7g`79$GviHE_3g**q(TL7R6%z{fBf3$+84hAmOI+A{T_ zRY8OxF~^UskFf~h6lbTSUxr2GlGVVBRNiPOT$@k2z4i2Mh0(?8HxGWCPDxz565_@m z9xH+kdF|gDPeg|CFMZ^Wg;YuhSCX-4!tO0Z-oc@&?M+ZshBl_*^(dGNCi-Kt0bHyd ztHh>BGaOwZ?Lre^SXGQ?a5mJZx`bCHxM|YW6_>xIfYuc^%-!|vdcd87Jz3HQzEewh zOx-H9K_QPozQeS|K5`pMgc3wl!2}9Hgt#!Y!2m}E@Pk0mBK=HpzUUJV1RAiNmVl)m z++F1G7EN=<-tiZ73QiMc?)X^P;SWN3 zvo$9J=|Jq_(b~WJ`@Y>%*Hx9QM##bAns&MS?~x`K5rt19SbuD~{QO?!rq-#)0lWI$ zibMDIdPSZ}fZbWXR=hN1Ybl@T38-%qp7?K+Eg++n%PLY>4qoZU72G%Nl8}gG8wo-J zBY}g?0^wWhL1O)u5Jhf4ljuqd8xuJDsoFpKFr$cZ3`rxo~Nlvbe^~1hUk~eSp z@HoRk<11w75aX$65-DAb)CLD;)YC*{hhnf{K;+;d9ya&C3DTq1XkS=4zK+ zYTvkQyzb=jb8$#PACf_^CLG!4yHfqSi7`*E60;$Z}obDj|gIYg&oEv|Hb@yhLsikADh;Z|fbjQt|%_ol`le zB~)Xhd!!6L1QUjbBZ|RQ4m974-xE~;prKrdpmhO51bb~WD6k51w0YLIaLyhbWSKN{M z{IXA|fil)KD>t0U*mx2EJ{+wU{(Sz~BgB5i>&fDS{QaAsqlr0P^E|yTd&Zt6B+!PqO;U=i!O0f{sYw!P>S>gWuE2H?hf*IQG}?1QH_I>G zgO{@}pgz<)s@Ic}A_#^uGcT4lm4f2j^&XYSW)&NS?{VHre@ZmS^e&YjC?(rEyH>wJ z(5;$5{;BJ(#y>6?575`y=k+JGr74J@!)#bzjX_;pe8PbUoqda)O#Y~w0?SV!0gMQ^ z=TPDSk{g#{&CwkB3Ce*)mSk|fUaH61jAk$p zq4fnO28lsX84;yyyv#v62Q7=ZC+ZcVx9{GldSSdDf^&upk%So4?(lz<93-GdA^TXI zJf4#86aMORoH;Gix_O{Usw%YcM-&SfBk6}4Cao+t=DTV2h@XCI(E490#>)R?92%1e zfJ7yM2^zjfE6)3*k z>st33GerN8=2z7abLkpx;HM*?NZu-{il3V6=Q@bxcw?q}gAyRWoq8KWA#;H9# zo9$o5?=weK;BNKV)UyS4bNlajcA#vHsfBs0_*pF8a*o{%S; z)?oWNI3ychD!Mlmf#y2lf?YsF??k?(-+8^{YW-Nb1KLbeyv7&9BF#l~F^IBpAr@j~ zkd$eBgAJ|10S;-9c8Pf%7x=p8uz2gYw-29c34OIvzf9`e+Jgdr`yA*5NI*(^4|bF_ z0!iY+2Q!(Z92vv_aNXBcG|J)(l~-_bN-f#}4EK$cYHMGHv2Pc0%=5XA`M~-%Y6Hq; z9Vh_%U_!KY;he#5*(pWNvP^>Qq1|RN<*H)+UdF)e)G6-!KsB0G6xDplar;zdeL);oWC9m% zgTq}GN)n2uF_g8NQ{96pT+KaUXi$7|)joImnuXu*OiYkQX^z2z!nr0LuFai#w|yvU zdonPzwa7Aa2{G7~XzbB)G4$}227L@MujP`-=_aiw7Z07)GO4o*?fstqul;^J6h@7Q z=FVv@QT&X3j3x}?M3bqn*^dbkjN z1ULi+#jME?ErY_GCa)j)d1LI4hi^$XCYkTkzAr=_GZOez&C%~g-t=7awnTa$VdeS5 z!%#G0Q)f~{%up|w(3yjT1)TUb3 zBkg(#fsef(e)5VkQ7jDtka|u8K!_)Vck;|{Wx|f6KR&+snDl1eIK>14Jg@R(?*bg5 zuFaR5p8TNv=h*tUtrt5jKfF2MQ3O>yq9w{-U6NUjh{>KLssYr%G?ie%)WR`coIxa0TqDqX#UYl(Ou)%z>cv{BDRx0XF3_Z%ExO-lj zHFEN@(8qJi+yTHk6O&^IvPNW}iz8M3k9hDKoE{UZC$fl9(?jmjhKK-THy34iAV*|w z4Zg>dOK6!AqSH5DWFU!6)~tYg0Gp!If9fSlruSsI%r+n4Y|c>O#8|05LR;e#i||CF zlBC-Cb3rKVD;Qh0_LEhG;Mq)P30?wA&(^?{bR?FOvj#-q%vV1RkN^mmq!+o~Mm>VB zg8$XTOh;T7u?cN&5&NpE?eA9&@81T2KKEY!yJacK@7$P0tIt zXaJqjy-rjxnaLYld}>sD1Cxu9hC^UHH%t@`(!0Q5T<)tNlIl!bnR_EFpZht84b;80 zsnO}F7Oq?84G~dw!rNoZaYB93v!Zi*w@>a?P$JTvy_~Z&gf^RH9lKj1$WYcEOHG>G( zCaIHGFD+u-jIi8MFC$)|dPKw;+)H7MOVFY$O&n#-0r&`wP2^^%^ZutH`?WXTIP*$h^0}z{7JU;K>Wzz;GG7podD8=ZgxS!J6sfQ%1!;HFiKPbT-*4h z1J;(sVqdsnQj0=p<0g+o0BPWlGslLB30oTzq6B-UQ@#E{;O;gX0c{UHLvFc!-}0~c zv)A`;Blj2I>h`$2v-OBrt4dfwuYLA4`oeVogXzqP_*St-q2A1s-Zx6O%AAf>d-0UC zOG=0nz9rlo+%*UG1o-}tM!$vJ^5{s+N^b%$40($Kc5mm0Zz_OxQVKh%e7jv)*p>!w zix-$-ewY?nGUs)E8j?{7Xl*%d3J=L^(K|Dm3u>HFpq{_#KJlWxwU*G#C|HZbSxbr@ zAFh`b6SXas?y9>l!kV3fgwm=V+$NH5S+;+wx4Ep07ePTal&o_3BzljrNtSh4k&Na; z;jOW&3D|?Jg8~+1)0Dk!qXY3-93x{eLLRaJ$K;LzG%zC^ zRQPNoKW3=l&&3y8|7ygEm^oqhen+W@K=lYh5&%Y%!W5t@Z4SP$6@BV?T#uuP-dfJG z{!oCnR9Ls1rI(aJuIPdqyy`Jw3zgat%rZ?~_xQmlotg<6vnuA=VtW8+n@JJ#PYnx;ok|NI<)?OHpn%9K{1Ohr}RTBG(eO+nA;U z@hV@HfaMI=`Y=w$63Q1OY|`0PD(`f@;9k5k=@j7wN^$r7b(x~|HG47^(g&>)%v5Ke z?j#9ci0B!8#lbZ}tP|@G#_qi(-+d?h>TMZL&Wq z58)~Svsr~^ASQa4MKR+`Az838rH`aQg<==)75X=|Nd_?e$!=0V)Yxn|J|_SN)&`2L z@#QK+Ry;Q*HYrQC>f5aIgsUAa)d7QB>cBlFAP!vF25_RwJCD7)ng>W=+lWZS*GZ$q zGDfl9=KYKbFo977+|%nCwWr|Yj3qh6WRh)3WF5cIyuO(b9*D^nehQ+bl4kEFHldGi zq{>ilK)}zSJ1GPbsGW)VsaXiW|BVw;cc=IERLrY>!n|j7%8Nkc(m!;tr21NK{U%SH z#JlU4hTR0}dq!;r)l<*r*&8>1ef)Q6Zi0Q9aNmDcko~z05#f{y^V=CUma_qtyHsKy zuKpq|T*L^7jx!HDMNvEjoXcVvS8$fgZ)dLZ!{Ckx|lZKUmowPYS^RTI;y*S!=LMO zgi)&)k%+1Dsb=0*f(G)PCL{KNgJI4#PeUd|&O|7pz-b8Oyv0Yt$h5U^z`zGlK&&|5 zU#HzWH4A6mtAujhneS75anoDe@E~LDuq@SrP!Pl5@hNKckdkSLCJ_fa$$CJWbF8g} z@ps_v>7~k$jjtVHY!W)xbpNALHK;R!tYX3QNdZu!+hR<87e6c*;G#@yaoivdGAjx1 zntj@vW(Gd~)p-QGAZJnQ>!;zzXK+0)lAmrmglIM3W11DDv7|UEwy!M z5~Ow05Da_)SbE8xieN-77vl<+_JfAK%bA?Es|>-e0aBBj+7|W%?KBG^8ER+UE5aAo3&SGO=#q%6h`?RoF-{>=hE9o>BaOA*Oj?t? zBN)$#;h+-^O_TOjLcWz2yzF9GTF_KB%Z~4LUKY&2VEOhLluj85&-aDGeZE;xVpY>- z=cjY~Tyf~`^61!mG0@{EME8O^^f`a!>9G%ST9(kxZlOs>rV`{{mynTQ!GywmQ(RP( z1@C|mI*FiKQ}hW0tp95!zkvGy`e@UqYG;tY1p3e0qpuqEZ}H8;oogmEg#)>u^Vu=W zoV~IVaYF_4eyQ=lCk>Vst$&R-3Tzp&JHNm1M)kiP=f*<2-o*FyCRQ#i((mmnGnncg zkP;Gn2(j2MAu}k>SELXLr;RM z*P*&>Q_H~qsv%;qF-hbeiwtaDpb!gSrSV*;Jf|@pl8GIL62YG~gq~0M$UA>iZzmT3 zNGrzkNn9DM;V}%Go6fn3!Zt#Bd!_+45$Z zEkVtebI1^wdfTs?o`e2fYr7UU2`HIUFz}B6P!jOhxj!!iWshEsxFr;6CU}e0}T>n?J~!=v2t)5Cq7eQRrdJnDn?D7fA>cNJj~tm+L#mF$bQ= ziqORJWTuFEiK~4+uMHY)q~B}WGP@lVcs5g|^C%&HLN5cM$D=K0J1|-Hq8=nS-V&gq z!_KlpHhiG&zD1XVVqqpbEPwh$tw$><;BI!PAdsJ3LR?jeyq5rFHRUiel3t-v9fSX8 z9Ruq6>i?n&O?L&jdSYlA_A}{cFlhbe*{vrBYau$H9%hO+7G+-sncTm8j1MYBss($F zx}LC$OQbng75-FH`850|L&HxVlrlOCjg&5&k`oK%ghW`tQp@yX5^9+tR^tJ8 zGHb{BosT2hibA>>WU3?5lm>djqt12wxR?r1GfUVqIq4Dz5gLsF05AfQII6@MBgw?H zfH_?{qA&nelsMyz(-9!bfMOCbE(se)GQEPU>xV3pKS+V`iplb{W7){JG=B(c9DG!Gwa*=YF|${kB}^wA%;RY||)_ z?R@arGme#|b=%9u8SAXqqFtzKbSfArqo=1W22rc4>LM1)00d!BRsjGw2sJb)=X{l` zkWOS_;UHGYK^PbSfQsTElm!3)fT$W(0Dy8%m(bQgWibkaspyQpYgMlnt{2H^XEDpV z431)1#Vl)6F#Rq@EHFKg#ksH&?U|uZ?&)cu*Ch<%l;vfWv$8b(b^V8{39zpCa3_kQ zNP#yu5OE?m$SR-|24PuB6uq*P1abn=1Y)9< z%87K7=WrAYWB@=P#VVQ?)6!7t~J+OYoq%7xh8-D{PTEf{tfIjY-2zkK-^zC zo7uSBB%w%^|5L>2Z{cQ$>P^jmKQ}cYV2t)~Y?tWq^?!L{QU5l@4wlfdakS=Ab$(7` zZ)2u?OMph6hL@X%mz$THkA_9n;f0N(v!#pW3s=^g)*LT9FOP=bf*1hM00awmRQ{&C z?Wpi`GUh1f9AO(3p<)`$F!fKu*xe^g<}Zrsi|k&EvNB@b(M1RQ4Z!4R1ECr>o>>TO z5EKKp%+eCXU(Id$onFkhZ+!6jsjTRKth8ZN5>kMFJEM3TWOQtXkFImFkH(qT#I*G z1RPbgo3{aSY|@JUU(QN5$?|{iVAg|d01U)(z=?9ei9uR}VZfOK^A_Pj031`821lPW zzpM-YfXfrm$+}8?NKpFtQ|a!%2H|Gd0RYBB+2=(00YpQCbIMuZnTzP0i}D-@#SJ3= z>&N$&U%-ygW?CiLBCz;kOmAU9fX$NSVoBotr34lT$^A-`HlB9;Q5ZjMBc~LaKGhWp zPiJl^O-a8ULHkkib#N?Mhf@1;QpeL=M&ky=UltjMAF*%J z{ww>yz;QF3C+pAjqw$WyFoV(-(Z)Y;jmD49;TdEtcn}#SqfqLvra{hJ=<0Xda~c2$ zAh_k?e|fj8{FjRh;=8CYVL=3}pDLNMQdR z;D1Su6LcV!@vC~u|5I{uSfaiNMbXR0G3drIy-Io>npT>c zwNsjh^Is&#I;=P)tT-fWDAN|XNQ002N|44&fcJfg0_Iin#kqrs^K7yVyL446B^uRO&M z0-Fc`LI?r`ufyVK-Vp5H@02e`1OP&D7P_E*As1%}0T7nDS(pG2 zXZh;Ef8Wgi_tgJF5Q1OPZ2ELT(D9+`Qd=ent{Z z7JdsxfB+r%!TZzkyxQT7d&!&3aG)pkV+yKMN&oyvkz<1NA55kQ2x7v6MPgSyRg}d0i)ID>RQK ztq9r51ri#&U7|qc&N}Vi$^6Pta25tsP#$lcaT_F({2pcWD>bum8O z#A-PJ;8Q0Apy|XC`A|}ebziyp8vv!Kr2|4hUWhPN;3>p2Cz8O)HC2+3qqWe`U}G)B zkziv?)DV{|EYRRp;4DniK&MTNQz)e=(9mE-2M|<3;7HD3y9CF=>!)#l$-T3fCq~e)VVNd3kW3SSOa7JpX?7ofOQZA|Ljl%BTWAZ zIpO^0uH}F3U;h6L&Fk4!G-v~4qk*U}-GE5Ga)wOeC=61HS|R`o8yt1<5T0#@gg6BS zVu=W07RJORy|4<25FV_;f@wW_9+EL(%-n(my)f3sFW>-yX<%3M3~*@+6ZFD48_Ck` zX~9vm1Jlg;6dJ%Zuq$>P3N2t-O&^(Eq%=#q{!Ol3g#hb@i(<`;o_To#Q+`C;OW3BR3#UV+gEqlL3-rES&yZgXKmORw(^0=Q*`N?`xZNQeW=75;KIt1POtOf0J$qfzf~3yCsyM!S*)_PQR!(vmZShXRiuhyygVjtgN~vljrfqfLZ%-UD@JKx1Y2QBe3Ha)iUyt; zJCADwkF4+pTw;I>oU;7@0F{vU9u^el>x%~n!Q^64032LAsvc<=jEgqEGsjU$h&fXb z0K`K^2tq^pXn1ldSlEhC5q;=EZ-Bw^dAYV`1Q)8oc%LDr1eOGWpAIDqf-NNUIf!}n zTfqH{98LHx45R}94}eeL^tAxc(dDJCZ+|-nunEa&S$TxT32(C>1LpuBr-29wvECFC zdGZt{AtfWHproP(PH&Lgl@JC%u(1AaIB()uSbq&2Fs|GBz>T5fW?95VQi_vHT}NJ9 zTswn5gKPC`&1lWjAdwC z2Y&N^!wkB-3w-LejUH*IZfbRp77`PRh?3D43wp`VCMVZ3G9m}Se2(CBu$X?wSLFB| ztIf)GU=1ei6rTq!CR|U9xcB?zg%pdrYArA$x)T zZ=**&g=LMqRMj8vxk@T@#XURB+-16Vu~=uA>BXrs=l$sCJFE9EMSF{dr(flvIlp%j zfL-00-YI(Ri?nq#_>@YSg_L%+za~k4Rl<0$m{Z@#c%V+h`&TQ8e`7XHZlaoSG-JOu zr)HxZmHixrqVNo6XU*I=AE3?d&QANqkWlLKphpRxN;;16nHDZE2nEzmIPP?^Os6B& zn)v?!T=K1Xma%m9q;6|ma@ADH-I%65^SO^bCR-?Y0Kn65PVHf+n-|Ih{474prVefU zuY21Z;_)V-Q&w51r3)ivcs8d(g^$sBF+3-=9?=0D7Wv69hjEZN3p6j3?hK?+ZKr5? z=H@_Rn7$jXS~Gg>LSP6Tl#b_=krcJp7|PqaEZ4Nkg|vSjb^36Ba$~9&imoYn>8ez< zd(1`2geYJsv}VNung#9pjN)yDyzVTO8wh!dS)>})8J1>?%B}CJKzSGo;#5eh^x(CJ z7O8Fuyz>=DA7_3BmRfDRdGSZ~ZHb%89b(ld!;sOm6OliMcEVfwX{x+)(WzVRC<}c~ zM}~5ZOXL}3}*f=D2WXaKjK&o#0Y=RvG>m)B4xIZO9 z@={pw1<50mhvs3qDaYdN!6h9}(bynrF{dLVW=$ah2h!<^eWHnaO5FYWQsRnAAscT4 zyl|w6atJw4BDi1RKIs(g4DK`D>y+m=1rU+FPeW>B*N5Zpa2mZ#(Zk!tvk*ghht5sV zA4qW!KOmAQ8G!oKGlP;k=o&xa@U%R3r$M6NCx_{^7tNNWi2dtRe0e&arPfx|H@q_5 zORvSA0ST!JL;#IgXwt`eRZO#!L$o5Ziib%~UqVWcI|`Sdkoz37VczBUIpefDzVu#~ z3~s_*Ps@Dk&SXDeci1CQm0F#w5Qghwve0<(dqI(V!2lNm&cj!#68KGcj6epy<2h<68$YEl@?s52dwP?GQKht2NNjlxUI zS1~(zpY0R0GZ#V=+@1x_GC7x_!u2*(VRTkxOLAMTc*IgTbQM~}%y$4R6=mAb_yE@P zjs`heS~@dRi)cY9IYoyN6TK!L_nTeqFyWORfzCqJFoq~I1X#RqOKUBGVsS4I5}2^% zyzGxTVJEbtFR|f$GRhAz@-%Q2{PE*`G@JX&;-7;*?LQOB5={C~2V7WLT%4~UZ3s1n z4CS0hOL6CTPBFyZ?4@gcZO;be$FEuZgFM)ZKV%?)S$^%*}-8jv@(7s-V5gUni8kPMgjVipIMIF7c9= zCotf0vZc}^-t}bldSPbhH#hb)U(>0E)N&zFef5Fwtd<9(2-W1uHTR38g%d}OE+_>V z;@m=okkl&lRIhTsXA`VSl#)>Iedh0T@IV6wp&X#I9uPb1?q-8RL_5ANy=G zdIT<_T5moonS~P}0c_7UVdfPA^8-9I`{RiKHz$S^{-RWE@n9-bd0enU4_lpfjy8i0 z0c=}al1X!5UP~IPtI$_FAFgM}$f|dPcgQ+zfOHiDtD-W1f<|y3f4l(3${}JGpFQ5jlAg~{+n2!}PM!=9h15WRA#@-I z8yBH~!*5A7qQrF6ypl(rt^L9s=(dGiY>8_%q^d9$(UlY;6fFxy19Oc59O(pzsuH{90l~7&k*A3gNf%V_0}Y>iOcD`x5raKsa0ajU{we!1ZZA$N7~pm)iIp5eSL_IlvcwY!_lqZSwkZ_`7FhxLY>`V(`HiHS$SwU8?rIR#e0W-mtp6Wk@0O z!3FON{m2+f%<>^@fbEAK^ubK7o3-i~}CdHgaBi-c43b3n0LIpsK<`7A@VGGaHW+rZ$tPW2G@=q<&Yv z-=aeffr3K@K;OzQ*G3ZmI=Qym_M)A~-(@5u6G*v+(av+N3b>`TZiPvpjeLF_M6Goc zPYI$4AXa#4XfGWsQeR(ei_YjjqVA85#6M6Ss94kvcwzI@%jCjLwZr+eSae%`R{4JN zFO%s3t(uId726V7iwGHNO(MqBI%zSqYj#dBun_ zJBa)Q9F6uDZ&4CCiQne0rsH3mb?>90D@{dKaDkPBh^hR*QBH;o*_T^sPYj2yh9y{( z!f49@@?s{E0Nn7v5VEIvF%dd;tmcSrCxw_;jvLtr(hWW61xkg70T{lTp2OFIgK{ zzL}f>YsV6fV^{M$VOKj+W&8)zEp_WBqc0w=W%D0g&Z#=I)?GL89xaMiH0=va5gX2L zF#kRlaeb5hk&&RWXNUbb$(j9WP{ET&l+x7CUSw}NdY+#P#~Oa?@bG`XsA(uRTuW|p zAPiBS`51~!lsZZ=ozy)HM0tALqW*_CJo@QRV|2~C$4s0T%h05eC#ctBRycQ22S9Ubil(E`yrH->WgeytHbmUanH ziR<8xRVm&2k<3AwlYp;QmN!E1co_!b@<1NyN#p*;`oVBEGX7van`1HM?kQx2I{u)c zP0T1l%DQRMZiMg~Sv$eSzw*u;++kldFdG;@YkR)CY2>VZdC~ZidZUQ7qiW-o zM}zS1>JMWoYyQjqUuVmgr~2L;pH}p94SchBuNtQxJ0|@?$=hYuhy6oPN75;}JEK%< z$Nn?3%@+HwCqZB5xr`C}MTG)H(p)Wiv5%*ebk>{2QC$kty_2ion4LIOP5m@K4!R?! zU_14=S9ZMp(Ga)d!tm~LwNwaWPbg2>fR*-?u;5|+dfq(`KPPb=cWnYflE?$@LrMbO zQTI}}>?TtirJmmTPY{|IX#rCnGr^clA$GU7ehD$_))>OS<^2Q`OQxfF?48GXk9qLL}-)I_qIp0S-OF!bY>ynKWte=;G}wDWQ;}*o%P+W^>|WyVyYv z2EV5Sv((k?tz}tt+mDUg2e3Qx%|~KWsa$eYDnQ z%v$PX8_wcfwGt8VA^;tmoGa|xmN4N&G+Vfqrk=SkndUUSR+^4HF3F@m86`q)u$ha_ z(Vu2SqcpIZ3bn`r?NgE&C2>UIp+mD9;r&;DBrX);xGk#n$MxF4)WKv_xaFu*2JYvm zApHO}3p32X18d~>v8`9%Vn`?L2--ZN zULqSlv|~*E8klyg!Ik41yuAGElmHnVe~VpW{HSRtuG-<{_sMvPIbNmIWMC~kfFvYAfVxrOM%*2 zbJFC2(tOw|*kyMtbYhaoQ1-Pk&AU-(=EjpI`}43qqd}UsQSk7(4i*Dx_&ymO&xX6Z z;Z2Y%aol5Zfyiht>cNhB!z@OvR@g`^)Sb}M$buXpVJ!6_QJQw+0x3zSB+1Oryk9-m zv1;IbeR1!X+|5baKQ;=pTYzqD6gR1OVzW^cpix2#G)bs|e?p*nLK!qrNP!`l>!%&5 zXx%DzuDL%Lmogt~K8jEJ>h~Kqc+KhmYbw0yrklG1xI$?u{Zlr=C{cW!binNCzOXorB7WUQ-qe%QSgl* zcg~3u`s8CHJOD6E4o;d`HGQoqxq6|U2uK8K@b=K9sgVGHt!`C#4=_#c@NjxmqXw?z z#RK7spc+81JlLqOEY<_~{h`rBFb=3Hxul*EO6NhdNI|!R08j(i`97b%-3p z#i$$6cXzy-yp79T4*%MdP&N73tDcfCdOSWeDRSCiJ>^z=Z?-z8yHeKIFt<*@tX;)1 z*Ku@o_u>7fgZ^Iz-tT;vLU_mGe`&as7KTSYRQ}rWOj2*bfLic~b03?6eoegfF|&Zn z#M-Vp??dVC5w6EC?xdy~m^I`i3HS%-bCActC|xt|!h64dwx{{_>o_qXdA}(;a6R{6 z7_^VQ%EJbbiv7!9a!&6*Zs>^L?&p$($`lhO76i{VGvUt4r0p(-z`6wiw9?F?+QEb( zIkR$ejZfU#Uoi#=fa;BEK8ysoY!Z=Pfj@!eQ(g`TG_6Cj0TbVd62S09qU*E0rNPk@+$= z|5}};jN7kYxfhIsY_yUhb<^VmBjub>w>j!v|JS)Yj&oyWid4~2a{P9j zb`{D^ELG7e9ldvlh$~bRfS4(@F%)hd+uulwi zxU@E=95yNp6|nwvQh`;*C@4*m1monf-6JZa!zduosum;^@K?(Pu>5M&8bZwYOZ4=M zD-^+tOh8BI*OJV&x96Q=+|=n(Rzd<@J&c#Z^DcXOT^5t+v7P6SMYg~b zEbt`0{g+pu`F*2D_bO$kp1G|>4{*NCexI^B#<8ZYkv&nzY5aWYf_m(#Hc|h5)2@fH zu3N0tm#wpYgUTU}-EiJI5uEeMF?dIOs<80cv!RjYJ&H7ggHi6mxznJ-P|Ed$`PSv$#S;Ujp7~9&H(< zYfzrxe#!$Gpncj*^Teu%MWbS-PfA+HVa7%kVu;DgVJrO-PB2lErrTQ-g!PfyV*zLP zdn+}cL!f|mA=0nX(lT3=NfDQrSiD|*K;s6Ttkn93#RpF*e)}Gbmnm%mq+c*OuH|5x zUdHVohgKqc%7_oVXAV(traY9y{%}uZ+`p*=Y)o^#OWSM^kSdG4zJ@wuF*-?p2y9R)Y(7YF_#@Z_453@8A!Eq{%d7fJ8{@~B>TLCgR&~#B4LPo zBsE~hy^wj7m{ON?b}Ol{WFC1$4q%wIv_Y8CBBm@1*aKY^6=iqBun^dW6_qF$-A~!S z25U+-u%MFdaaM0(25Zad+~aK|<~yL6F{C18Uq{;|(-xht`^3DiwZi#~3Vhoiyr$N~ z``S{~EAwGp<(1m18=BX2Qf6$o!1`O}`T4ehJ#eT{M12^HXgirxUz5sDW# z1Es!yh28(=r6n(Bc_-#M=H}j^s)Rw;z|!`o7nP5fE9ub44y?UD%EbTOE?t%t_w{~V z99q3r=S=+Gb(}n0#`peOaEhBYT;|Nj-J|PZ+GMS7A~=fA@kidp?z4!%L1EzqaK zfky<)=XRUCTYT}ESQk#P0w{3bQMBt!qVq1~M=m+sO+pt8R`@KR9wk*>uu$!pLsGHiCt*_!&A;vM*+Kvgqln+>d@2;oE!oG0slXsS6INi5X;w zvhYtHVHRGA5d~t4b2kbZOPly&Y)<$Y;^dpFIbL^#m)tw&2$~jf{~Y!GJDfy~U=#(L z4TlUjNaJpV09J%)MI!~=CSDadQNSJMee~n0@48Vcu@(s;)@D2gFt1QH?30+6EB`r( zpG@S6`y^K#xQCICjmF9nULHv%J`qBLA5NmqgXjy99`Gv(BNo7*G|s@U9MO*`EGfB@ zhFP>Y8Adz|LYZ1G%iD79+xo7;?Cph%uBBKmdMh4Qr6xff9zcU_;T?5c}i1s z{J`*=*A;><50Z6V#HP*J?&_wr^*V~rtPSfVMbxs{TT;o94gr1|q4wApos2Malpkmi zj$uK#$O|h04KhrLWy^Z{3^d`M&XtQ~nSe)O(!+`*GL=2cM*yr-2V2S_k-IP;j7|$3 z9)Xxa(~|NBOzk_lq!eRo5NcTLU3qA@jn9zETvTYj-0XV3<5pcXq2z!G1Y;Y+!^M_! zVunQ#=ZeBax;&;gNVE4jxpqLqhV(;}G}Il_e2r%`A%#*2t!nyw$mYE;03oiM1o?q z>=CHVt-&*^?yY2+Hf}D7gXbDInkq0(YM;~dr~l3I&e-=XMMJy04=eKXcYGUqJIuYx z7VfL8aWq`jou3UtqeW|4x7{;e^*z>JX+3mLV6st&_IO;Dj{p8kNO)W5gxX=PyEcCW#APrEIyJuyRFkGcUK+Q)yGk{?*e zrsAP=mV~i4xIR>T2*LXL!Lw#bW>#lN4IvTiL|<(Ik)fjkXaf5d6!ut&yJEX|8^up0 zSf8UJ1S;nCiABO2X!b`&AfL{0)RVC6ay(X~pQDAirekG)XJH@;ueDx*5X2G8LkDvC z_SNBZFWVyp^t9Ba^RXU>bxi9_JT!@vx1T|#G%niSTzg(kt&h{d-x)*mG3j{BD=g>e zd$-^)`oo)pKm7|&1bf?RUJO`DZd~z?_FXX#PkhTaA6@uHzi?~xAR9o8yid;j_~g~Y z?!}`oW}2i84ZV@J+Z!^W#$uF$-#7J2UvK(X?d+Gnt6*2mD6~^KTEDDZE=(&Qvb1E{ zHzAM+=T*k>i@-3cMo$=>HBmDy68gq|_(-IwIbV-Wfoz(9;+bT;1!z=$sd7Qe!eD(;+zaE^(85-LkZi+@q5;C!Y&DjU#E-kSgF zX~ronR*XH0ufi!srVA5}1PUsOUx@dTDeEk!lvFvE&R0J&+d9*G=Hz)GghsF7Wr=ru zIzF)y4kZtBlqP+nMt#x+czD^p)S}A!>SHbT`Y`Qb=)|Jym&|~VE!ngZH``I*n;FZC z?;}S>OK*Q?j#NF0+Y0sa z5w>mD@zQ>{=9SPuSNf2+hPU%)kwCmxBq=)i!)}Nod=lpaLL7~YQ(ujrn@3MeFTvWZ zpPtnaE~INyg96%!c@!m{NfHG=4&DgowYQktH|&(7m7~T)G=S z5G4ekM}igI7Q)-FLmTjsm6--2B$HdAool<|k7mSy)5g-NQK>}3WtqauuA?5auf(sY zF_-HnO`l^FGYOj{A&8&WTH0P{yt7i)lF}bysRdD&xgaEZDX`WacGLf>P`rGN&ELYG z?gTxvaK`$E9zk@Dy43EmmY&h^q_r8JH-iBvn{C-pfvZC~45H?9Ai6m70{a-|%2q1QfQoushKp8ky>7EMVj zaw3$bvf1BJf`H|Yl9G5(7n!eppz@=i<>nCdB9uU^^i;LZ!9rOZyjMsJ)AUU52S44Z z>oz8msga->l2<+?F)U9UqXC_0B~^&QF)M&RgQDiJG5C?dq@>W{<3gMoAvsknaZog& zavB_TI-)=lMg@Q655~ndx`k>u0N`jyNNL$x<+k%;mP=W*?sJwxPj7?5b8o3in27v`s@AuJdKzHjE$t-1S(6)@QSoE)3sLb7t1d$Bie!rbjN(WM}0Lw zDSZ0@k5QNJc+7VLb0nEM)t^A1<%-9;nz))AToY2Mej7{NSN}ySH8kv{*lv+bUBF^>^pXsPqc9%w_iLK;Q zZgQ=uUg8v$#iQuSNj)#u8x_;z42<0#P9J zCL9zdCtFmG2oz#MDIP%_Zgdo^0y(tqTnONa+FIlhm%M)N%nXZH4$`wbxbw5F#fscD zRyVD3S9LH#MLj1cZ&zE37-nuKRj&68J0?e8N?Co!HK%73$;n#y6fPMolPxVR&HGqv z>>kL0|JX8;ZnzOVjsfpm+}y)JE+Z5uu9>dyU-MkUt|hKTuf;(-h9qd!xbZcwJShp5 z$wuz#tXg37lzkTpX%0K*`~2GPv&%I*5=dNd_SaG;Py%PUwzHvP1-W5-gGzl#CC%5jx$qfJGocK;H-BcphkiM?*+cPLPnZ zgp`nt3#1aMX9QTli*%B}B>Mo{YtY6+!(8rMo}*TNaY{#GfiC6owIonZgpM@U&VSn) z1|=w=fZCW>5zbH)*iNWxK^u@1RAKmiV2|Iv8sV;_mqE9D#m8%0$#2y_)JrWloZjUq zYL6im;2dbW8ho)wgd2x{#E|Ik`TfiEiasMPC>FhnBXOOommVHX4?Qjw+0D`0BOB8MwNhKy+v`%RZp!sqjfb;h(pB> z?|0vRD0D051?QL6NV{M%RK$$aQY?j@e`KPkwMXUnhClXYjXa4n+`yiOz(A1*1JbJ< zq{zaMjKYfN7!rWv$Cg7pLvqgnQ@I?Aq(TM#4#iAZ36i*)po`mH%}#_9oCAQTuSRex znf@pRY!usDbTs`SqbQ`8K`p&DweL6+-7(E0riD%B?|<{C)c*N1en+-AzFcM3V)SN{ z1OQ5XBI$L`1{GHa35y7I1RoA>(5TRw%D5ZX|4%^ z&rHWxDEn9F^j&HZRflMy!TOmLh_GDsp#g{v8e!Q7-VBIBVn5fCsZ`ckgU0}Z0vJhj z_mCx4FySy0n2q`rucwtDBV{*(Q8qb7m7Rp1B;i-Ox%h?Ex&n~{;V8ffm?^Xb%W zVj?7-bfe`6`cl|;B8xZ}v;bIhNvYU85VOaJ0ho~M9}Z)bOMcx*WJ6BS*t&syW=Eg~ zl_nspfobXZBTHzs#F2t|(!Fqj+Ql3*xB61#!ff5mMXC_xiXbs}kpNG*&e+-l46<&pVQ^0DT{vDv$YTeLb0rmT+FtrEr7zT?f_ z6`k1&<9Z!QU0i$Z5tmZDN9}bYP$y_(t%uwG>$u{ex8dUK`NQ91@oKXwdre66f{fD2 zf;3uOXB$ijT^qDm3&0#&({HATH|YE+<7CiZH92bM!}5#{^J3A~PryT7sH|;Wo4PDp z-BGTI{jk$!8W&qFJ9N7Hi(=_ei5|rIEJWO&hcSu%v1>oC35g^YVcc`x$(wR1(gU1Azn1wwx zyPY4YQjyvcl(kU?Ed4opaYA3UPPnt0TAY|DfWuCtvz77Iz47GAFAcnF3ZA^?k6|#c z3a&j%y7stxn0&poyrd}RkkLAOb$;bW;Mzai9Zx4#gUWnBy3 z0=yT&DTyU#YRxG}0f(Vt+-Yc~37KaC@4sL{xS=L{cN9%>owXhUsDU|EH9x7sLmg56 z;J3#WlTvhJL9Az95H`WH79P;7cK%mRh~qq;pN=B<4~e21cGE$8Xp! zgTpthxR_T!nUt+`@vgfMQv7V)iK@zD&-3BTkzD}fgV`8p( z{``Hc0&Z7gaU5OtfNm6a2LEPu%Wx^2Y6o8gcOE63nS5LV47Lz}HBnd)#uK6=K(jzg zlU`4m7i*6$1A$s}T3S}=VgM4KMvl6DHsL7M@4qW$h3>o>&2gbW+kM3@4E3<>>y|#s zIbmfdY!3^8Crry(?G;VvD7BQ1pqVic?~Tu6Z5dZb#(dTGe%;4u+`??$38Ii?O$pfg z{)T?LYY!g0*UNN#7CYY`bFwNW{U8Qq!A0cP z`cgw>8!ebNi@u6Uj5C>`JQC7az&87gFN%y_2+&cd31SNds_R7|qf0)r@kHU z^l};3)^xOYb6WO9Q3JAXvJA5_kd1j9QJBbbzxVi@Q4h2NWV@Bzan9Y8jF@`G9W9qWjU9 zg#xu;L$fJ#B1{{27=R&#Yny`862*o0(XB72(^r`#LA|TH+G=tBG%E9swif3N1P^TL z!-?#CVBUTQjt?V;a{2v#<880aR2#08HNSgIotYu}X6Cu**zdxN1U*rszz+c#w_*m(1X|I|_h=MR00MYXHe&hlN=CM& zoz^!aYN|`SQuh}Nx+P7{56-eQ=E)#9=p=YBtTLKjZaR#*I6d~61l~JM+}x2h*yiLU zoAWojTcE>wgo0}jv;1ZCO4CQWS6amm6uwu(CT|Z{`JxRX*J-)?j@Nfhk6uOyFVemZ z3mT&mzFle&J3Z%PYu9IgKKFgD`Dp!ie{V1Q_m4w|I(XZ+`i}I5%&<#xJ>y@VJnuuU zeOkV|YMyRrYR(xx7f6gy#2(2_(;lK@-geX)VA}SR2}mj^nZjU0lE^j?P=!-WaoYU@jIYHXD%1}^~`79a&mrHT(La?w{QTfo*J}n%fr_U zfZ;pj_Z{brklWSJLv|g3lE@NVz$mm~QCBL$p<-qK#W!pI20bs693vW&=#l_vEpx0c zfQX<%Lj0QN@8>*QiA=uVM<88Qn^#oWN>Ug$8#EDAii{MrD9feau_{Mm)Y$fkoNes& zwQfDt6=3KR(V@}@Kaer9rVNn!gqrk-eyOg4UynUiJc^&gxPNo2{a}vkaM5}BY<_ZU z)G#XX+S#k^k*D!d@Vz7Jk)5&S+f6R;)%&&3Zk>pY<@K)E(rQq#Vf1yW?b)-oMZ03^ zKVQQ;gukqvrD+zUYK;^hBvkE39w=a>|A~L8qTRH&FYfF@xC9;66xdA*m1@yrszzn# z>yir$#$P8Oan^$3u!P7Z(YJQ{qHQ^!ggr+Iqf2vU{7~w-;<()_@w7m%HClf-(aoym z(&!$-ahFZ^E&*Q}g@$8oTw(qJ1lcXc<(Rh(`sCqYQVAbn z)z2&nsVoWYc|nz(-Me|*zBG8x&xEOKthebW6w0(+%ZNb(l#vc4LWRMjmXcv79NN^swDd5=`H$3edf9_O8w7j=bkQK^fh?3^)xt$L3Hygt6cm060<)I zXIeZLvqzZNgaMO6Qmts;a`n3KS-tr4<_g1b)HCMk`685*LrEh8;ZFO3LR8?s#hExS zD2G=~#u7e^r4e`kQeeDV`4bS>T!xm1R5;``h>GATs=DS(kUnG2%#;XWECyYT z$%lrZ3|j`j{?4BoGdd&{i1G<*^=A~(cNT}7AD+%SJQ>fjFC)=iB)TyvgF21I(-+s@ z2$HC|*V1hmka2TYJU-@sOieq^W_L1t?+VT5zHHoCs_1FT|3%JyJ13^3r_ViAtn6=8 z6%-wCYD^W}OnYkotiI{u>aA8&lZ|>;zuL=razX8yfX9Ch&9B##U&h@vwvYCx+r2nY z`#9lYD>i57kuw@AB3gXWOu1XW%v*u)Y=A7DA~>BEvS`PT)KQ0mR)Z^@ zdNR^S*N_IEIIPs8EC!;97pp(%+btfUELl?HyRYVLttn|*;iTR2#n%WB$)*Ii3{`|V6jH-LdqBCRutW4$tDmcVrQ5{wEO(Z&fDXQ2ZXtks`{xwO9fDV2^ zt#(DF6z(jtMkcc13TvyMCv!tX=h79%25-u6^r=7qSSZROs)Zo73Z=W5Ztg!d@wU&~;OK!HE zU;dn%`~FS+*HeR}?c8S1Hf!UmHnvyAwvh-fHO;J&cB7Jtd6n2T*<7#s$A}y_PnTVx7(ZsmD8xxtU zIGQG!=rXGo2p15%0mDd`fswRUj3D`%V`S}$BaP@Q^|fi@o(~c3vE3s>LaZ{!m94hQ zjwAE*4)dtoiG|ziWx(nsXRw3wWQ6F6s>@_`>J!I9y<@YD%QCn6-^^3V8$J>1HJ9H% zo4xI@`~6;NwQbqyd-UG0#`V79#p}Dc3lGfM`JkD&tj1da=3qxL|5ENedq#4Un-^uW zk^BRc#=K%&IBtDtCWf9}l6y82bh`$oAjd?8ZHJ-U^|_zKBDFTlEbC0@i13@x<3}?~~R$Sv=KmS&%{Rs&pLZxIABORgS^V*l>llj9_Q!E5(8EdIe4K0nXj6&j|z zf1SN*lF?(jaJYM+AzO?KelIBdXXI2EJXrys4$ZBcM5h|cNT=T=$0t5J*2R;K*G(%= zerL9jHU9d3dF@sHVarYI07vWHD#e+7Ht`H^e3|qs&tIEdt8}ta&dBvY0qPKdzVgAk zVnyrxQMmNfcfBdbvgfS8PdEk!=23(AkN2xIrRAFAO{fSf41`d`_LBnhGR>{hH=IqY zr}O64lR7@^g^s?`F7@=JeP&^=0ZbK>Jb18e-4OWCA<(3{G;+DyQLItW1sb^KcY%;0 zBJRA8(twF;frhqA=?A?n6reL;x8aL`sx4?;zIsz&(+mA=pq)SF^NS70d7)f{5eu6s z=~2+(M`FOsY*{LmR6^LyI2N@D>`@WKgf-h}=+Jv*K7Bu6m{Ya?~Quqzqrh=wl0Win;6ITYRUnErVM{$z-|u zbu)GP{!B|FX8L7YkU`Ph{XZU(YwPY`F5}b7>e5zvhuzvr>$uj-Cc+8b55~?J9=S(* z{|R6DtU=ll6>IVJqm< zYxq6wYl(==3iz)pGL{ZsBQEU6je4I zfXwNKYpXZ+eMf_kIfsU4QPjqw!9~YQrTJ3%j~;uS64#UuCO@+LC=Uq-LL_y6YOo*7 zB5MH&X}8jDGp&cb6EcR615G)feXy;HYYV*7G6aJARBi-?cb@8j0KXJ#eO>m? zZZdWMW}9(W=shYwmQ&#wO~l#T^TzzQn}3fCdQZlN(%7adU%uSO^?sN^a!Gz^M9}(c zL!8R9?#$8PrOaW9&&#XT?>f`hM@#Ff$TKefFJ>p~`~KTPk=f9r9%MC`|o=Jd1& zZuw0+o5{XvrCjf!&v#9}k6PmX6RIB1I%zPZ%v6biuSG$7TDTsk6Qe%vgdFar-z(GD zFPWB7O!iQhdxo;N$LpL{A_{ScUd)l<@+#wo5r^z^@jGVAfdF(X&C`(KucgGXSC4<5 zL-<}hr~Fj=`9+LO+s7HrYS*jv#MgzTU{C!x_C?g!y0@E48K&l3H?u9E^XqEufAsK` zVNrGO*Jl6;Vd!oUk&^C`MvzWvX&68nqz9x!x?$*+a42acq=u4i0qK&Ke&_kU*Y!VN z&$oN;eaBksUUUlvx(=}p_9Syhv0bY54vVnIhjBW+8;{Mc%Xm*u1+%A(gE2nQ(lSRT zI@+@x^^)lQ_}Vc-u0NgUa>vGNdf>2RVs_oRnjeU zHJr_%6it~Iek;{YZK!pPQ*#v-e#7|uEXw+AZpsrMLy}0QN_j&|G&J@<7AZd?#5PTt zjxM1_A1dLTvHpcw2r^`sf8D#;;CxidMwVd}Hmaf*+;o{F%~8slF4H&+jl{$ZX;6Fl zj7G^*wRO6K)F4?&pl$k>8^Uynv`BTt5Dav_ZOGT6e?t8l^dYdxb@#8v;Wpj-+Mr5{ zz#HhdnTM=_@6McWE*SLxAVizJnyP2G{ufU2=ht^j8#NSFn|V8UBZ5m=qXPHd3l~>Q ztK#E_W5;t2vhYC_QYVqL1BH(P;&i)vTgf_FV#dM`9=`5|V^TbIIShH9^!ue;Z=|lq zhSM^?#Eq#3sO3tfRoaY{X2wpeRJ!j35C2UY(hpY@&VhErbVN`M zQ%TG1U%vX^;>+K)x6uVwlPEeiq-yH;)46D!lYmJX+R1pW|r+trq>q*+aSx@$?xE*>; z*(0i|hv!MLs}?McI+kJQ3t0&DgC~jV`|Eb&?<2QUy*ZBS6B%Z-=S3VD+3~+&*-^3S z&Zi8`KBHh}-+4-nSH-W3*~2?GEH3Zf|u?eD`wl-66Lg19ugl z*wjZC@+~iSTXJ*%r4&KmW1{Ehl(5vqy~qrCDYLI58Zjx{m(G~YONq8f>pE$Xh#g8) z%2?bFiUc6BCNC1U8ZZ-jj+y#qzx#p#m6Lk=&PN<=f=@uZFs3_*+E-r`01^}n+TTA* z!(!DP=A{o+Rx>cy`E1CKi9)HX1tEFJ(t595^v?DY@@)9Oj+0gxAx(@3!cY#Z=YM1G zD%`WqhVwh9*P_}?KEv#uJ262~thEmk&C;&mx79y2DH_^M>9eGEPIH7DA;fqdv`|K28Z+?GVd!FqUzKG}++tHh*zZ0i)wSEiai+oN9 z1io$H!MV=^9@+?&S`LC><_h1J;)Q~Yb4(XjO{57lwaqH zAxT3O6o7KMV6;@d32RD!1isw%Pd(^*uj_AZ`PiFdvzM06quhsci}ngctX$N5OAjrN z`&^Hm-q#O3Y%?PVn=iFQE7o2D}m_*|bSI zTWTK+D{1l%*3;J_+I6zjH#4Lyd!4_ej#EQlEwS%Ey@Q?e*1bAhM$5slT{N1@;l#E zDPQmq!X#+8IU+n#8c{irg*QK6==r;D;86%+L44nZv47h;??OjSYQeI%(bYTB_(*R4 zsq<3X>bZ=yUS(!OQ)3`vVV!C<21!9dp-KR7yg^C@xl9{>IiAy3iqlNtEn9zj=(utE z+a$&a_r8u?@T6X7LG=v>Y;Tc2M%;R6eeblEI?hb}yu#V%k@-Mih2!F^rB=fD4tL^` zbqmqWJ)+Lz`9Mr#tIugxwJQtme}G8-cu0TIpL^Z<(3w+~D1;Wo2P)1LJ8vE1hl$(e zRSPZbKfvk0b8a^6921p)YWxmB%=&!4S%~d{19!vR$igZ}ON5K#=d6-lt?KfT$Rtn_ zXd7>pi*MadZb(MkB(LO%< zgiQ014!$ND7~e_E7~>m?rXT6SoQ{b#G0(EH2?oCs9o~HBIZ^ZKYm1vTwPYqcKOd^!{>rt2Q{D1 zn8{-^DCs<)o@6G*% z(bAU|Q~>i;KGN=hq<>#aps&1sN>26l>;bN&1=F-evb@p#t+@kNyr}9qa>tM(+g3G& z8&+jjrY_)NR)}X^aMzJBcGKcckvAaLG5y^QUUXE1Fd1olI2@~(y~C+*;q)Q<61)}v zuBSclrL5%hXgmR7k3t%dY<0!mN$#AR`j|?T&E zPOVYR+=K!B)FYseGr_&d@sSVID$#7_n9zERm|+fV9V#_YR>u(lDs@pOz8w+d=U2Em zc5B69%qT|?*D(X-dIr+oL%_Kz&<&wCm9B1jrtAHh2N=pI*S8ypoQ8P4l@>0BvQ+Q! z+bgHa5P%E&D>&`IMdTKG@l6f%%cWmMtVSLGSCzZ}q5@&FFYsKT{|ANK{_n^Cpb%u4 z0nP^^xX6)Ehyij(#1d&^@!`qo$@|IW$@vNT^fB-)6Ghy&Cym`8;mj_P#Ef#nv!L$H zBMRGdE@MIpcQ5!uNzd04M|QXU%XxzmFLi5)< zwQ_B##r;6eUky7nxT zd!_Tvs@}YWj0^dEN1K<1-J9hFNY%GOfFAVu%nBon@-;JrZ6!rNERi@z7n4O@=O?_K`qh{_G?J?07j+o~0B|@O*u%SK zP`yLAzNI7?oF6l)80Q9JpoX@Kk4{E`r^`z zJyO<3AJCYv8Y?&VqUVCSlZw$n(fU5{6=*LBy>&uU$rO5ij}nsZC}+)OPTFlV{DN|n zD3KV#1~rtY6x9LIEP7z_QpiIT33@cLA+Vo%XpF_et?Mo)|zC()widTt!;cli2~3g^s$eBLI1 zUEYo)KSO#zO1e{!(Kn9qh#GN>DZqLhXNie^N0&(MbdHW>%$vxE3>?_`3;%9^0w~`! zDg~(1wZxL%skl;4OJ(`Xm4@%Rv6&`|J51|=-mlB0ssZ;9AV;PIw-G|32GYc1!_-6( zw(DLvu+osyy9hNb(XfLWF8^4lDwU;TpssdWsLTgA>Q3Ktm@_4?d^LO~{1Tg+6iqb; zpDnJCEwfTyY%BU~7H|Pjso$Dgghv7Rwi#0NZMEYb(q1# zSeO84njty(RPN`mYr2AMJ>ig#gZ=m)mMXgytkD4|Q4CrF;a<1waOiJL`ZBREQ}bzm z5;p{JaP-7utKqv&Gg)wB26BM(5HgIqkoK|MBaVW1d%jjinjV?+23n*)d`J3y{X=1L zQW6Iy&|9ss(Ue%_`oy*9>6sjh9b*N{fq!V7-a5~4@2`KHqLx+#41^vH-gm{11>VmO zc$|PP=6_xkS!T!C1ftMSXr!Y7u}A4%7JLf=be>(I6SYN-=9a#{W3xmBziyisCH|QG zEJ@=cb<)1!xKvPS*g!b$@NS^+_|pmJmzfRsq4$KlDh_OT5hEtIuHpfP0X~AP7w8Y` zC!Y}o-jS;#w6|run+xd{zfy%c72jP*I+>@cSLBENHeM%&Uy{!NQ@`AY+FkYYvBM?G~*6Xq$Hal zsK3h%FWB6q4Sju8pPjO3M6g-SU_u#r0sP@lbZH(|ERd9wnQ3TKk@^?&k zTco8iBfHf=fW`ECVr_#IwU{ya+TCTeuao?RTBrb&Um1qNV7-r}drDSBMb$U2*ltnT zm;VxXm>Et$jw(a`>G&F81vvt0!5 zl=AC){nnZqLHPJ~sz^GGJ!$d!tvlq~`(oatv2yRNQvEUCY#*ahlklV9^S{aI)@G*{&BRXx%(H(x}P~&eb9f@ynRnf>^xu{LF>sao;m&$4eaX-pwM@I7dnl zEX4)t>wHcIj(n&KqSy-G0XL#ifq6$ znj`>>^i^gj5?D{t;LpWD4F(gxZvNpAX{Ex{Q?8=H4zM1wWllrZe|Q*>5}t)fRdeFW z>w46fh(M532o$vGhQ_A((o1*Q4!-mkgqNoI$`}*5bznm!)1RWevCjVYBWV3tNM1mt=nI6{nx7M(#yZ zUZ)#=xf}QOX>m-=6866?GYneg>)^>0q3G*s&RYGryY7ZD`EUg$ew3xW`RkJ!Zy;3r zd~tFrH6t+`-IMEDEmckbThXzfj;$`DyxeEd5!JuWH>!7Oy(;9_#9k!`NI+}fW}#J> z9u(n7!nuv$R`{6n~37|VX+#H$c}#}h`^aU=eYI2Jx3Ez`iWTAn!K>lWZteP>Cb0EO`KKD8R-6#fV4U%SfMC>ZdlAJw^$^oItZut3UhetY7F85j}ON zORQvo;sHq7=s+q> zTV7s+3HXrTBodG!Y=7xlk~Zi0#ZWZBgN*MrSfp=BY?d=SU}iJyod9I@>JBvW$GFM4 zE5WhZW?fb>_2lt#!p*<BKwtoc@5EIYa&{q&ir4rFA$gweXI<@#?pBqorE~_qSJkcAlqjdzN$=h+Kb7@B4|0w!mXG3s)3FCRUYmJ7lAr2>TI%<&29PENf6|Ud z<9So%CtH}CWAB&KU!9mSlMiLAxee|#&o_4l(JuF-fn2pbCrX)ni1iB(`=H7J-TG_*)xJ8_Jchlk2 zk)|ZirtRYFl35U@MU><-6WS9Fm2j(;M6KFr`PYNH41nE;o6dpOpp$u+=6XMcfmoRp zZLo&$rKJzBaB9i84hjhhYl zFlfXL7Pzw21wH`b=vi8F!X^O~GED?S%|&^0zINHQ@N=e~vZ=#02)mrh)u6`j(;)?o zy2g1-iUbpEOeRyH)4JVcmL;w~tj{ZDx|Q1xiltJq{>WR??*fUtpM-s;EWKUaFUJl`VTHC3go$&j~GU zj@3MU4G3ny9c>=iO89r)&E8SD?ErFA9c7zay}AI_4NP?@t1aA4%Rvi} z(=#+!oShK9PSAIMWgg^BCN+Ztj!usy%QOA#T6Y4o{N@p0R`@F-)@7^0nz}F7N^?@D zb?FEu_Ta&Kh)b5!Cb#{kfn6V-qHVyD!xYn^t4+4^k)!30;?dW4Jik@oU5BXmu>xt? zt$A6d(b}F_Ex%%DXjP>1_(Yh7Y~73>yzej9)`Em6_h-2c5G%dOlwh(teqYDA6UPUV zRDldKI0m$>H7mgD=*JY@crekf2QYQ<5*su_WEGEL)x=5>3i?4#WAskHjBIlC+*gNy zhe5)}f0I={=#o%*I$oQj@8l}GJ^tH}ZEyH_MC=3~sw$R2Z0R^onj0_7RrK((mA4^qKltXO|75!VSk6$b=ul2a z|M%HyXU?b6voZtAvVfU;Hf@yM+W?-c0m`M%IaUzgE?JuAXqoCSHM=4T=_3l}$?E49 znh)2mPA*_ymArDt#2z?C)H*~ba0b0pwHxJsVp3=@f5Sg-wJux6hwH>Nb)}Lj@Bj*% zHrB^t>;>vg;Y?K&)35@?XfiC4GE_8tvy|BnP?Y}(KhW67{zvKj5A8r|=75yAS7LZi zwohJ2q{AJFazLIw(*AcWta@NWUn$c7@(=!XT(0#1K(^)doOiX}jACd71bH$5Z6#f4X>v^)MessI`Vfn0 z<)u7sqW0r?J^Y&Xv=LwNlfailyln$DK_|D>s!P#reZ=UWD|o%;jlXWqSYMvggVp9y zZ>qrM)2z=4i@J~a&=;}!nw40GefPv;tmO6%zyvRP@;Gs$s?%6gQS4U5+WThl+sOjm z*$%s4qk7VLBOa3?!_LCp-&z6_2zGn2yZVs`-@qI~M*zPb&+*vHsAM^hriCy-HlxCT zn=ONiJWFKF1QA&MaBKnDR{VRdAK)BgfBX2_?Ul^faBh2}^d|?(Yr$iLjY}moGrMZ# zsp`_cYd#-qQ=itQjIx;A1gC2wY6eDe^vSc?94|0JMMdNmyFrLzk%okcnx8=r zOvF7@Fz`&;bio!0)&4{b=tW0RkG)sKRE^p@ltnUjK4)iafbd~q(w%MEbni`w!( zg^S;dO!F-(=>^q>(RB#S>^!={1gk|<>mSDYr&cQ?($iDsZ!eT=uhrC}4t>moY2pJq zI$hp1XZi`L9&$+}JY=-~%9YTT`8va2f?ylC%*o!qTER;0XK}tZS3v+^U5$_?r-Wgzdh)j8LWuezf6eG`GH$$-HXch+&~ree5te1d7Zy{TSa- z_};#He;=uz5Wi#4={Ev%(UK@T)7iR3Eab&6FXb&2WPDo19T!i(_NnI^Yr`8pr%0<& zSI`cRGCc|vUwL(K?BYr+;z=8o!I`LuA|Y$8Y4A!MT&5f4ps;dYCpPec>9xpd+pFvC zic-<@!kz4Aj|t%7$_lU1?!f6$wXHF1K|8)-HR!Q$X7rQ9r_JV=O}-(m1f8*Q zsT{M68Y?9jqgivdc@amFxD7nAg1HM8Z=gN*_)bf=i3^fd!;tE-qK)H0@v@8O8nhOP zmQUFoRLArdl#gn5j=}?U0(LdhsN_|b}0Qn>T+do* zNxgsFKyM{J5_p!&_AhgIEN`v3zTRV#(XZKf-Q-mpuRAkXO~UL2X^)P&hZ+s+D{As( zM@JcKO-bTKIh?(AKKJSV0J&l3`g*3YZBr)2UlM_^dVXHj1~KMSY@~&)VtLyp9&~b^ zo_rNI@MIUxROV{X-|3bRS>W4*1==??R}8oZUfIHba{CdTuk>>q>|`9gK80%Q3<_P( z#UI3=59=a~ZQTUVt$Zcre@TqOPI_2dF*-9jIkzYpCr%LW$NP!PTFTVV16r$g--r-X z5BkR(zLB@@`{bivNRu`RH zieYmh8o_TG{<%odhlR!bED+h7+fK|NN*VUs^0OAU-a)y^1b0{R-~A* z`xgM)5ov?C!`ayJF0wVa1DtyY?8TEN#n?}EaxR9N-MmzL8;5d;YV_{b>UKi*Tc1t_ z&*V+fLMT`^_EM|nwcS<6U9kguU4#>Ss;Mi<>xQ1&-2F)ifno0tNn+LA?13vj?-pgy zP8jx^Sj_2g^I|{ z@$z4zOvfQ|EF<3ytcpsT&(h105qRXZ&js-V?Aaq~)WfDLmHCvZ+?CfNw_ksF!^)i$ z6(ydJ%p?n~&g+0w`l;Xl0xhc8K{pGDFfamR>k=XZopUJ`nqCRK{{Cj1d5#M>6Rz9S3nq8?&Fn5ttL!gJiknkUS!(40lFJK-Cv&pHsU@}!gUhuQhF6nj-IDS0%Sq=m zIxrL2GOBso^3lC?*>Sm7sAa!=-ug;dk$RH2+)od0~B}Hs*Jl9oyefQ6w zt&;NcSR{KYNMDc-p*>n!WgecF!(3L8lan{Bznox#1CDCLXy+~_aI>`I#?v%N6MBZN zOrgf1akV8V72MsIbc<@I{#AP7C;zf>SQt*JnXu-fh9Z6#{Hyj=VR=vymQ!fEOwx;D cQUDq36Am+F5Y;a4qhA`AD)3)-_ Date: Mon, 9 Sep 2024 19:30:06 +0300 Subject: [PATCH 10/42] rah --- code/game/objects/items/devices/geiger_counter.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/geiger_counter.dm b/code/game/objects/items/devices/geiger_counter.dm index a1d91c1e2c1eb..e640b832f17d8 100644 --- a/code/game/objects/items/devices/geiger_counter.dm +++ b/code/game/objects/items/devices/geiger_counter.dm @@ -17,7 +17,7 @@ /obj/item/geiger_counter/Initialize(mapload) . = ..() - RegisterSignal(src, COMSIG_IN_RANGE_OF_IRRADIATION, .proc/on_pre_potential_irradiation) + RegisterSignal(src, COMSIG_IN_RANGE_OF_IRRADIATION, PROC_REF(on_pre_potential_irradiation)) /obj/item/geiger_counter/examine(mob/user) . = ..() From 11c7de64f0fd364d26c19bde7089bf192d754a0c Mon Sep 17 00:00:00 2001 From: XeonMations Date: Wed, 11 Sep 2024 07:34:53 +0300 Subject: [PATCH 11/42] getline --- code/controllers/subsystem/radiation.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/controllers/subsystem/radiation.dm b/code/controllers/subsystem/radiation.dm index c714c413af79a..0a8294e2389cb 100644 --- a/code/controllers/subsystem/radiation.dm +++ b/code/controllers/subsystem/radiation.dm @@ -40,7 +40,7 @@ SUBSYSTEM_DEF(radiation) var/current_insulation = 1 - for (var/turf/turf_in_between in get_line(source, target) - get_turf(source)) + for (var/turf/turf_in_between in getline(source, target) - get_turf(source)) var/insulation = cached_rad_insulations[turf_in_between] if (isnull(insulation)) insulation = turf_in_between.rad_insulation From e15be4cbdaffe3079d40dff8290591c84da77e41 Mon Sep 17 00:00:00 2001 From: XeonMations Date: Wed, 11 Sep 2024 07:53:21 +0300 Subject: [PATCH 12/42] Update radiation.dm --- code/controllers/subsystem/radiation.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/controllers/subsystem/radiation.dm b/code/controllers/subsystem/radiation.dm index 0a8294e2389cb..9c7c2e8a47020 100644 --- a/code/controllers/subsystem/radiation.dm +++ b/code/controllers/subsystem/radiation.dm @@ -13,7 +13,7 @@ SUBSYSTEM_DEF(radiation) var/datum/radiation_pulse_information/pulse_information = processing[1] var/datum/weakref/source_ref = pulse_information.source_ref - var/atom/source = source_ref.resolve() + var/atom/source = source_ref?.resolve() if (isnull(source)) processing.Cut(1, 2) continue From 67e002bfdfe622536a1fa49a95efba77138c8bda Mon Sep 17 00:00:00 2001 From: XeonMations Date: Wed, 11 Sep 2024 10:09:03 +0300 Subject: [PATCH 13/42] _traits.dm --- code/_globalvars/traits/_traits.dm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index b95624dcb8a12..d240ea0f57a8d 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -48,7 +48,6 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_RESISTCOLD" = TRAIT_RESISTCOLD, "TRAIT_RESISTHIGHPRESSURE" = TRAIT_RESISTHIGHPRESSURE, "TRAIT_RESISTLOWPRESSURE" = TRAIT_RESISTLOWPRESSURE, - "TRAIT_RADIMMUNE" = TRAIT_RADIMMUNE, "TRAIT_VIRUSIMMUNE" = TRAIT_VIRUSIMMUNE, "TRAIT_PIERCEIMMUNE" = TRAIT_PIERCEIMMUNE, "TRAIT_NODISMEMBER" = TRAIT_NODISMEMBER, @@ -172,7 +171,12 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRACKED_SENSORS_TRAIT" = TRACKED_SENSORS_TRAIT, "TRAIT_SUIT_SENSORS" = TRAIT_SUIT_SENSORS, "TRAIT_NANITE_SENSORS" = TRAIT_NANITE_SENSORS, - "TRAIT_PSYCHIC_SENSE" = TRAIT_PSYCHIC_SENSE + "TRAIT_PSYCHIC_SENSE" = TRAIT_PSYCHIC_SENSE, + "TRAIT_RADIMMUNE" = TRAIT_RADIMMUNE, + "TRAIT_IRRADIATED" = TRAIT_IRRADIATED, + "TRAIT_HALT_RADIATION_EFFECTS" = TRAIT_HALT_RADIATION_EFFECTS, + "TRAIT_RADIATION_PROTECTED_CLOTHING" = TRAIT_RADIATION_PROTECTED_CLOTHING, + "TRAIT_BYPASS_EARLY_IRRADIATED_CHECK" = TRAIT_BYPASS_EARLY_IRRADIATED_CHECK ), /obj/item/integrated_circuit = list( "TRAIT_COMPONENT_MMI" = TRAIT_COMPONENT_MMI, From c8b3e104b68d22e2be0eee2abba4fae5b0162198 Mon Sep 17 00:00:00 2001 From: XeonMations Date: Wed, 11 Sep 2024 10:12:26 +0300 Subject: [PATCH 14/42] grep checks --- code/datums/components/geiger_sound.dm | 6 +++--- code/datums/components/genetic_damage.dm | 2 +- code/datums/components/irradiated.dm | 8 ++++---- code/datums/components/radiation_countdown.dm | 4 ++-- code/datums/elements/radiation_protected_clothing.dm | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/code/datums/components/geiger_sound.dm b/code/datums/components/geiger_sound.dm index 30e879b66681b..166ce20378ab5 100644 --- a/code/datums/components/geiger_sound.dm +++ b/code/datums/components/geiger_sound.dm @@ -21,13 +21,13 @@ /datum/component/geiger_sound/RegisterWithParent() sound = new(parent) - RegisterSignal(parent, COMSIG_IN_RANGE_OF_IRRADIATION, .proc/on_pre_potential_irradiation) + RegisterSignal(parent, COMSIG_IN_RANGE_OF_IRRADIATION, PROC_REF(on_pre_potential_irradiation)) ADD_TRAIT(parent, TRAIT_BYPASS_EARLY_IRRADIATED_CHECK, REF(src)) if (isitem(parent)) var/atom/atom_parent = parent - RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/on_moved) + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved)) register_to_loc(atom_parent.loc) /datum/component/geiger_sound/UnregisterFromParent() @@ -61,7 +61,7 @@ last_parent = new_loc if (!isnull(new_loc)) - RegisterSignal(new_loc, COMSIG_IN_RANGE_OF_IRRADIATION, .proc/on_pre_potential_irradiation) + RegisterSignal(new_loc, COMSIG_IN_RANGE_OF_IRRADIATION, PROC_REF(on_pre_potential_irradiation)) /datum/looping_sound/geiger mid_sounds = list( diff --git a/code/datums/components/genetic_damage.dm b/code/datums/components/genetic_damage.dm index 1092f444b6592..0aecad02a9622 100644 --- a/code/datums/components/genetic_damage.dm +++ b/code/datums/components/genetic_damage.dm @@ -29,7 +29,7 @@ START_PROCESSING(SSprocessing, src) /datum/component/genetic_damage/RegisterWithParent() - RegisterSignal(parent, COMSIG_LIVING_HEALTHSCAN, .proc/on_healthscan) + RegisterSignal(parent, COMSIG_LIVING_HEALTHSCAN, PROC_REF(on_healthscan)) /datum/component/genetic_damage/UnregisterFromParent() UnregisterSignal(parent, COMSIG_LIVING_HEALTHSCAN) diff --git a/code/datums/components/irradiated.dm b/code/datums/components/irradiated.dm index 3d538a23c7fc1..682ffe9348067 100644 --- a/code/datums/components/irradiated.dm +++ b/code/datums/components/irradiated.dm @@ -49,8 +49,8 @@ human_parent.throw_alert("irradiated", /atom/movable/screen/alert/irradiated) /datum/component/irradiated/RegisterWithParent() - RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/on_clean) - RegisterSignal(parent, COMSIG_GEIGER_COUNTER_SCAN, .proc/on_geiger_counter_scan) + RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(on_clean)) + RegisterSignal(parent, COMSIG_GEIGER_COUNTER_SCAN, PROC_REF(geiger_counter_scan)) /datum/component/irradiated/UnregisterFromParent() UnregisterSignal(parent, list( @@ -115,7 +115,7 @@ COOLDOWN_START(src, last_tox_damage, RADIATION_TOX_INTERVAL) /datum/component/irradiated/proc/start_burn_splotch_timer() - addtimer(CALLBACK(src, .proc/give_burn_splotches), rand(RADIATION_BURN_INTERVAL_MIN, RADIATION_BURN_INTERVAL_MAX), TIMER_STOPPABLE) + addtimer(CALLBACK(src, PROC_REF(give_burn_splotches)), rand(RADIATION_BURN_INTERVAL_MIN, RADIATION_BURN_INTERVAL_MAX), TIMER_STOPPABLE) /datum/component/irradiated/proc/give_burn_splotches() // This shouldn't be possible, but just in case. @@ -152,7 +152,7 @@ return parent_movable.add_filter("rad_glow", 2, list("type" = "outline", "color" = "#39ff1430", "size" = 2)) - addtimer(CALLBACK(src, .proc/start_glow_loop, parent_movable), rand(0.1 SECONDS, 1.9 SECONDS)) // Things should look uneven + addtimer(CALLBACK(src, PROC_REF(start_glow_loop), parent_movable), rand(0.1 SECONDS, 1.9 SECONDS)) // Things should look uneven /datum/component/irradiated/proc/start_glow_loop(atom/movable/parent_movable) var/filter = parent_movable.get_filter("rad_glow") diff --git a/code/datums/components/radiation_countdown.dm b/code/datums/components/radiation_countdown.dm index 09a9ea7ac16b6..1fb7fc028f011 100644 --- a/code/datums/components/radiation_countdown.dm +++ b/code/datums/components/radiation_countdown.dm @@ -25,7 +25,7 @@ start_deletion_timer() /datum/component/radiation_countdown/proc/start_deletion_timer() - addtimer(CALLBACK(src, .proc/remove_self), TIME_UNTIL_DELETION, TIMER_UNIQUE | TIMER_OVERRIDE) + addtimer(CALLBACK(src, PROC_REF(remove_self)), TIME_UNTIL_DELETION, TIMER_UNIQUE | TIMER_OVERRIDE) /datum/component/radiation_countdown/proc/remove_self() if (!HAS_TRAIT(parent, TRAIT_IRRADIATED)) @@ -34,7 +34,7 @@ qdel(src) /datum/component/radiation_countdown/RegisterWithParent() - RegisterSignal(parent, COMSIG_IN_THRESHOLD_OF_IRRADIATION, .proc/on_pre_potential_irradiation_within_range) + RegisterSignal(parent, COMSIG_IN_THRESHOLD_OF_IRRADIATION, PROC_REF(on_pre_potential_irradiation_within_range)) /datum/component/radiation_countdown/UnregisterFromParent() UnregisterSignal(parent, COMSIG_IN_THRESHOLD_OF_IRRADIATION) diff --git a/code/datums/elements/radiation_protected_clothing.dm b/code/datums/elements/radiation_protected_clothing.dm index c74614a745fea..b94a3f7cb209d 100644 --- a/code/datums/elements/radiation_protected_clothing.dm +++ b/code/datums/elements/radiation_protected_clothing.dm @@ -11,7 +11,7 @@ return ELEMENT_INCOMPATIBLE ADD_TRAIT(target, TRAIT_RADIATION_PROTECTED_CLOTHING, REF(src)) - RegisterSignal(target, COMSIG_PARENT_EXAMINE, .proc/on_examine) + RegisterSignal(target, COMSIG_PARENT_EXAMINE, PROC_REF(on_examine)) /datum/element/radiation_protected_clothing/Detach(datum/source, ...) REMOVE_TRAIT(source, TRAIT_RADIATION_PROTECTED_CLOTHING, REF(src)) From 7b11cf5a081f6196d7f6ac3270fabe7a54db8fd0 Mon Sep 17 00:00:00 2001 From: XeonMations Date: Wed, 11 Sep 2024 10:14:54 +0300 Subject: [PATCH 15/42] CI my beloved --- code/datums/components/irradiated.dm | 2 +- code/game/machinery/computer/dna_console.dm | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/code/datums/components/irradiated.dm b/code/datums/components/irradiated.dm index 682ffe9348067..27b9938915ef2 100644 --- a/code/datums/components/irradiated.dm +++ b/code/datums/components/irradiated.dm @@ -50,7 +50,7 @@ /datum/component/irradiated/RegisterWithParent() RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(on_clean)) - RegisterSignal(parent, COMSIG_GEIGER_COUNTER_SCAN, PROC_REF(geiger_counter_scan)) + RegisterSignal(parent, COMSIG_GEIGER_COUNTER_SCAN, PROC_REF(on_geiger_counter_scan)) /datum/component/irradiated/UnregisterFromParent() UnregisterSignal(parent, list( diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm index 8f1bae1ba0964..ba0ed72eff10d 100644 --- a/code/game/machinery/computer/dna_console.dm +++ b/code/game/machinery/computer/dna_console.dm @@ -2184,6 +2184,9 @@ #undef GENETIC_DAMAGE_IRGENETIC_DAMAGE_MULTIPLIER +#undef GENETIC_DAMAGE_PULSE_UNIQUE_IDENTITY +#undef GENETIC_DAMAGE_PULSE_UNIQUE_FEATURES + #undef STATUS_TRANSFORMING #undef SEARCH_OCCUPANT From 2f13d35f89329cb353b8fd87bef063e8a8ef8850 Mon Sep 17 00:00:00 2001 From: XeonMations Date: Wed, 11 Sep 2024 11:02:46 +0300 Subject: [PATCH 16/42] Update other_tools.dm --- .../mecha/equipment/tools/other_tools.dm | 20 ------------------- 1 file changed, 20 deletions(-) diff --git a/code/modules/vehicles/mecha/equipment/tools/other_tools.dm b/code/modules/vehicles/mecha/equipment/tools/other_tools.dm index b399a8220b70c..43dcbf069a7fe 100644 --- a/code/modules/vehicles/mecha/equipment/tools/other_tools.dm +++ b/code/modules/vehicles/mecha/equipment/tools/other_tools.dm @@ -440,26 +440,6 @@ fuel.amount -= min(delta_time * use_fuel / MINERAL_MATERIAL_AMOUNT, fuel.amount) update_equip_info() - -/obj/item/mecha_parts/mecha_equipment/generator/nuclear - name = "exonuclear reactor" - desc = "An exosuit module that generates power using uranium as fuel. Pollutes the environment." - icon_state = "tesla" - max_fuel = 50000 - fuelrate_idle = 5 - fuelrate_active = 15 - rechargerate = 25 - var/radrate = 15 - -/obj/item/mecha_parts/mecha_equipment/generator/nuclear/generator_init() - fuel = new /obj/item/stack/sheet/mineral/uranium(src, 0) - -/obj/item/mecha_parts/mecha_equipment/generator/nuclear/process(delta_time) - . = ..() - if(!.) //process wasnt killed - radiation_pulse(get_turf(src), radrate * delta_time) - - /////////////////////////////////////////// THRUSTERS ///////////////////////////////////////////// /obj/item/mecha_parts/mecha_equipment/thrusters From d857f9b9ed93e531a0c87f91ad705aea1e34fbd7 Mon Sep 17 00:00:00 2001 From: XeonMations Date: Wed, 11 Sep 2024 14:58:36 +0300 Subject: [PATCH 17/42] MAPS --- _maps/RandomRuins/SpaceRuins/oldstation.dmm | 13 +- _maps/map_files/BoxStation/BoxStation.dmm | 25 +- _maps/map_files/CorgStation/CorgStation.dmm | 31 +-- .../map_files/Deltastation/DeltaStation2.dmm | 247 +++--------------- _maps/map_files/EchoStation/EchoStation.dmm | 25 +- _maps/map_files/FlandStation/FlandStation.dmm | 10 +- _maps/map_files/KiloStation/KiloStation.dmm | 8 +- _maps/map_files/MetaStation/MetaStation.dmm | 8 +- _maps/map_files/Mining/Lavaland.dmm | 1 - _maps/map_files/RadStation/RadStation.dmm | 25 +- 10 files changed, 82 insertions(+), 311 deletions(-) diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm index 67e086897491a..a5ce96dcf8bdb 100644 --- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm @@ -2483,11 +2483,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/ruin/space/has_grav/ancientstation/deltacorridor) -"hK" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/rad_collector, -/turf/open/floor/plating, -/area/ruin/space/has_grav/ancientstation/deltacorridor) "hL" = ( /obj/structure/cable{ icon_state = "1-2" @@ -8729,8 +8724,8 @@ eZ fz fz dh -hK -hK +dh +dh Ku Ll Sf @@ -8777,8 +8772,8 @@ bD fz fz fz -hK -hK +dh +dh BH wC bD diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 62d532a7d9ebd..3700017f6ff69 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -14387,13 +14387,13 @@ /obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 8 }, -/obj/machinery/power/rad_collector/anchored, /obj/structure/cable{ icon_state = "0-8" }, /obj/structure/window/plasma/reinforced{ dir = 4 }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/engine, /area/engine/supermatter) "cEw" = ( @@ -14412,13 +14412,13 @@ /obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 4 }, -/obj/machinery/power/rad_collector/anchored, /obj/structure/cable{ icon_state = "0-4" }, /obj/structure/window/plasma/reinforced{ dir = 8 }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/engine, /area/engine/supermatter) "cEz" = ( @@ -14483,21 +14483,6 @@ }, /turf/open/space, /area/space/nearstation) -"cEM" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/item/tank/internals/plasma, -/obj/machinery/door/poddoor/shutters/radiation/preopen{ - id = "engsm"; - name = "Radiation Chamber Shutters" - }, -/turf/open/floor/plating, -/area/engine/supermatter) "cET" = ( /obj/effect/decal/cleanable/oil, /obj/effect/decal/cleanable/dirt, @@ -14554,26 +14539,26 @@ /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 5 }, -/obj/machinery/power/rad_collector/anchored, /obj/structure/cable{ icon_state = "0-8" }, /obj/structure/window/plasma/reinforced{ dir = 4 }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/engine, /area/engine/supermatter) "cFh" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 9 }, -/obj/machinery/power/rad_collector/anchored, /obj/structure/cable{ icon_state = "0-4" }, /obj/structure/window/plasma/reinforced{ dir = 8 }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/engine, /area/engine/supermatter) "cFj" = ( @@ -96927,7 +96912,7 @@ cDC cqU cEf cEt -cEM +cEt csA cEg cFK diff --git a/_maps/map_files/CorgStation/CorgStation.dmm b/_maps/map_files/CorgStation/CorgStation.dmm index 96863b1cf8f29..26c5027a40b50 100644 --- a/_maps/map_files/CorgStation/CorgStation.dmm +++ b/_maps/map_files/CorgStation/CorgStation.dmm @@ -2588,11 +2588,11 @@ /area/science/test_area) "aFr" = ( /obj/structure/window/plasma/reinforced, -/obj/machinery/power/rad_collector/anchored, /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 6 }, /obj/structure/cable, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/circuit/green, /area/engine/supermatter) "aFu" = ( @@ -2846,13 +2846,13 @@ /obj/structure/window/plasma/reinforced{ dir = 1 }, -/obj/machinery/power/rad_collector/anchored, /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 5 }, /obj/structure/cable{ icon_state = "0-2" }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/circuit/green, /area/engine/supermatter) "aJa" = ( @@ -2898,15 +2898,6 @@ }, /turf/open/floor/iron, /area/engine/atmos) -"aJW" = ( -/obj/structure/window/plasma/reinforced, -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 1 - }, -/obj/machinery/power/rad_collector/anchored, -/obj/structure/cable, -/turf/open/floor/circuit/green, -/area/engine/supermatter) "aJZ" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -3256,11 +3247,11 @@ /area/engine/engine_room) "aOd" = ( /obj/structure/window/plasma/reinforced, -/obj/machinery/power/rad_collector/anchored, /obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 1 }, /obj/structure/cable, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/circuit/green, /area/engine/supermatter) "aOn" = ( @@ -3673,11 +3664,11 @@ /obj/structure/window/plasma/reinforced{ dir = 1 }, -/obj/machinery/power/rad_collector/anchored, /obj/machinery/atmospherics/pipe/manifold/general/visible, /obj/structure/cable{ icon_state = "0-2" }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/circuit/green, /area/engine/supermatter) "aSC" = ( @@ -63916,22 +63907,10 @@ pixel_x = 8; pixel_y = 7 }, -/obj/item/circuitboard/machine/rad_collector{ - pixel_x = 7; - pixel_y = 5 - }, /obj/item/circuitboard/machine/smes{ pixel_x = 6; pixel_y = 3 }, -/obj/item/circuitboard/machine/rad_collector{ - pixel_x = 5; - pixel_y = 1 - }, -/obj/item/circuitboard/machine/rad_collector{ - pixel_x = 4; - pixel_y = -1 - }, /obj/item/radio/intercom{ pixel_y = -28 }, @@ -88840,7 +88819,7 @@ aVT rXf aPU auG -aJW +aOd aCQ tZH asE diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 3b772282a8e01..9bbe61936143c 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -870,12 +870,6 @@ }, /turf/open/floor/iron, /area/engine/break_room) -"ahg" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron, -/area/maintenance/port) "ahq" = ( /obj/structure/cable{ icon_state = "1-4" @@ -3542,7 +3536,6 @@ /turf/open/floor/engine, /area/engine/supermatter) "axx" = ( -/obj/machinery/power/rad_collector/anchored, /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 6 }, @@ -3552,6 +3545,7 @@ /obj/structure/window/plasma/reinforced{ dir = 4 }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/circuit/green, /area/engine/supermatter) "axy" = ( @@ -3570,7 +3564,6 @@ /turf/open/floor/engine, /area/engine/supermatter) "axB" = ( -/obj/machinery/power/rad_collector/anchored, /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 10 }, @@ -3580,6 +3573,7 @@ /obj/structure/window/plasma/reinforced{ dir = 8 }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/circuit/green, /area/engine/supermatter) "axC" = ( @@ -3848,32 +3842,19 @@ /obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 8 }, -/obj/machinery/power/rad_collector/anchored, /obj/structure/cable{ icon_state = "0-8" }, /obj/structure/window/plasma/reinforced{ dir = 4 }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/circuit/green, /area/engine/supermatter) "ayK" = ( /obj/machinery/power/supermatter_crystal/engine, /turf/open/floor/engine, /area/engine/supermatter) -"ayL" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 4 - }, -/obj/machinery/power/rad_collector/anchored, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/structure/window/plasma/reinforced{ - dir = 8 - }, -/turf/open/floor/circuit/green, -/area/engine/supermatter) "ayM" = ( /obj/structure/cable{ icon_state = "4-8" @@ -4122,21 +4103,7 @@ }, /turf/open/floor/plating, /area/engine/supermatter) -"azT" = ( -/obj/machinery/power/rad_collector/anchored, -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/structure/window/plasma/reinforced{ - dir = 4 - }, -/turf/open/floor/circuit/green, -/area/engine/supermatter) "azU" = ( -/obj/machinery/power/rad_collector/anchored, /obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 4 }, @@ -4146,6 +4113,7 @@ /obj/structure/window/plasma/reinforced{ dir = 8 }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/circuit/green, /area/engine/supermatter) "azX" = ( @@ -6376,13 +6344,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /turf/open/floor/iron/dark, /area/ai_monitored/turret_protected/ai) -"aOh" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/maintenance/starboard/fore) "aOA" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -11503,12 +11464,6 @@ }, /turf/open/floor/plating, /area/bridge) -"bwY" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/maintenance/starboard/fore) "bwZ" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -16720,7 +16675,6 @@ /turf/open/space, /area/space/nearstation) "cje" = ( -/obj/machinery/power/rad_collector/anchored, /obj/structure/cable{ icon_state = "0-4" }, @@ -18503,25 +18457,6 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/hallway/primary/central) -"csO" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/turf/open/floor/iron, -/area/hallway/primary/central) "csP" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -20062,7 +19997,6 @@ /turf/open/space, /area/space/nearstation) "cAK" = ( -/obj/machinery/power/rad_collector/anchored, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ icon_state = "0-4" @@ -26822,12 +26756,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/science/mixing) -"dvz" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/maintenance/port/aft) "dvC" = ( /obj/structure/extinguisher_cabinet{ pixel_y = 32 @@ -27221,10 +27149,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/crew_quarters/heads/hos) -"dyQ" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/maintenance/starboard/aft) "dyT" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -51120,19 +51044,6 @@ }, /turf/open/floor/iron/dark/textured_half, /area/maintenance/disposal/incinerator) -"klf" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron, -/area/hallway/primary/central) "klq" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -58414,12 +58325,6 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron/dark/smooth_edge, /area/security/main) -"mIs" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/maintenance/starboard/aft) "mIA" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 @@ -59492,13 +59397,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /turf/open/floor/iron, /area/hallway/secondary/entry) -"mZU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron, -/area/maintenance/port) "mZW" = ( /obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, @@ -63820,10 +63718,6 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/hallway/primary/central) -"orn" = ( -/obj/effect/landmark/xeno_spawn, -/turf/open/floor/iron, -/area/maintenance/aft) "orI" = ( /obj/effect/decal/cleanable/dirt, /obj/item/radio/intercom{ @@ -65858,10 +65752,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/iron, /area/medical/medbay/central) -"paG" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/maintenance/aft) "paK" = ( /obj/effect/decal/cleanable/blood/old, /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, @@ -73513,21 +73403,6 @@ }, /turf/open/floor/iron, /area/quartermaster/sorting) -"rwT" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron, -/area/hallway/primary/central) "rwY" = ( /obj/structure/closet/cardboard, /obj/item/storage/toolbox/mechanical, @@ -74675,13 +74550,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /turf/open/floor/iron, /area/engine/atmos) -"rOD" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/maintenance/starboard/aft) "rOP" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/lootdrop/maintenance, @@ -80524,13 +80392,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /turf/open/floor/iron/dark, /area/security/brig/medbay) -"tDp" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/maintenance/port/aft) "tDJ" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, @@ -87430,9 +87291,6 @@ }, /turf/open/floor/iron, /area/medical/patients_rooms) -"vQJ" = ( -/turf/open/floor/iron, -/area/maintenance/aft) "vQV" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -90998,13 +90856,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /turf/open/floor/iron/dark, /area/ai_monitored/turret_protected/ai) -"wQF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ - dir = 8 - }, -/turf/open/floor/iron, -/area/maintenance/port) "wQP" = ( /obj/item/kirbyplants/random, /obj/machinery/airalarm/directional/south{ @@ -93892,18 +93743,6 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) -"xNf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/maintenance/port/aft) "xNg" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -115989,7 +115828,7 @@ caE cWO caE caE -ahg +xoi cfT caE aad @@ -120790,7 +120629,7 @@ auZ awg axx ayJ -azT +ayJ aAU aCl awg @@ -121388,7 +121227,7 @@ hSg cON qSa cMY -mZU +nQh uDH caE caE @@ -121645,7 +121484,7 @@ cub inh isp cMY -mZU +nQh pRU caE cea @@ -121817,7 +121656,7 @@ atU avd awg axB -ayL +azU azU aAY aCl @@ -122673,7 +122512,7 @@ kqw das dcd cMY -mZU +nQh uDH caE cea @@ -124515,7 +124354,7 @@ dLW tHM fjS nPV -tDp +grG dLW ecQ edl @@ -125774,7 +125613,7 @@ jiI ceb evv cea -wQF +lGz tCh dHe guv @@ -127284,7 +127123,7 @@ tXk jiS cEu caG -ahg +xoi caE pue cMY @@ -127325,7 +127164,7 @@ dKE dQE weS dYu -dvz +jje gKj dLW dif @@ -127591,9 +127430,9 @@ skB dUg dUX xWv -xNf +fjS xIS -xNf +fjS riy gTw xDk @@ -127855,7 +127694,7 @@ dZg dYu dYu dZg -tDp +grG dLW ecQ edl @@ -131951,7 +131790,7 @@ oSm eGz dZg dNt -tDp +grG jje dYu jgN @@ -136969,9 +136808,9 @@ akl aig apw aiC -aOh -bwY -bwY +kej +xcC +xcC apw apw apw @@ -140898,7 +140737,7 @@ ipl bsW cvM rrG -klf +uMP cAm cBL iPK @@ -141206,7 +141045,7 @@ wIC fvp hFN hrC -vQJ +jXV dNT qYo aaa @@ -141412,7 +141251,7 @@ bsW bsW cyL cxf -csO +tSy cAm hye kwW @@ -141720,7 +141559,7 @@ bkC rmK dPq pkR -vQJ +jXV dNT aaa wiQ @@ -141926,7 +141765,7 @@ bsW bvK cvM qHd -rwT +aTr cAm cBO oyy @@ -141976,8 +141815,8 @@ bkC nje mRg dPq -orn -vQJ +lFi +jXV dNT qYo wiQ @@ -142440,7 +142279,7 @@ clw bsW dHb rrG -klf +uMP cAm cBQ sEz @@ -142490,7 +142329,7 @@ dPq dPq dPq dPq -vQJ +jXV rDi dNT qYo @@ -142697,7 +142536,7 @@ pMO bsW cvM vll -rwT +aTr cAm sqY bKI @@ -143260,7 +143099,7 @@ rDi rDi dNS rDi -paG +gLi dNS dNS dNS @@ -143481,7 +143320,7 @@ wYb xPI jrz jZE -dyQ +diU kkL pJR fbX @@ -144027,9 +143866,9 @@ dNS eaM rDi hxe -paG +gLi sfI -vQJ +jXV sfI rDi dNS @@ -145023,7 +144862,7 @@ xqE wQP cAw kUG -mIs +pWU cIW cIW vXu @@ -145034,7 +144873,7 @@ cHW xMt fBI cHW -mIs +pWU jbu cIX ddl @@ -145044,7 +144883,7 @@ cHW eBl xKU eBl -mIs +pWU cIW vgQ sRQ @@ -146075,7 +145914,7 @@ cIW cIW cHU dHc -rOD +vXu cHU cIW cIW @@ -146332,7 +146171,7 @@ cIW cIW cHU pjy -rOD +vXu tTn cIW cIW @@ -147861,18 +147700,18 @@ cIW cIW cHW vdx -mIs +pWU dkO cIX hKE vXu cNH -mIs +pWU due vXu vXu dyT -mIs +pWU ooY gEC cHU diff --git a/_maps/map_files/EchoStation/EchoStation.dmm b/_maps/map_files/EchoStation/EchoStation.dmm index 074cd9975ff6f..a49418c1c2428 100644 --- a/_maps/map_files/EchoStation/EchoStation.dmm +++ b/_maps/map_files/EchoStation/EchoStation.dmm @@ -3153,10 +3153,10 @@ /obj/structure/cable{ icon_state = "0-4" }, -/obj/machinery/power/rad_collector/anchored, /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 9 }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/plating, /area/engine/supermatter) "blA" = ( @@ -4502,13 +4502,13 @@ /obj/structure/cable{ icon_state = "0-8" }, -/obj/machinery/power/rad_collector/anchored, /obj/structure/extinguisher_cabinet{ pixel_y = 32 }, /obj/machinery/atmospherics/pipe/manifold/green/visible{ dir = 8 }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/plating, /area/engine/supermatter) "bVa" = ( @@ -4880,7 +4880,7 @@ /obj/structure/cable{ icon_state = "0-8" }, -/obj/machinery/power/rad_collector/anchored, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/plating, /area/engine/supermatter) "cea" = ( @@ -8408,6 +8408,7 @@ /obj/machinery/atmospherics/pipe/manifold/cyan/visible{ dir = 4 }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/plating, /area/engine/supermatter) "eaA" = ( @@ -18188,7 +18189,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/power/rad_collector, /turf/open/floor/iron/dark, /area/engine/engineering) "jaU" = ( @@ -27470,10 +27470,10 @@ /obj/structure/cable{ icon_state = "0-8" }, -/obj/machinery/power/rad_collector/anchored, /obj/machinery/atmospherics/pipe/manifold/green/visible{ dir = 8 }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/plating, /area/engine/supermatter) "nFR" = ( @@ -27783,19 +27783,6 @@ /obj/structure/flora/rock, /turf/open/floor/plating/grass, /area/asteroid/paradise/surface) -"nKs" = ( -/obj/structure/window/plasma/reinforced{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/power/rad_collector/anchored, -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/supermatter) "nKB" = ( /obj/effect/turf_decal/sand/plating, /turf/open/floor/sepia/planetary{ @@ -64418,7 +64405,7 @@ oQF pGF kXp ocx -nKs +dZF dZF blt xiB diff --git a/_maps/map_files/FlandStation/FlandStation.dmm b/_maps/map_files/FlandStation/FlandStation.dmm index 0de0b73ac4ee4..279773729896f 100644 --- a/_maps/map_files/FlandStation/FlandStation.dmm +++ b/_maps/map_files/FlandStation/FlandStation.dmm @@ -52712,7 +52712,6 @@ /turf/open/floor/iron/sepia, /area/construction/mining/aux_base) "nwa" = ( -/obj/machinery/power/rad_collector/anchored, /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 1 @@ -52720,6 +52719,7 @@ /obj/effect/turf_decal/stripes/red/line, /obj/structure/cable, /obj/structure/window/plasma/reinforced, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/engine, /area/engine/supermatter) "nwg" = ( @@ -69194,7 +69194,6 @@ /turf/open/floor/iron/techmaint, /area/maintenance/port) "rOa" = ( -/obj/machinery/power/rad_collector/anchored, /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 10 @@ -69202,6 +69201,7 @@ /obj/effect/turf_decal/stripes/red/line, /obj/structure/cable, /obj/structure/window/plasma/reinforced, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/engine, /area/engine/supermatter) "rOe" = ( @@ -78578,7 +78578,6 @@ /turf/open/floor/iron/white, /area/medical/apothecary) "uhu" = ( -/obj/machinery/power/rad_collector/anchored, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -78594,6 +78593,7 @@ /obj/structure/window/plasma/reinforced{ dir = 1 }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/engine, /area/engine/supermatter) "uhJ" = ( @@ -82814,7 +82814,6 @@ }, /area/engine/atmos) "vhm" = ( -/obj/machinery/power/rad_collector/anchored, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -82828,6 +82827,7 @@ /obj/structure/window/plasma/reinforced{ dir = 1 }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/engine, /area/engine/supermatter) "vhn" = ( @@ -83605,7 +83605,6 @@ /turf/open/floor/iron/sepia, /area/engine/engineering) "vqc" = ( -/obj/machinery/power/rad_collector/anchored, /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 1 @@ -83617,6 +83616,7 @@ c_tag = "Supermatter Chamber"; network = list("engine") }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/engine, /area/engine/supermatter) "vqq" = ( diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index 031e5a1194bb6..fdfbe05ab1cf3 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -21748,7 +21748,6 @@ /turf/open/floor/engine, /area/engine/engineering) "cxW" = ( -/obj/machinery/power/rad_collector/anchored, /obj/structure/window/plasma/reinforced{ dir = 4 }, @@ -21758,6 +21757,7 @@ /obj/structure/cable{ icon_state = "0-8" }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/circuit/green{ luminosity = 2 }, @@ -21785,7 +21785,6 @@ /turf/open/floor/iron/dark, /area/science/explab) "cxZ" = ( -/obj/machinery/power/rad_collector/anchored, /obj/structure/window/plasma/reinforced{ dir = 8 }, @@ -21795,6 +21794,7 @@ /obj/structure/cable{ icon_state = "0-4" }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/circuit/green{ luminosity = 2 }, @@ -24678,7 +24678,6 @@ /turf/open/floor/engine, /area/engine/supermatter) "cLz" = ( -/obj/machinery/power/rad_collector/anchored, /obj/structure/window/plasma/reinforced{ dir = 4 }, @@ -24688,6 +24687,7 @@ /obj/structure/cable{ icon_state = "0-8" }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/circuit/green{ luminosity = 2 }, @@ -24771,7 +24771,6 @@ /turf/open/floor/engine, /area/engine/engineering) "cLN" = ( -/obj/machinery/power/rad_collector/anchored, /obj/structure/window/plasma/reinforced{ dir = 8 }, @@ -24781,6 +24780,7 @@ /obj/structure/cable{ icon_state = "0-4" }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/circuit/green{ luminosity = 2 }, diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index f98a7ca81881d..a58070ea3fdf2 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -20717,9 +20717,9 @@ /obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 1 }, -/obj/machinery/power/rad_collector/anchored, /obj/structure/cable, /obj/structure/window/plasma/reinforced, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/engine, /area/engine/supermatter) "dbb" = ( @@ -21099,9 +21099,9 @@ /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 10 }, -/obj/machinery/power/rad_collector/anchored, /obj/structure/cable, /obj/structure/window/plasma/reinforced, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/engine, /area/engine/supermatter) "deU" = ( @@ -21202,26 +21202,26 @@ /area/engine/supermatter) "dfk" = ( /obj/machinery/atmospherics/pipe/manifold/general/visible, -/obj/machinery/power/rad_collector/anchored, /obj/structure/cable{ icon_state = "0-2" }, /obj/structure/window/plasma/reinforced{ dir = 1 }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/engine, /area/engine/supermatter) "dfm" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 9 }, -/obj/machinery/power/rad_collector/anchored, /obj/structure/cable{ icon_state = "0-2" }, /obj/structure/window/plasma/reinforced{ dir = 1 }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/engine, /area/engine/supermatter) "dfp" = ( diff --git a/_maps/map_files/Mining/Lavaland.dmm b/_maps/map_files/Mining/Lavaland.dmm index e7aa89ddf7918..151494a6af563 100644 --- a/_maps/map_files/Mining/Lavaland.dmm +++ b/_maps/map_files/Mining/Lavaland.dmm @@ -5910,7 +5910,6 @@ "Sg" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/table/reinforced, -/obj/item/circuitboard/machine/rad_collector, /obj/item/circuitboard/machine/smoke_machine{ pixel_x = 12; pixel_y = -7 diff --git a/_maps/map_files/RadStation/RadStation.dmm b/_maps/map_files/RadStation/RadStation.dmm index fae4d59c5f01b..00bc81c62179a 100644 --- a/_maps/map_files/RadStation/RadStation.dmm +++ b/_maps/map_files/RadStation/RadStation.dmm @@ -5111,19 +5111,6 @@ /obj/effect/landmark/start/assistant, /turf/open/floor/iron/dark/smooth_large, /area/hallway/primary/central) -"bDL" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/power/rad_collector/anchored, -/obj/structure/window/plasma/reinforced{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/supermatter) "bDT" = ( /obj/machinery/nanite_programmer, /obj/effect/turf_decal/stripes/line{ @@ -26466,7 +26453,7 @@ /obj/structure/window/plasma/reinforced{ dir = 8 }, -/obj/machinery/power/rad_collector/anchored, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/iron/tech, /area/engine/supermatter) "iqd" = ( @@ -59497,7 +59484,6 @@ /turf/open/space/basic, /area/space/nearstation) "sQB" = ( -/obj/machinery/power/rad_collector/anchored, /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 9 }, @@ -59507,6 +59493,7 @@ /obj/structure/window/plasma/reinforced{ dir = 8 }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/plating, /area/engine/supermatter) "sQJ" = ( @@ -65342,7 +65329,6 @@ /turf/open/floor/iron, /area/engine/engineering) "uFI" = ( -/obj/machinery/power/rad_collector/anchored, /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 5 }, @@ -65352,6 +65338,7 @@ /obj/structure/window/plasma/reinforced{ dir = 4 }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/plating, /area/engine/supermatter) "uFU" = ( @@ -71522,7 +71509,6 @@ /turf/open/floor/carpet/purple, /area/chapel/main) "wMj" = ( -/obj/machinery/power/rad_collector/anchored, /obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 8 }, @@ -71532,6 +71518,7 @@ /obj/structure/window/plasma/reinforced{ dir = 4 }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/plating, /area/engine/supermatter) "wMI" = ( @@ -72648,7 +72635,6 @@ /turf/open/floor/iron, /area/hallway/primary/aft) "xhl" = ( -/obj/machinery/power/rad_collector/anchored, /obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 4 }, @@ -72658,6 +72644,7 @@ /obj/structure/window/plasma/reinforced{ dir = 8 }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/plating, /area/engine/supermatter) "xhA" = ( @@ -108172,7 +108159,7 @@ mKJ mKJ nFA wMj -bDL +wMj uFI mKJ rIo From b70fe0ef718e007156ac08f380fbd2623bd96ca4 Mon Sep 17 00:00:00 2001 From: XeonMations Date: Wed, 11 Sep 2024 15:16:37 +0300 Subject: [PATCH 18/42] Update all_nodes.dm --- code/modules/research/techweb/all_nodes.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 5d60e7a91adba..797dc07cb8116 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -420,7 +420,6 @@ "plasmaman_tank", "power control", "powermonitor", - "rad_collector", "recharger", "recycler", "researchdisk_locator", From d24d002cff7154638bfebc88c987dbdb00043e98 Mon Sep 17 00:00:00 2001 From: XeonMations Date: Wed, 11 Sep 2024 15:30:46 +0300 Subject: [PATCH 19/42] maps --- _maps/RandomZLevels/SnowCabin.dmm | 6 +++--- _maps/map_files/CorgStation/CorgStation.dmm | 2 +- _maps/map_files/Deltastation/DeltaStation2.dmm | 4 ++-- _maps/shuttles/emergency/emergency_discoinferno.dmm | 2 +- code/datums/materials/meat.dm | 2 +- code/modules/vehicles/mecha/combat/honker.dm | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/_maps/RandomZLevels/SnowCabin.dmm b/_maps/RandomZLevels/SnowCabin.dmm index 505fc7a5b8cc1..495ef9537dfc8 100644 --- a/_maps/RandomZLevels/SnowCabin.dmm +++ b/_maps/RandomZLevels/SnowCabin.dmm @@ -2444,7 +2444,7 @@ name = "Who" }, /obj/item/clothing/head/helmet/knight/yellow{ - armor = list("melee" = 11, "bullet" = 2, "laser" = 1, "energy" = 1, "bomb" = 5, "bio" = 2, "rad" = 0, "fire" = 0, "acid" = 10, "stamina" = 6); + armor = list("melee" = 11, "bullet" = 2, "laser" = 1, "energy" = 1, "bomb" = 5, "bio" = 2, "fire" = 0, "acid" = 10, "stamina" = 6); desc = "A classic metal helmet. The cold has made it unreliable though."; name = "old medieval helmet"; pixel_y = 7 @@ -3778,7 +3778,7 @@ name = "icy wind" }, /obj/item/clothing/head/helmet/skull{ - armor = list("melee" = 15, "bullet" = 5, "laser" = 5, "energy" = 2, "bomb" = 10, "bio" = 5, "rad" = 20, "fire" = 20, "acid" = 20, "stamina" = 8); + armor = list("melee" = 15, "bullet" = 5, "laser" = 5, "energy" = 2, "bomb" = 10, "bio" = 5, "fire" = 20, "acid" = 20, "stamina" = 8); desc = "It's not bloody for some reason. Dear god."; name = "human skull" }, @@ -4883,7 +4883,7 @@ "Fm" = ( /obj/item/clothing/shoes/sneakers/brown, /obj/item/clothing/head/helmet/police{ - armor = list("melee" = 5, "bullet" = 5, "laser" = 5, "energy" = 2, "bomb" = 15, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = 20, "stamina" = 5); + armor = list("melee" = 5, "bullet" = 5, "laser" = 5, "energy" = 2, "bomb" = 15, "bio" = 0, "fire" = 20, "acid" = 20, "stamina" = 5); desc = "I am the law!" }, /obj/structure/closet{ diff --git a/_maps/map_files/CorgStation/CorgStation.dmm b/_maps/map_files/CorgStation/CorgStation.dmm index 26c5027a40b50..c84f84ec1c37b 100644 --- a/_maps/map_files/CorgStation/CorgStation.dmm +++ b/_maps/map_files/CorgStation/CorgStation.dmm @@ -61873,7 +61873,7 @@ moveable = 1 }, /obj/machinery/mass_driver{ - armor = list("melee"=10,"bullet"=10,"laser"=10,"energy"=0,"bomb"=0,"bio"=0,"rad"=0,"fire"=100,"acid"=70); + armor = list("melee"=10,"bullet"=10,"laser"=10,"energy"=0,"bomb"=0,"bio"=0,"fire"=100,"acid"=70); critical_machine = 1; dir = 8; id = "smeject"; diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 9bbe61936143c..b85e30ef3aee1 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -26776,7 +26776,7 @@ name = "Replica CentCom officer's jumpsuit" }, /obj/item/clothing/head/hats/centcom_cap{ - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "stamina" = 0); + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "stamina" = 0); desc = "A replica hat of a Central Commander's attire. It has a small tag on it saying, 'It's good to be emperor.'"; name = "Replica CentCom hat" }, @@ -68943,7 +68943,7 @@ /obj/item/folder/red, /obj/item/toy/gun, /obj/item/clothing/head/beret/sec{ - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "stamina" = 0); + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "stamina" = 0); desc = "A replica beret resembling that of a special operations officer under Nanotrasen."; name = "replica officer's beret" }, diff --git a/_maps/shuttles/emergency/emergency_discoinferno.dmm b/_maps/shuttles/emergency/emergency_discoinferno.dmm index 2629b06e99961..1b4c7e7ceac1f 100644 --- a/_maps/shuttles/emergency/emergency_discoinferno.dmm +++ b/_maps/shuttles/emergency/emergency_discoinferno.dmm @@ -203,7 +203,7 @@ name = "Disco Inferno" }, /obj/machinery/door/airlock/gold{ - armor = list("melee" = 30, "bullet" = 30, "laser" = 20, "energy" = 20, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100, "stamina" = 0); + armor = list("melee" = 30, "bullet" = 30, "laser" = 20, "energy" = 20, "bomb" = 10, "bio" = 100, "fire" = 100, "acid" = 100, "stamina" = 0); heat_proof = 1; resistance_flags = 2 }, diff --git a/code/datums/materials/meat.dm b/code/datums/materials/meat.dm index e9fbc8b4a463f..2d884d7c9424a 100644 --- a/code/datums/materials/meat.dm +++ b/code/datums/materials/meat.dm @@ -8,7 +8,7 @@ value_per_unit = 0.05 //beauty_modifier = -0.3 strength_modifier = 0.7 - //armor_modifiers = list("melee" = 0.3, "bullet" = 0.3, "laser" = 1.2, "energy" = 1.2, "bomb" = 0.3, "bio" = 0, "rad" = 0.7, "fire" = 1, "acid" = 1) + //armor_modifiers = list("melee" = 0.3, "bullet" = 0.3, "laser" = 1.2, "energy" = 1.2, "bomb" = 0.3, "bio" = 0, "fire" = 1, "acid" = 1) item_sound_override = 'sound/effects/meatslap.ogg' turf_sound_override = FOOTSTEP_MEAT texture_layer_icon_state = "meat" diff --git a/code/modules/vehicles/mecha/combat/honker.dm b/code/modules/vehicles/mecha/combat/honker.dm index c705d768b5331..3f00107157fcc 100644 --- a/code/modules/vehicles/mecha/combat/honker.dm +++ b/code/modules/vehicles/mecha/combat/honker.dm @@ -187,7 +187,7 @@ icon_state = "darkhonker" max_integrity = 300 deflect_chance = 15 - armor = list(MELEE = 40, BULLET = 40, LASER = 50, ENERGY = 35, BOMB = 20, BIO = 0, RAD = 0, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) + armor = list(MELEE = 40, BULLET = 40, LASER = 50, ENERGY = 35, BOMB = 20, BIO = 0, FIRE = 100, ACID = 100, STAMINA = 0, BLEED = 0) max_temperature = 35000 operation_req_access = list(ACCESS_SYNDICATE) internals_req_access = list(ACCESS_SYNDICATE) From ab81a371739a917b6d4de1266a27fa0aa23cedd1 Mon Sep 17 00:00:00 2001 From: XeonMations Date: Fri, 13 Sep 2024 15:45:49 +0300 Subject: [PATCH 20/42] Update DeltaStation2.dmm --- .../map_files/Deltastation/DeltaStation2.dmm | 40 +++---------------- 1 file changed, 6 insertions(+), 34 deletions(-) diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index cdd3b61c02dae..c7ebd1416db8b 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -3542,7 +3542,6 @@ /turf/open/floor/engine, /area/engine/supermatter) "axx" = ( -/obj/machinery/power/rad_collector/anchored, /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 6 }, @@ -3552,6 +3551,7 @@ /obj/structure/window/plasma/reinforced{ dir = 4 }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/circuit/green, /area/engine/supermatter) "axy" = ( @@ -3570,7 +3570,6 @@ /turf/open/floor/engine, /area/engine/supermatter) "axB" = ( -/obj/machinery/power/rad_collector/anchored, /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 10 }, @@ -3580,6 +3579,7 @@ /obj/structure/window/plasma/reinforced{ dir = 8 }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/circuit/green, /area/engine/supermatter) "axC" = ( @@ -3848,32 +3848,19 @@ /obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 8 }, -/obj/machinery/power/rad_collector/anchored, /obj/structure/cable{ icon_state = "0-8" }, /obj/structure/window/plasma/reinforced{ dir = 4 }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/circuit/green, /area/engine/supermatter) "ayK" = ( /obj/machinery/power/supermatter_crystal/engine, /turf/open/floor/engine, /area/engine/supermatter) -"ayL" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 4 - }, -/obj/machinery/power/rad_collector/anchored, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/structure/window/plasma/reinforced{ - dir = 8 - }, -/turf/open/floor/circuit/green, -/area/engine/supermatter) "ayM" = ( /obj/structure/cable{ icon_state = "4-8" @@ -4122,21 +4109,7 @@ }, /turf/open/floor/plating, /area/engine/supermatter) -"azT" = ( -/obj/machinery/power/rad_collector/anchored, -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/structure/window/plasma/reinforced{ - dir = 4 - }, -/turf/open/floor/circuit/green, -/area/engine/supermatter) "azU" = ( -/obj/machinery/power/rad_collector/anchored, /obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 4 }, @@ -4146,6 +4119,7 @@ /obj/structure/window/plasma/reinforced{ dir = 8 }, +/obj/machinery/power/tesla_coil/power, /turf/open/floor/circuit/green, /area/engine/supermatter) "azX" = ( @@ -16720,7 +16694,6 @@ /turf/open/space, /area/space/nearstation) "cje" = ( -/obj/machinery/power/rad_collector/anchored, /obj/structure/cable{ icon_state = "0-4" }, @@ -20062,7 +20035,6 @@ /turf/open/space, /area/space/nearstation) "cAK" = ( -/obj/machinery/power/rad_collector/anchored, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ icon_state = "0-4" @@ -120657,7 +120629,7 @@ auZ awg axx ayJ -azT +ayJ aAU aCl awg @@ -121684,7 +121656,7 @@ atU avd awg axB -ayL +azU azU aAY aCl From f30441620b7f9acbc69cf1c75b9e1eb7e7d93690 Mon Sep 17 00:00:00 2001 From: XeonMations Date: Fri, 13 Sep 2024 15:56:31 +0300 Subject: [PATCH 21/42] made radsuits actually protect against radiation --- code/modules/clothing/suits/utility.dm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index 55864ad770af7..6196ded4aa5a0 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -138,6 +138,10 @@ equip_delay_other = 60 flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH +/obj/item/clothing/head/utility/radiation/Initialize(mapload) + . = ..() + AddElement(/datum/element/radiation_protected_clothing) + /obj/item/clothing/suit/utility/radiation name = "radiation suit" desc = "A suit that protects against radiation. The label reads, 'Made with lead. Please do not consume insulation.'" @@ -158,3 +162,4 @@ /obj/item/clothing/suit/utility/radiation/ComponentInitialize() . = ..() AddComponent(/datum/component/anti_artifact, INFINITY, FALSE, 100) + AddElement(/datum/element/radiation_protected_clothing) From 0833abda288b080a52889ad396ab1191315bcb3f Mon Sep 17 00:00:00 2001 From: XeonMations Date: Fri, 13 Sep 2024 18:38:31 +0300 Subject: [PATCH 22/42] to do: fix SM monitor showing radiation --- code/__DEFINES/flags.dm | 23 +- code/__DEFINES/supermatter.dm | 3 + code/_globalvars/bitfields.dm | 13 +- code/datums/diseases/_MobProcs.dm | 6 + code/game/atoms.dm | 8 + code/game/machinery/_machinery.dm | 8 +- .../objects/items/devices/geiger_counter.dm | 2 +- code/game/objects/obj_defense.dm | 11 +- code/game/objects/structures/grille.dm | 2 +- .../antagonists/abductor/equipment/gland.dm | 2 +- .../antagonists/blob/structures/_blob.dm | 4 +- .../nukeop/equipment/nuclearbomb.dm | 4 +- .../modules/clothing/suits/reactive_armour.dm | 8 +- .../pool/components/swimming_ethereal.dm | 2 +- code/modules/power/gravitygenerator.dm | 4 +- code/modules/power/lighting/light.dm | 6 +- code/modules/power/rtg.dm | 2 +- code/modules/power/supermatter/supermatter.dm | 244 +++++++++++++----- code/modules/power/tesla/coil.dm | 70 ++--- code/modules/power/tesla/energy_ball.dm | 30 ++- code/modules/power/tesla/generator.dm | 4 +- .../projectiles/projectile/energy/tesla.dm | 4 +- code/modules/projectiles/projectile/magic.dm | 12 +- .../chemistry/recipes/pyrotechnics.dm | 4 +- code/modules/reagents/reagent_dispenser.dm | 2 +- code/modules/security/genpop.dm | 2 +- code/modules/spells/spell_types/aimed.dm | 2 +- code/modules/vehicles/bicycle.dm | 2 +- code/modules/vehicles/ridden.dm | 4 + 29 files changed, 318 insertions(+), 170 deletions(-) diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 6f244fef43453..a8bfacf170da6 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -153,16 +153,19 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define FREEZE_PROOF (1<<7) //! can't be frozen //tesla_zap -#define TESLA_MACHINE_EXPLOSIVE (1<<0) -#define TESLA_ALLOW_DUPLICATES (1<<1) -#define TESLA_OBJ_DAMAGE (1<<2) -#define TESLA_MOB_DAMAGE (1<<3) -#define TESLA_MOB_STUN (1<<4) - -#define TESLA_DEFAULT_FLAGS ALL -#define TESLA_ENERGY_PRIMARY_BALL_FLAGS (TESLA_MACHINE_EXPLOSIVE | TESLA_OBJ_DAMAGE | TESLA_MOB_DAMAGE | TESLA_MOB_STUN) -#define TESLA_ENERGY_MINI_BALL_FLAGS (TESLA_OBJ_DAMAGE | TESLA_MOB_DAMAGE | TESLA_MOB_STUN) -#define TESLA_FUSION_FLAGS (TESLA_OBJ_DAMAGE | TESLA_MOB_DAMAGE | TESLA_MOB_STUN) +#define ZAP_MACHINE_EXPLOSIVE (1<<0) +#define ZAP_ALLOW_DUPLICATES (1<<1) +#define ZAP_OBJ_DAMAGE (1<<2) +#define ZAP_MOB_DAMAGE (1<<3) +#define ZAP_MOB_STUN (1<<4) +#define ZAP_GENERATES_POWER (1<<5) +#define ZAP_LOW_POWER_GEN (1<<6) /// Zaps with this flag will generate less power through tesla coils + +#define ZAP_DEFAULT_FLAGS ALL +#define ZAP_ENERGY_PRIMARY_BALL_FLAGS (ZAP_MACHINE_EXPLOSIVE | ZAP_OBJ_DAMAGE | ZAP_MOB_DAMAGE | ZAP_MOB_STUN) +#define ZAP_ENERGY_MINI_BALL_FLAGS (ZAP_OBJ_DAMAGE | ZAP_MOB_DAMAGE | ZAP_MOB_STUN) +#define ZAP_FUSION_FLAGS (ZAP_OBJ_DAMAGE | ZAP_MOB_DAMAGE | ZAP_MOB_STUN) +#define ZAP_SUPERMATTER_FLAGS ZAP_GENERATES_POWER //EMP protection #define EMP_PROTECT_SELF (1<<0) diff --git a/code/__DEFINES/supermatter.dm b/code/__DEFINES/supermatter.dm index 6efcf4549b88a..47cafe3be08a6 100644 --- a/code/__DEFINES/supermatter.dm +++ b/code/__DEFINES/supermatter.dm @@ -48,6 +48,9 @@ #define HALLUCINATION_RANGE(P) (min(7, round(P ** 0.25))) +#define DEFAULT_ZAP_ICON_STATE "sm_arc" +#define SLIGHTLY_CHARGED_ZAP_ICON_STATE "sm_arc_supercharged" +#define OVER_9000_ZAP_ICON_STATE "sm_arc_dbz_referance" //Witty I know //If integrity percent remaining is less than these values, the monitor sets off the relevant alarm. #define SUPERMATTER_DELAM_PERCENT 5 diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 282f4c3ac4cce..1a685756d2668 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -216,12 +216,13 @@ DEFINE_BITFIELD(clothing_flags, list( "HEADINTERNALS" = HEADINTERNALS, )) -DEFINE_BITFIELD(tesla_flags, list( - "TESLA_MOB_DAMAGE" = TESLA_MOB_DAMAGE, - "TESLA_OBJ_DAMAGE" = TESLA_OBJ_DAMAGE, - "TESLA_MOB_STUN" = TESLA_MOB_STUN, - "TESLA_ALLOW_DUPLICATES" = TESLA_ALLOW_DUPLICATES, - "TESLA_MACHINE_EXPLOSIVE" = TESLA_MACHINE_EXPLOSIVE, +DEFINE_BITFIELD(zap_flags, list( + "ZAP_MOB_DAMAGE" = ZAP_MOB_DAMAGE, + "ZAP_OBJ_DAMAGE" = ZAP_OBJ_DAMAGE, + "ZAP_MOB_STUN" = ZAP_MOB_STUN, + "ZAP_ALLOW_DUPLICATES" = ZAP_ALLOW_DUPLICATES, + "ZAP_MACHINE_EXPLOSIVE" = ZAP_MACHINE_EXPLOSIVE, + "ZAP_GENERATES_POWER" = ZAP_GENERATES_POWER, )) DEFINE_BITFIELD(car_traits, list( diff --git a/code/datums/diseases/_MobProcs.dm b/code/datums/diseases/_MobProcs.dm index affaee1538536..5782e2461081d 100644 --- a/code/datums/diseases/_MobProcs.dm +++ b/code/datums/diseases/_MobProcs.dm @@ -150,3 +150,9 @@ /mob/living/carbon/CanSpreadAirborneDisease() return !((head && (head.flags_cover & HEADCOVERSMOUTH) && (head.get_armor_rating(BIO, src) >= 25)) || (wear_mask && (wear_mask.flags_cover & MASKCOVERSMOUTH) && (wear_mask.get_armor_rating(BIO, src) >= 25))) + +/mob/living/proc/set_shocked() + flags_1 |= TESLA_IGNORE_1 + +/mob/living/proc/reset_shocked() + flags_1 &= ~ TESLA_IGNORE_1 diff --git a/code/game/atoms.dm b/code/game/atoms.dm index e10bdaf56fef0..cae17853ddc95 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -994,6 +994,14 @@ CREATION_TEST_IGNORE_SUBTYPES(/atom) SEND_SIGNAL(src, COMSIG_ATOM_RCD_ACT, user, the_rcd, passed_mode) return FALSE +/** + * Respond to a electric bolt action on our item + * + * Default behaviour is to return, we define here to allow for cleaner code later on + */ +/atom/proc/zap_act(power, zap_flags, shocked_targets) + return + /** * Respond to our atom being teleported * diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index 753bdfb3e270f..901b9cb26871b 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -757,11 +757,11 @@ Class Procs: /obj/machinery/proc/can_be_overridden() . = 1 -/obj/machinery/tesla_act(power, tesla_flags, shocked_objects) - ..() - if(prob(85) && (tesla_flags & TESLA_MACHINE_EXPLOSIVE)) +/obj/machinery/zap_act(power, zap_flags, shocked_objects) + . = ..() + if(prob(85) && (zap_flags & ZAP_MACHINE_EXPLOSIVE) && !(resistance_flags & INDESTRUCTIBLE)) explosion(src, 1, 2, 4, flame_range = 2, adminlog = FALSE) - if(tesla_flags & TESLA_OBJ_DAMAGE) + else if(zap_flags & ZAP_OBJ_DAMAGE) take_damage(power/2000, BURN, ENERGY) if(prob(40)) emp_act(EMP_LIGHT) diff --git a/code/game/objects/items/devices/geiger_counter.dm b/code/game/objects/items/devices/geiger_counter.dm index e640b832f17d8..9a0667e41d6ef 100644 --- a/code/game/objects/items/devices/geiger_counter.dm +++ b/code/game/objects/items/devices/geiger_counter.dm @@ -73,7 +73,7 @@ /obj/item/geiger_counter/equipped(mob/user, slot, initial) . = ..() - RegisterSignal(user, COMSIG_IN_RANGE_OF_IRRADIATION, PROC_REF(on_pre_potential_irradiation)) + RegisterSignal(user, COMSIG_IN_RANGE_OF_IRRADIATION, PROC_REF(on_pre_potential_irradiation), TRUE) /obj/item/geiger_counter/dropped(mob/user, silent = FALSE) . = ..() diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm index 4fee093fd8c17..56de91a62bba5 100644 --- a/code/game/objects/obj_defense.dm +++ b/code/game/objects/obj_defense.dm @@ -264,15 +264,16 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e update_icon() SSfire_burning.processing -= src -/obj/proc/tesla_act(power, tesla_flags, shocked_targets) +/obj/zap_act(power, zap_flags, shocked_targets) + if(QDELETED(src)) + return FALSE obj_flags |= BEING_SHOCKED - var/power_bounced = power / 2 - tesla_zap(src, 3, power_bounced, tesla_flags, shocked_targets) addtimer(CALLBACK(src, PROC_REF(reset_shocked)), 10) + return power / 2 //The surgeon general warns that being buckled to certain objects receiving powerful shocks is greatly hazardous to your health -//Only tesla coils and grounding rods currently call this because mobs are already targeted over all other objects, but this might be useful for more things later. -/obj/proc/tesla_buckle_check(var/strength) +//Only tesla coils, vehicles, and grounding rods currently call this because mobs are already targeted over all other objects, but this might be useful for more things later. +/obj/proc/zap_buckle_check(var/strength) if(has_buckled_mobs()) for(var/m in buckled_mobs) var/mob/living/buckled_mob = m diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index e0905573ced0f..3734544d0fb28 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -341,7 +341,7 @@ var/obj/structure/cable/C = T.get_cable_node() if(C) playsound(src, 'sound/magic/lightningshock.ogg', 100, 1, extrarange = 5) - tesla_zap(src, 3, C.newavail() * 0.01, TESLA_MOB_DAMAGE | TESLA_OBJ_DAMAGE | TESLA_MOB_STUN | TESLA_ALLOW_DUPLICATES) //Zap for 1/100 of the amount of power. At a million watts in the grid, it will be as powerful as a tesla revolver shot. + tesla_zap(src, 3, C.newavail() * 0.01, ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE | ZAP_MOB_STUN | ZAP_ALLOW_DUPLICATES) //Zap for 1/100 of the amount of power. At a million watts in the grid, it will be as powerful as a tesla revolver shot. C.add_delayedload(C.newavail() * 0.0375) // you can gain up to 3.5 via the 4x upgrades power is halved by the pole so thats 2x then 1X then .5X for 3.5x the 3 bounces shock. return ..() diff --git a/code/modules/antagonists/abductor/equipment/gland.dm b/code/modules/antagonists/abductor/equipment/gland.dm index 403ea59a3a549..3a0c209c82b43 100644 --- a/code/modules/antagonists/abductor/equipment/gland.dm +++ b/code/modules/antagonists/abductor/equipment/gland.dm @@ -314,7 +314,7 @@ addtimer(CALLBACK(src, PROC_REF(zap)), rand(30, 100)) /obj/item/organ/heart/gland/electric/proc/zap() - tesla_zap(owner, 4, 8000, TESLA_MOB_DAMAGE | TESLA_OBJ_DAMAGE | TESLA_MOB_STUN) + tesla_zap(owner, 4, 8000, ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE | ZAP_MOB_STUN) playsound(get_turf(owner), 'sound/magic/lightningshock.ogg', 50, 1) /obj/item/organ/heart/gland/chem diff --git a/code/modules/antagonists/blob/structures/_blob.dm b/code/modules/antagonists/blob/structures/_blob.dm index 79dd5b9ea9501..4fa755962fd3f 100644 --- a/code/modules/antagonists/blob/structures/_blob.dm +++ b/code/modules/antagonists/blob/structures/_blob.dm @@ -207,8 +207,8 @@ CREATION_TEST_IGNORE_SUBTYPES(/obj/structure/blob) if(prob(100 - severity * 30)) new /obj/effect/temp_visual/emp(get_turf(src)) -/obj/structure/blob/tesla_act(power) - ..() +/obj/structure/blob/zap_act(power) + . = ..() if(overmind) if(overmind.blobstrain.tesla_reaction(src, power)) take_damage(power/400, BURN, ENERGY) diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm index a86dd46177d16..385d06b0084bd 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm @@ -477,9 +477,9 @@ return qdel(src) -/obj/machinery/nuclearbomb/tesla_act(power, tesla_flags) +/obj/machinery/nuclearbomb/zap_act(power, zap_flags) ..() - if(tesla_flags & TESLA_MACHINE_EXPLOSIVE) + if(zap_flags & ZAP_MACHINE_EXPLOSIVE) qdel(src)//like the singulo, tesla deletes it. stops it from exploding over and over #define NUKERANGE 127 diff --git a/code/modules/clothing/suits/reactive_armour.dm b/code/modules/clothing/suits/reactive_armour.dm index 8f445695b9863..1401b0ef828da 100644 --- a/code/modules/clothing/suits/reactive_armour.dm +++ b/code/modules/clothing/suits/reactive_armour.dm @@ -229,9 +229,9 @@ siemens_coefficient = -1 cooldown_message = "The tesla capacitors on the reactive tesla armor are still recharging! The armor merely emits some sparks." emp_message = "The tesla capacitors beep ominously for a moment." - var/tesla_power = 25000 - var/tesla_range = 20 - var/tesla_flags = TESLA_MOB_DAMAGE | TESLA_OBJ_DAMAGE + var/zap_power = 25000 + var/zap_range = 20 + var/zap_flags = ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE /obj/item/clothing/suit/armor/reactive/tesla/dropped(mob/user) ..() @@ -251,7 +251,7 @@ /obj/item/clothing/suit/armor/reactive/tesla/reactive_activation(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", damage = 0, attack_type = MELEE_ATTACK) owner.visible_message("[src] blocks [attack_text], sending out arcs of lightning!") - tesla_zap(owner, tesla_range, tesla_power, tesla_flags) + tesla_zap(owner, zap_range, zap_power, zap_flags) return TRUE /obj/item/clothing/suit/armor/reactive/tesla/emp_activation(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", damage = 0, attack_type = MELEE_ATTACK) diff --git a/code/modules/pool/components/swimming_ethereal.dm b/code/modules/pool/components/swimming_ethereal.dm index 13f1877e9d3bf..f77ca4ec49f82 100644 --- a/code/modules/pool/components/swimming_ethereal.dm +++ b/code/modules/pool/components/swimming_ethereal.dm @@ -7,5 +7,5 @@ var/mob/living/L = parent if(prob(2) && L.nutrition > NUTRITION_LEVEL_FED) L.adjust_nutrition(-50) - tesla_zap(L, 7, 2000, TESLA_MOB_STUN) + tesla_zap(L, 7, 2000, ZAP_MOB_STUN) playsound(L, 'sound/machines/defib_zap.ogg', 50, TRUE) diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index 00b3b9b4b4f12..40fbc9e13c7b8 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -43,9 +43,9 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne if(prob(20)) set_broken() -/obj/machinery/gravity_generator/tesla_act(power, tesla_flags) +/obj/machinery/gravity_generator/zap_act(power, zap_flags) ..() - if(tesla_flags & TESLA_MACHINE_EXPLOSIVE) + if(zap_flags & ZAP_MACHINE_EXPLOSIVE) qdel(src)//like the singulo, tesla deletes it. stops it from exploding over and over /obj/machinery/gravity_generator/update_icon() diff --git a/code/modules/power/lighting/light.dm b/code/modules/power/lighting/light.dm index d761ec5a1d4e3..6c24e37070789 100644 --- a/code/modules/power/lighting/light.dm +++ b/code/modules/power/lighting/light.dm @@ -160,7 +160,7 @@ if(on && turning_on) return - + var/area/local_area = get_area(src) if(emergency_mode || (local_area?.fire)) . += mutable_appearance(overlayicon, "[base_state]_emergency") @@ -612,8 +612,8 @@ on = TRUE update() -/obj/machinery/light/tesla_act(power, tesla_flags) - if(tesla_flags & TESLA_MACHINE_EXPLOSIVE) +/obj/machinery/light/zap_act(power, zap_flags) + if(zap_flags & ZAP_MACHINE_EXPLOSIVE) //Fire can cause a lot of lag, just do a mini explosion. explosion(src,0,0,1, adminlog = 0) for(var/mob/living/L in range(3, src)) diff --git a/code/modules/power/rtg.dm b/code/modules/power/rtg.dm index 4f27887fd4bdb..8e389526b47be 100644 --- a/code/modules/power/rtg.dm +++ b/code/modules/power/rtg.dm @@ -91,6 +91,6 @@ /obj/machinery/power/rtg/abductor/fire_act(exposed_temperature, exposed_volume) overload() -/obj/machinery/power/rtg/abductor/tesla_act() +/obj/machinery/power/rtg/abductor/zap_act() ..() //extend the zap overload() diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index c16311a26ef7a..9dbd045d4ba9f 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -15,7 +15,6 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) appearance_flags = PIXEL_SCALE // no tile bound to allow distortion to render outside of direct view var/uid = 1 var/static/gl_uid = 1 - light_range = 4 // this thing bright as hell (to increase bloom) light_power = 5 light_color = "#ffe016" @@ -23,6 +22,8 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) flags_1 = PREVENT_CONTENTS_EXPLOSION_1 critical_machine = TRUE interacts_with_air = TRUE + ///Tracks the bolt color we are using + var/zap_icon = DEFAULT_ZAP_ICON_STATE var/gasefficency = 0.15 @@ -73,6 +74,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) var/matter_power = 0 var/last_rads = 0 + var/zap_cutoff = 1500 //The cutoff for a bolt jumping, grows with heat, lowers with higher mol count, //Temporary values so that we can optimize this //How much the bullets damage should be multiplied by when it is added to the internal variables @@ -114,12 +116,17 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) var/power_changes = TRUE ///Disables the sm's proccessing totally. var/processes = TRUE + ///Stores the time of when the last zap occurred + var/last_power_zap = 0 ///Timer id for the disengage_field proc timer var/disengage_field_timer = null ///Can the crystal trigger the station wide anomaly spawn? var/anomaly_event = TRUE + ///Hue shift of the zaps color based on the power of the crystal + var/hue_angle_shift = 0 + /// don't let these to be consumed by SM var/static/list/not_dustable @@ -421,6 +428,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) //Ok, get the air from the turf var/datum/gas_mixture/env = T.return_air() + var/env_pressure = env.return_pressure() var/datum/gas_mixture/removed if(produces_gas) @@ -501,6 +509,26 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) power = clamp((removed.return_temperature() * temp_factor / T0C) * gasmix_power_ratio + power, 0, SUPERMATTER_MAXIMUM_ENERGY) //Total laser power plus an overload emit_radiation() + + //Zaps around 2.5 seconds at 1500 MeV, limited to 0.5 from 4000 MeV and up + if(power && (last_power_zap + 4 SECONDS - (power * 0.001)) < world.time) + playsound(src, 'sound/weapons/emitter2.ogg', 70, TRUE) + var/power_multiplier = max(0, (1 + (power_transmission_bonus / (10 - (bzcomp * BZ_RADIOACTIVITY_MODIFIER)))))// RadModBZ(500%) + var/pressure_multiplier = max((1 / ((env_pressure ** 1.5) + 5.5) * 0.01) + 0.8, 1) + var/co2_power_increase = max(co2comp * 2, 1) + hue_angle_shift = clamp(903 * log(10, (power + 8000)) - 3590, -50, 240) + var/zap_color = color_matrix_rotate_hue(hue_angle_shift) + supermatter_zap( + zapstart = src, + range = 3, + zap_str = 2.5 * power * power_multiplier * pressure_multiplier * co2_power_increase, + zap_flags = ZAP_SUPERMATTER_FLAGS, + zap_cutoff = 300, + power_level = power, + color = zap_color + ) + last_power_zap = world.time + if(bzcomp >= 0.4 && prob(30 * bzcomp)) src.fire_nuclear_particle() // Start to emit radballs at a maximum of 30% chance per tick @@ -532,7 +560,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) continue var/D = sqrt(1 / max(1, get_dist(l, src))) l.hallucination += power * config_hallucination_power * D - l.hallucination = clamp(0, 200, l.hallucination) + l.hallucination = clamp(l.hallucination, 0, 200) // Checks if the status has changed, in order to update the displacement effect var/current_status = get_status() @@ -543,21 +571,66 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) //Transitions between one function and another, one we use for the fast inital startup, the other is used to prevent errors with fusion temperatures. //Use of the second function improves the power gain imparted by using co2 if(is_power_processing()) - power = max(power - min(((power/500)**3) * powerloss_inhibitor, power * 0.83 * powerloss_inhibitor),0) + power = max(power - min(((power/500)**3) * powerloss_inhibitor, power * 0.83 * powerloss_inhibitor),0) if(power > POWER_PENALTY_THRESHOLD || damage > damage_penalty_point) + var/range = 4 + zap_cutoff = 1500 + if(removed && removed.return_pressure() > 0 && removed.return_temperature() > 0) + //You may be able to freeze the zapstate of the engine with good planning, we'll see + zap_cutoff = clamp(3000 - (power * (removed.total_moles()) / 10) / removed.return_temperature(), 350, 3000)//If the core is cold, it's easier to jump, ditto if there are a lot of mols + //We should always be able to zap our way out of the default enclosure + //See supermatter_zap() for more details + range = clamp(power / removed.return_pressure() * 10, 2, 7) + var/flags = ZAP_SUPERMATTER_FLAGS + var/zap_count = 0 + //Deal with power zaps + switch(power) + if(POWER_PENALTY_THRESHOLD to SEVERE_POWER_PENALTY_THRESHOLD) + zap_icon = DEFAULT_ZAP_ICON_STATE + zap_count = 2 + if(SEVERE_POWER_PENALTY_THRESHOLD to CRITICAL_POWER_PENALTY_THRESHOLD) + zap_icon = SLIGHTLY_CHARGED_ZAP_ICON_STATE + //Uncaps the zap damage, it's maxed by the input power + //Objects take damage now + flags |= (ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE) + zap_count = 3 + if(CRITICAL_POWER_PENALTY_THRESHOLD to INFINITY) + zap_icon = OVER_9000_ZAP_ICON_STATE + //It'll stun more now, and damage will hit harder, gloves are no garentee. + //Machines go boom + flags |= (ZAP_MOB_STUN | ZAP_MACHINE_EXPLOSIVE | ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE) + zap_count = 4 + //Now we deal with damage shit + if (damage > damage_penalty_point && prob(20)) + zap_count += 1 + + if(zap_count >= 1) + playsound(src.loc, 'sound/weapons/emitter2.ogg', 100, TRUE, extrarange = 10) + for(var/i in 1 to zap_count) + supermatter_zap(src, range, clamp(power*2, 4000, 20000), list(), flags, zap_cutoff, power, zap_icon, color) + + + if(removed && removed.return_temperature()) + zap_cutoff = clamp(3000 - (power * (env.total_moles()) / 10) / env.return_temperature(), 350, 3000)//If the core is cold, it's easier to jump, ditto if there are a lot of mols + else + zap_cutoff = 1500 + + //We should always be able to zap our way out of the default enclosure + //See supermatter_zap() for more details + range = clamp(power / env.return_pressure() * 10, 2, 8) if(power > POWER_PENALTY_THRESHOLD) playsound(src.loc, 'sound/weapons/emitter2.ogg', 100, 1, extrarange = 10) - supermatter_zap(src, 5, min(power*2, 20000)) - supermatter_zap(src, 5, min(power*2, 20000)) + supermatter_zap(src, range, min(power*2, 20000)) + supermatter_zap(src, range, min(power*2, 20000)) if(power > SEVERE_POWER_PENALTY_THRESHOLD) - supermatter_zap(src, 5, min(power*2, 20000)) + supermatter_zap(src, range, min(power*2, 20000)) if(power > CRITICAL_POWER_PENALTY_THRESHOLD) - supermatter_zap(src, 5, min(power*2, 20000)) + supermatter_zap(src, range, min(power*2, 20000)) else if (damage > damage_penalty_point && prob(20)) playsound(src.loc, 'sound/weapons/emitter2.ogg', 100, 1, extrarange = 10) - supermatter_zap(src, 5, clamp(power*2, 4000, 20000)) + supermatter_zap(src, range, clamp(power*2, 4000, 20000)) if(prob(15) && power > POWER_PENALTY_THRESHOLD) supermatter_pull(src, power/750) @@ -921,73 +994,110 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) if(ANOMALY_VORTEX) new /obj/effect/anomaly/bhole(local_turf, 20, faked_reality_spawn) -/obj/machinery/power/supermatter_crystal/proc/supermatter_zap(atom/zapstart, range = 3, power) +/obj/machinery/power/supermatter_crystal/proc/supermatter_zap(atom/zapstart, range = 5, zap_str, zap_flags = ZAP_SUPERMATTER_FLAGS, list/targets_hit = list(), zap_cutoff = 1500, power_level = 0, zap_icon = DEFAULT_ZAP_ICON_STATE, color = null) . = zapstart.dir - if(power < 1000) + //If the strength of the zap decays past the cutoff, we stop + if(zap_str < zap_cutoff) return - var/target_atom - var/mob/living/target_mob - var/obj/machinery/target_machine - var/obj/structure/target_structure - var/list/arctargetsmob = list() - var/list/arctargetsmachine = list() - var/list/arctargetsstructure = list() - - if(prob(20)) //let's not hit all the engineers with every beam and/or segment of the arc - for(var/mob/living/Z in ohearers(range+2, zapstart)) - arctargetsmob += Z - if(arctargetsmob.len) - var/mob/living/H = pick(arctargetsmob) - var/atom/A = H - target_mob = H - target_atom = A - - else - for(var/obj/machinery/X in oview(range+2, zapstart)) - arctargetsmachine += X - if(arctargetsmachine.len) - var/obj/machinery/M = pick(arctargetsmachine) - var/atom/A = M - target_machine = M - target_atom = A - - else - for(var/obj/structure/Y in oview(range+2, zapstart)) - arctargetsstructure += Y - if(arctargetsstructure.len) - var/obj/structure/O = pick(arctargetsstructure) - var/atom/A = O - target_structure = O - target_atom = A - - if(target_atom) - zapstart.Beam(target_atom, icon_state="nzcrentrs_power", time=5) - var/zapdir = get_dir(zapstart, target_atom) + var/target + var/list/arctargets = list() + //Making a new copy so additons further down the recursion do not mess with other arcs + var/list/targets_copy = targets_hit.Copy() + //Lets put this ourself into the do not hit list, so we don't curve back to hit the same thing twice with one arc + targets_copy += zapstart + + for(var/obj/vehicle/ridden/bicycle/bike in oview(zapstart, range)) + if(!(bike in targets_copy) && !(bike.obj_flags & BEING_SHOCKED) && bike.can_buckle)//God's not on our side cause he hates idiots. + arctargets += bike + + if(!arctargets.len) + for(var/obj/machinery/power/tesla_coil/coil in oview(zapstart, range)) + if(!(coil in targets_copy) && coil.anchored && !(coil.obj_flags & BEING_SHOCKED) && !coil.panel_open && prob(70))//Diversity of death + arctargets += coil + + if(!arctargets.len) + for(var/obj/machinery/power/grounding_rod/rod in oview(zapstart, range)) + //2 rods are safer then one, intended to keep the bolts dangourus + //If the sm puts out 2 bolts every half second, then a rod gets ignored every 5 seconds or so. + if(rod.anchored && !rod.panel_open && prob(90)) + arctargets += rod + + if(!arctargets.len) + for(var/mob/living/Z in oview(zapstart, range)) + if(!(Z in targets_copy) && !(HAS_TRAIT(Z, TRAIT_SHOCKIMMUNE)) && !(Z.flags_1 & TESLA_IGNORE_1) && Z.stat != DEAD && prob(20))//let's not hit all the engineers with every beam and/or segment of the arc + arctargets += Z + + if(!arctargets.len) + for(var/obj/machinery/X in oview(zapstart, range)) + if(!(X in targets_copy) && !(X.obj_flags & BEING_SHOCKED) && prob(40)) + arctargets += X + + if(!arctargets.len) + for(var/obj/Y in oview(zapstart, range)) + if(!(Y in targets_copy) && !(Y.obj_flags & BEING_SHOCKED)) + arctargets += Y + + if(arctargets.len)//Pick from our pool + target = pick(arctargets) + + if(target)//If we found something + //Do the animation to zap to it from here + zapstart.Beam(target, icon_state=zap_icon, time = 0.5 SECONDS, beam_color = color) + var/zapdir = get_dir(zapstart, target) if(zapdir) . = zapdir - if(target_mob) - target_mob.electrocute_act(rand(5,10), "Supermatter Discharge Bolt", 1, SHOCK_NOSTUN) - if(prob(15)) - supermatter_zap(target_mob, 5, power / 2) - supermatter_zap(target_mob, 5, power / 2) - else - supermatter_zap(target_mob, 5, power / 1.5) - - else if(target_machine) - if(prob(15)) - supermatter_zap(target_machine, 5, power / 2) - supermatter_zap(target_machine, 5, power / 2) - else - supermatter_zap(target_machine, 5, power / 1.5) + //Going boom should be rareish + if(prob(80)) + zap_flags &= ~ZAP_MACHINE_EXPLOSIVE + if(istype(target, /obj/machinery/power/tesla_coil)) + var/obj/machinery/power/tesla_coil/coil = target + //In the best situation we can expect this to grow up to 2120kw before a delam/IT'S GONE TOO FAR FRED SHUT IT DOWN + //The formula for power gen is zap_str * zap_mod / 2 * capacitor rating, between 1 and 4 + var/multi = 10 + switch(power)//Between 7k and 9k it's 20, above that it's 40 + if(SEVERE_POWER_PENALTY_THRESHOLD to CRITICAL_POWER_PENALTY_THRESHOLD) + multi = 20 + if(CRITICAL_POWER_PENALTY_THRESHOLD to INFINITY) + multi = 40 + coil.zap_act(zap_str * multi, zap_flags, list()) + zap_str /= 3 //Coils should take a lot out of the power of the zap + + else if(istype(target, /obj/machinery/power/grounding_rod)) + var/obj/machinery/power/grounding_rod/rod = target + //We can expect this to do very little, maybe shock the poor soul buckled to it, but that's all. + //This is one of our endpoints, if the bolt hits a grounding rod, it stops jumping + //3 shots a human with no resistance. 2 to crit, one to death. This is at at least 10000 power. + //There's no increase after that because the input power is effectivly capped at 10k + //Does 1.5 damage at the least + rod.zap_act(zap_str, ZAP_SUPERMATTER_FLAGS, list()) + return - else if(target_structure) - if(prob(15)) - supermatter_zap(target_structure, 5, power / 2) - supermatter_zap(target_structure, 5, power / 2) + else if(isliving(target))//If we got a fleshbag on our hands + var/mob/living/mob = target + mob.set_shocked() + addtimer(CALLBACK(mob, /mob/living/proc/reset_shocked), 10) + mob.electrocute_act(rand(5,10), "Supermatter Discharge Bolt", 1, SHOCK_NOSTUN) + zap_str /= 1.5 //Meatsacks are conductive, makes working in pairs more destructive + + else if(isobj(target)) + var/obj/junk = target + junk.zap_act(zap_str, ZAP_SUPERMATTER_FLAGS, list()) + zap_str /= 1.8 // worse then living things, better then coils + + //Then we finish it all up + //This gotdamn variable is a boomer and keeps giving me problems + var/turf/T = get_turf(target) + var/pressure = T.return_air().return_pressure() + //We get our range with the strength of the zap and the pressure, the lower the former and the higher the latter the better + var/new_range = clamp(zap_str / pressure * 10, 2, 7) + if(prob(5)) + zap_str -= (zap_str/10) + supermatter_zap(target, new_range, zap_str, targets_copy) + supermatter_zap(target, new_range, zap_str, targets_copy) else - supermatter_zap(target_structure, 5, power / 1.5) + supermatter_zap(target, new_range, zap_str, targets_copy) /obj/machinery/power/supermatter_crystal/proc/is_power_processing() if(!power_changes) //Still toggled off from a failed atmos tick at some point diff --git a/code/modules/power/tesla/coil.dm b/code/modules/power/tesla/coil.dm index 7e664295ca013..83b44c51b9e2a 100644 --- a/code/modules/power/tesla/coil.dm +++ b/code/modules/power/tesla/coil.dm @@ -13,21 +13,27 @@ circuit = /obj/item/circuitboard/machine/tesla_coil - var/tesla_flags = TESLA_MOB_DAMAGE | TESLA_OBJ_DAMAGE + var/zap_flags = ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE | ZAP_LOW_POWER_GEN ///Flags of the zap that the coil releases when the wire is pulsed var/power_loss = 2 - var/input_power_multiplier = 1 - var/zap_cooldown = 100 - var/last_zap = 0 + var/input_power_multiplier = 1 ///Multiplier for power conversion + var/zap_cooldown = 100 ///Cooldown between pulsed zaps + var/last_zap = 0 ///Reference to the last zap done + var/stored_energy = 0 ///Amount of power stored inside the coil to be released in the powernet var/datum/techweb/linked_techweb /obj/machinery/power/tesla_coil/power circuit = /obj/item/circuitboard/machine/tesla_coil/power +/obj/machinery/power/tesla_coil/power/anchored + anchored = TRUE + /obj/machinery/power/tesla_coil/Initialize(mapload) . = ..() wires = new /datum/wires/tesla_coil(src) linked_techweb = SSresearch.science_tech + if(anchored) + connect_to_network() /obj/machinery/power/tesla_coil/Destroy() QDEL_NULL(wires) @@ -80,25 +86,26 @@ return ..() -/obj/machinery/power/tesla_coil/tesla_act(power, tesla_flags, shocked_targets) - if(anchored && !panel_open) - obj_flags |= BEING_SHOCKED - //don't lose arc power when it's not connected to anything - //please place tesla coils all around the station to maximize effectiveness - var/power_produced = powernet ? power / power_loss : power - add_avail(power_produced*input_power_multiplier) - flick("coilhit", src) - playsound(src.loc, 'sound/magic/lightningshock.ogg', 100, 1, extrarange = 5) - tesla_zap(src, 5, power_produced, tesla_flags, shocked_targets) - var/datum/bank_account/D = SSeconomy.get_budget_account(ACCOUNT_ENG_ID) - if(D) - D.adjust_money(min(power_produced, 1)) - if(istype(linked_techweb)) - linked_techweb.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, min(power_produced, 1)) // x4 coils = ~240/m point bonus for R&D - addtimer(CALLBACK(src, PROC_REF(reset_shocked)), 10) - tesla_buckle_check(power) - else - ..() +/obj/machinery/power/tesla_coil/process(delta_time) + var/power_produced = min(stored_energy, (stored_energy * 0.04) + 1000) * delta_time + add_avail(power_produced) + stored_energy -= power_produced + +/obj/machinery/power/tesla_coil/zap_act(power, zap_flags, shocked_targets) + if(!anchored || panel_open) + return ..() + obj_flags |= BEING_SHOCKED + addtimer(CALLBACK(src, .proc/reset_shocked), 1 SECONDS) + flick("coilhit", src) + playsound(src.loc, 'sound/magic/lightningshock.ogg', 100, TRUE, extrarange = 5) + if(!(zap_flags & ZAP_GENERATES_POWER)) //Prevent infinite recursive power + return 0 + if(zap_flags & ZAP_LOW_POWER_GEN) + power /= 10 + zap_buckle_check(power) + var/power_removed = powernet ? power * input_power_multiplier : power + stored_energy += max((power_removed - 80) * 200, 0) + return max(power - power_removed, 0) //You get back the amount we didn't use /obj/machinery/power/tesla_coil/proc/zap() if((last_zap + zap_cooldown) > world.time || !powernet) @@ -109,8 +116,8 @@ var/power = (powernet.avail/2) add_load(power) playsound(src.loc, 'sound/magic/lightningshock.ogg', 100, 1, extrarange = 5) - tesla_zap(src, 10, power/(coeff/2), tesla_flags) - tesla_buckle_check(power/(coeff/2)) + tesla_zap(src, 10, power/(coeff/2), zap_flags) + zap_buckle_check(power/(coeff/2)) // Tesla R&D researcher /obj/machinery/power/tesla_coil/research @@ -120,14 +127,14 @@ circuit = /obj/item/circuitboard/machine/tesla_coil/research power_loss = 20 // something something, high voltage + resistance -/obj/machinery/power/tesla_coil/research/tesla_act(power, tesla_flags, shocked_things) +/obj/machinery/power/tesla_coil/research/zap_act(power, zap_flags, shocked_things) if(anchored && !panel_open) obj_flags |= BEING_SHOCKED var/power_produced = powernet ? power / power_loss : power add_avail(power_produced*input_power_multiplier) flick("rpcoilhit", src) playsound(src.loc, 'sound/magic/lightningshock.ogg', 100, 1, extrarange = 5) - tesla_zap(src, 5, power_produced, tesla_flags, shocked_things) + tesla_zap(src, 5, power_produced, zap_flags, shocked_things) var/datum/bank_account/D = SSeconomy.get_budget_account(ACCOUNT_ENG_ID)//x4 coils give ~ 768 credits per minute if(D) D.adjust_money(min(power_produced, 3)*2) @@ -135,7 +142,7 @@ linked_techweb.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, min(power_produced, 3)*2) linked_techweb.add_point_type(TECHWEB_POINT_TYPE_DISCOVERY, min(power_produced, 3)*2) // x4 coils with a pulse per second or so = ~744/m point bonus for R&D addtimer(CALLBACK(src, PROC_REF(reset_shocked)), 10) - tesla_buckle_check(power) + zap_buckle_check(power) else ..() @@ -168,6 +175,9 @@ buckle_lying = FALSE buckle_requires_restraints = TRUE +/obj/machinery/power/grounding_rod/anchored + anchored = TRUE + /obj/machinery/power/grounding_rod/default_unfasten_wrench(mob/user, obj/item/I, time = 20) . = ..() if(. == SUCCESSFUL_UNFASTEN) @@ -188,9 +198,9 @@ return ..() -/obj/machinery/power/grounding_rod/tesla_act(var/power) +/obj/machinery/power/grounding_rod/zap_act(var/power) if(anchored && !panel_open) flick("grounding_rodhit", src) - tesla_buckle_check(power) + zap_buckle_check(power) else ..() diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index 20afcbb876d32..b1b40466a8baa 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -59,10 +59,10 @@ CREATION_TEST_IGNORE_SUBTYPES(/obj/anomaly/energy_ball) //Main one can zap //Tesla only zaps if the tick usage isn't over the limit. if(!TICK_CHECK) - tesla_zap(src, 7, TESLA_DEFAULT_POWER, TESLA_ENERGY_PRIMARY_BALL_FLAGS) + tesla_zap(src, 7, TESLA_DEFAULT_POWER, ZAP_ENERGY_PRIMARY_BALL_FLAGS) else //Weaker, less intensive zap - tesla_zap(src, 4, TESLA_DEFAULT_POWER, TESLA_ENERGY_MINI_BALL_FLAGS) + tesla_zap(src, 4, TESLA_DEFAULT_POWER, ZAP_ENERGY_MINI_BALL_FLAGS) pixel_x = -32 pixel_y = -32 return @@ -74,7 +74,7 @@ CREATION_TEST_IGNORE_SUBTYPES(/obj/anomaly/energy_ball) return var/range = rand(1, clamp(orbiting_balls.len, 3, 7)) //Miniballs don't explode. - tesla_zap(ball, range, TESLA_MINI_POWER/7*range, TESLA_ENERGY_MINI_BALL_FLAGS) + tesla_zap(ball, range, TESLA_MINI_POWER/7*range, ZAP_ENERGY_MINI_BALL_FLAGS) /obj/anomaly/energy_ball/examine(mob/user) . = ..() @@ -203,7 +203,9 @@ CREATION_TEST_IGNORE_SUBTYPES(/obj/anomaly/energy_ball) if(!QDELETED(src)) qdel(src) -/proc/tesla_zap(atom/source, zap_range = 3, power, tesla_flags = TESLA_DEFAULT_FLAGS, list/shocked_targets) +/proc/tesla_zap(atom/source, zap_range = 3, power, zap_flags = ZAP_DEFAULT_FLAGS, list/shocked_targets = list()) + if(QDELETED(source)) + return . = source.dir if(power < 1000) return @@ -232,12 +234,12 @@ CREATION_TEST_IGNORE_SUBTYPES(/obj/anomaly/energy_ball) /obj/machinery/gateway, /obj/structure/lattice, /obj/structure/grille, - /obj/machinery/the_singularitygen/tesla, - /obj/structure/frame/machine)) + /obj/structure/frame/machine, + /obj/vehicle/ridden)) for(var/atom/A as() in oview(zap_range+2, source)) //typecache_filter_multi_list_exclusion has been inlined to minimize lag. - if(!things_to_shock[A.type] || blacklisted_tesla_types[A.type] || (!(tesla_flags & TESLA_ALLOW_DUPLICATES) && LAZYACCESS(shocked_targets, A))) + if(!things_to_shock[A.type] || blacklisted_tesla_types[A.type] || (!(zap_flags & ZAP_ALLOW_DUPLICATES) && LAZYACCESS(shocked_targets, A))) continue if(istype(A, /obj/machinery/power/tesla_coil)) var/obj/o = A @@ -301,7 +303,7 @@ CREATION_TEST_IGNORE_SUBTYPES(/obj/anomaly/energy_ball) if(closest_atom) //common stuff source.Beam(closest_atom, icon_state="lightning[rand(1,12)]", time = 5) - if(!(tesla_flags & TESLA_ALLOW_DUPLICATES)) + if(!(zap_flags & ZAP_ALLOW_DUPLICATES)) LAZYSET(shocked_targets, closest_atom, TRUE) var/zapdir = get_dir(source, closest_atom) if(zapdir) @@ -310,17 +312,17 @@ CREATION_TEST_IGNORE_SUBTYPES(/obj/anomaly/energy_ball) //per type stuff: if(priority == 3) var/mob/living/m = closest_atom - var/shock_damage = (tesla_flags & TESLA_MOB_DAMAGE)? (min(round(power/600), 90) + rand(-5, 5)) : 0 - m.electrocute_act(shock_damage, source, 1, SHOCK_TESLA | ((tesla_flags & TESLA_MOB_STUN) ? NONE : SHOCK_NOSTUN)) + var/shock_damage = (zap_flags & ZAP_MOB_DAMAGE)? (min(round(power/600), 90) + rand(-5, 5)) : 0 + m.electrocute_act(shock_damage, source, 1, SHOCK_TESLA | ((zap_flags & ZAP_MOB_STUN) ? NONE : SHOCK_NOSTUN)) if(issilicon(m)) - if((tesla_flags & TESLA_MOB_STUN) && (tesla_flags & TESLA_MOB_DAMAGE)) + if((zap_flags & ZAP_MOB_STUN) && (zap_flags & ZAP_MOB_DAMAGE)) m.emp_act(EMP_LIGHT) - tesla_zap(m, 7, power / 1.5, tesla_flags, shocked_targets) // metallic folks bounce it further + tesla_zap(m, 7, power / 1.5, zap_flags, shocked_targets) // metallic folks bounce it further else - tesla_zap(m, 5, power / 1.5, tesla_flags, shocked_targets) + tesla_zap(m, 5, power / 1.5, zap_flags, shocked_targets) else var/obj/o = closest_atom - o.tesla_act(power, tesla_flags, shocked_targets) + o.zap_act(power, , shocked_targets) #undef TESLA_MAX_BALLS #undef TESLA_DEFAULT_POWER diff --git a/code/modules/power/tesla/generator.dm b/code/modules/power/tesla/generator.dm index 45fa1c57d7244..1ec3bdb74d2af 100644 --- a/code/modules/power/tesla/generator.dm +++ b/code/modules/power/tesla/generator.dm @@ -5,6 +5,6 @@ icon_state = "TheSingGen" creation_type = /obj/anomaly/energy_ball -/obj/machinery/the_singularitygen/tesla/tesla_act(power, tesla_flags) - if(tesla_flags & TESLA_MACHINE_EXPLOSIVE) +/obj/machinery/the_singularitygen/tesla/zap_act(power, zap_flags) + if(zap_flags & ZAP_MACHINE_EXPLOSIVE) energy += power diff --git a/code/modules/projectiles/projectile/energy/tesla.dm b/code/modules/projectiles/projectile/energy/tesla.dm index 4bf110af99639..5222b04ddbffc 100644 --- a/code/modules/projectiles/projectile/energy/tesla.dm +++ b/code/modules/projectiles/projectile/energy/tesla.dm @@ -3,7 +3,7 @@ icon_state = "tesla_projectile" impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser var/chain - var/tesla_flags = TESLA_MOB_DAMAGE | TESLA_OBJ_DAMAGE + var/zap_flags = ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE | ZAP_LOW_POWER_GEN var/zap_range = 3 var/power = 10000 @@ -14,7 +14,7 @@ /obj/projectile/energy/tesla/on_hit(atom/target) . = ..() - tesla_zap(target, zap_range, power, tesla_flags) + tesla_zap(target, zap_range, power, zap_flags) qdel(src) /obj/projectile/energy/tesla/Destroy() diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 1556116350ace..3c92b23117198 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -634,16 +634,16 @@ nodamage = FALSE speed = 0.3 - var/tesla_power = 20000 - var/tesla_range = 15 - var/tesla_flags = TESLA_MOB_DAMAGE | TESLA_MOB_STUN | TESLA_OBJ_DAMAGE + var/zap_power = 20000 + var/zap_range = 15 + var/zap_flags = ZAP_MOB_DAMAGE | ZAP_MOB_STUN | ZAP_OBJ_DAMAGE | ZAP_LOW_POWER_GEN var/chain var/mob/living/caster /obj/projectile/magic/aoe/lightning/New(loc, spell_level) . = ..() - tesla_power += 5000 * spell_level - tesla_range += 2 * spell_level + zap_power += 5000 * spell_level + zap_range += 2 * spell_level /obj/projectile/magic/aoe/lightning/fire(setAngle) if(caster) @@ -658,7 +658,7 @@ visible_message("[src] fizzles on contact with [target]!") qdel(src) return BULLET_ACT_BLOCK - tesla_zap(src, tesla_range, tesla_power, tesla_flags) + tesla_zap(src, zap_range, zap_power, zap_flags) qdel(src) /obj/projectile/magic/aoe/lightning/Destroy() diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index 77afff5240b00..9d36208174b85 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -448,7 +448,7 @@ modifier = -100 mix_message = "The teslium starts to spark as electricity arcs away from it!" mix_sound = 'sound/machines/defib_zap.ogg' - var/tesla_flags = TESLA_MOB_DAMAGE | TESLA_OBJ_DAMAGE | TESLA_MOB_STUN + var/zap_flags = ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE | ZAP_MOB_STUN | ZAP_LOW_POWER_GEN /datum/chemical_reaction/reagent_explosion/teslium_lightning/on_reaction(datum/reagents/holder, created_volume) var/T1 = created_volume * 20 //100 units : Zap 3 times, with powers 2000/5000/12000. Tesla revolvers have a power of 10000 for comparison. @@ -468,7 +468,7 @@ /datum/chemical_reaction/reagent_explosion/teslium_lightning/proc/zappy_zappy(datum/reagents/holder, power) if(QDELETED(holder.my_atom)) return - tesla_zap(holder.my_atom, 7, power, tesla_flags) + tesla_zap(holder.my_atom, 7, power, zap_flags) playsound(holder.my_atom, 'sound/machines/defib_zap.ogg', 50, TRUE) /datum/chemical_reaction/reagent_explosion/teslium_lightning/heat diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 0221fce1e147f..8d47aa4e87d39 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -189,7 +189,7 @@ /obj/structure/reagent_dispensers/fueltank/fire_act(exposed_temperature, exposed_volume) boom() -/obj/structure/reagent_dispensers/fueltank/tesla_act() +/obj/structure/reagent_dispensers/fueltank/zap_act() ..() //extend the zap boom() diff --git a/code/modules/security/genpop.dm b/code/modules/security/genpop.dm index f3f69cceb74a2..8f611342d0c7c 100644 --- a/code/modules/security/genpop.dm +++ b/code/modules/security/genpop.dm @@ -244,7 +244,7 @@ var/obj/O = AM if(O.throwforce != 0)//don't want to let people spam tesla bolts, this way it will break after time playsound(src, 'sound/magic/lightningshock.ogg', 100, 1, extrarange = 5) - tesla_zap(src, 3, 8000, TESLA_MOB_DAMAGE | TESLA_OBJ_DAMAGE | TESLA_MOB_STUN | TESLA_ALLOW_DUPLICATES) // Around 20 damage for humans + tesla_zap(src, 3, 8000, ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE | ZAP_MOB_STUN | ZAP_ALLOW_DUPLICATES) // Around 20 damage for humans return ..() /obj/machinery/turnstile/welder_act(mob/living/user, obj/item/I) diff --git a/code/modules/spells/spell_types/aimed.dm b/code/modules/spells/spell_types/aimed.dm index f54839860ac9a..055dab9f18c99 100644 --- a/code/modules/spells/spell_types/aimed.dm +++ b/code/modules/spells/spell_types/aimed.dm @@ -103,7 +103,7 @@ action_icon_state = "lightning0" sound = 'sound/magic/lightningbolt.ogg' active = FALSE - projectile_var_overrides = list("tesla_range" = 15, "tesla_power" = 20000, "tesla_flags" = TESLA_MOB_DAMAGE) + projectile_var_overrides = list("zap_range" = 15, "zap_power" = 20000, "zap_flags" = ZAP_MOB_DAMAGE) active_msg = "You energize your hand with arcane lightning!" deactive_msg = "You let the energy flow out of your hands back into yourself..." projectile_type = /obj/projectile/magic/aoe/lightning diff --git a/code/modules/vehicles/bicycle.dm b/code/modules/vehicles/bicycle.dm index 32f7e7a52004e..930f0015782a4 100644 --- a/code/modules/vehicles/bicycle.dm +++ b/code/modules/vehicles/bicycle.dm @@ -11,7 +11,7 @@ D.vehicle_move_delay = 0 -/obj/vehicle/ridden/bicycle/tesla_act() // :::^^^))) +/obj/vehicle/ridden/bicycle/zap_act() // :::^^^))) name = "fried bicycle" desc = "Well spent." color = rgb(63, 23, 4) diff --git a/code/modules/vehicles/ridden.dm b/code/modules/vehicles/ridden.dm index ce22644b19de0..a6ad1ee8f479a 100644 --- a/code/modules/vehicles/ridden.dm +++ b/code/modules/vehicles/ridden.dm @@ -101,3 +101,7 @@ for(var/mob/M in occupants) unbuckle_mob(M) // Even though unbuckle_all_mobs exists we may as well only iterate once M.onZImpact(newloc, levels) + +/obj/vehicle/ridden/zap_act(zap_str, zap_flags, shocked_targets) + zap_buckle_check(zap_str) + . = ..() From 5a3efd416069170cc7fb354c4aa4cad92a568ebe Mon Sep 17 00:00:00 2001 From: XeonMations Date: Fri, 13 Sep 2024 18:57:01 +0300 Subject: [PATCH 23/42] rahhh --- _maps/map_files/Deltastation/DeltaStation2.dmm | 4 ++-- code/modules/power/tesla/coil.dm | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index c7ebd1416db8b..b9011bb910458 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -26820,7 +26820,7 @@ name = "Replica CentCom officer's jumpsuit" }, /obj/item/clothing/head/hats/centcom_cap{ - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "stamina" = 0); + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "stamina" = 0); desc = "A replica hat of a Central Commander's attire. It has a small tag on it saying, 'It's good to be emperor.'"; name = "Replica CentCom hat" }, @@ -68987,7 +68987,7 @@ /obj/item/folder/red, /obj/item/toy/gun, /obj/item/clothing/head/beret/sec{ - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "stamina" = 0); + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "stamina" = 0); desc = "A replica beret resembling that of a special operations officer under Nanotrasen."; name = "replica officer's beret" }, diff --git a/code/modules/power/tesla/coil.dm b/code/modules/power/tesla/coil.dm index 83b44c51b9e2a..c38a50c147363 100644 --- a/code/modules/power/tesla/coil.dm +++ b/code/modules/power/tesla/coil.dm @@ -95,7 +95,7 @@ if(!anchored || panel_open) return ..() obj_flags |= BEING_SHOCKED - addtimer(CALLBACK(src, .proc/reset_shocked), 1 SECONDS) + addtimer(CALLBACK(src, PROC_REF(reset_shocked)), 1 SECONDS) flick("coilhit", src) playsound(src.loc, 'sound/magic/lightningshock.ogg', 100, TRUE, extrarange = 5) if(!(zap_flags & ZAP_GENERATES_POWER)) //Prevent infinite recursive power From 6477e3d077f04c91fd9289ee77a90a944e776e89 Mon Sep 17 00:00:00 2001 From: XeonMations Date: Fri, 13 Sep 2024 19:01:12 +0300 Subject: [PATCH 24/42] CE hardsuit is also radproof --- code/modules/clothing/spacesuits/hardsuit.dm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index c08e61944aaa0..694933dc22073 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -289,6 +289,10 @@ heat_protection = HEAD max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT +/obj/item/clothing/head/helmet/space/hardsuit/engine/elite/ComponentInitialize() + . = ..() + AddComponent(/datum/element/radiation_protected_clothing) + /obj/item/clothing/suit/space/hardsuit/engine/elite icon_state = "hardsuit-white" name = "advanced hardsuit" @@ -301,6 +305,10 @@ jetpack = /obj/item/tank/jetpack/suit cell = /obj/item/stock_parts/cell/super +/obj/item/clothing/suit/space/hardsuit/engine/elite/ComponentInitialize() + . = ..() + AddComponent(/datum/element/radiation_protected_clothing) + //Mining hardsuit /obj/item/clothing/head/helmet/space/hardsuit/mining name = "mining hardsuit helmet" From 6a1f44b2c9b0bb4159b5bc7d4376282a71891392 Mon Sep 17 00:00:00 2001 From: XeonMations Date: Fri, 13 Sep 2024 19:25:22 +0300 Subject: [PATCH 25/42] hmmm --- code/datums/elements/forced_gravity.dm | 4 ++-- code/modules/power/supermatter/supermatter.dm | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/code/datums/elements/forced_gravity.dm b/code/datums/elements/forced_gravity.dm index 17f2651dc485c..09b0271d53ae8 100644 --- a/code/datums/elements/forced_gravity.dm +++ b/code/datums/elements/forced_gravity.dm @@ -12,9 +12,9 @@ src.gravity = gravity src.ignore_space = ignore_space - RegisterSignal(target, COMSIG_ATOM_HAS_GRAVITY, PROC_REF(gravity_check)) + RegisterSignal(target, COMSIG_ATOM_HAS_GRAVITY, PROC_REF(gravity_check), TRUE) if(isturf(target)) - RegisterSignal(target, COMSIG_TURF_HAS_GRAVITY, PROC_REF(turf_gravity_check)) + RegisterSignal(target, COMSIG_TURF_HAS_GRAVITY, PROC_REF(turf_gravity_check), TRUE) /datum/element/forced_gravity/Detach(datum/source, force) . = ..() diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 9dbd045d4ba9f..e4e3c0f0ff63a 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -1061,8 +1061,11 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) multi = 20 if(CRITICAL_POWER_PENALTY_THRESHOLD to INFINITY) multi = 40 - coil.zap_act(zap_str * multi, zap_flags, list()) - zap_str /= 3 //Coils should take a lot out of the power of the zap + if(zap_flags & ZAP_SUPERMATTER_FLAGS) + var/remaining_power = target.zap_act(zap_str * multi, zap_flags) + zap_str = remaining_power / multi //Coils should take a lot out of the power of the zap + else + zap_str /= 3 else if(istype(target, /obj/machinery/power/grounding_rod)) var/obj/machinery/power/grounding_rod/rod = target From df387fb8a58ea7c7b5f0c72d5efb6aadfe41744f Mon Sep 17 00:00:00 2001 From: XeonMations Date: Fri, 13 Sep 2024 20:46:31 +0300 Subject: [PATCH 26/42] no more radiation monitoring for you --- code/modules/cargo/packs.dm | 12 -------- code/modules/power/supermatter/supermatter.dm | 27 +++++++++-------- .../supermatter/supermatter_delamination.dm | 2 +- .../supermatter/supermatter_radiation.dm | 2 +- .../tgui/interfaces/SupermatterMonitor.js | 30 ++----------------- 5 files changed, 18 insertions(+), 55 deletions(-) diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 7b9e02812e922..2083632381011 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -1326,18 +1326,6 @@ crate_type = /obj/structure/closet/crate/secure/engineering dangerous = TRUE -/datum/supply_pack/engine/sing_gen - name = "Singularity Generator Crate" - desc = "The key to unlocking the power of Lord Singuloth. Particle Accelerator not included." - cost = 4700 - max_supply = 3 - access = ACCESS_CE - access_budget = ACCESS_CE - contains = list(/obj/machinery/the_singularitygen) - crate_name = "singularity generator crate" - crate_type = /obj/structure/closet/crate/secure/engineering - dangerous = TRUE - /datum/supply_pack/engine/solar name = "Solar Panel Crate" desc = "Go green with this DIY advanced solar array. Contains twenty one solar assemblies, a solar-control circuit board, and tracker. If you have any questions, please check out the enclosed instruction book." diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index e4e3c0f0ff63a..33fc60cb00ac9 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -73,7 +73,6 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) var/matter_power = 0 - var/last_rads = 0 var/zap_cutoff = 1500 //The cutoff for a bolt jumping, grows with heat, lowers with higher mol count, //Temporary values so that we can optimize this @@ -221,7 +220,6 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) data["active"] = TRUE data["SM_integrity"] = get_integrity_percent() data["SM_power"] = power - data["SM_radiation"] = last_rads data["SM_ambienttemp"] = air.return_temperature() data["SM_ambientpressure"] = air.return_pressure() data["SM_bad_moles_amount"] = MOLE_PENALTY_THRESHOLD / gasefficency @@ -609,7 +607,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) if(zap_count >= 1) playsound(src.loc, 'sound/weapons/emitter2.ogg', 100, TRUE, extrarange = 10) for(var/i in 1 to zap_count) - supermatter_zap(src, range, clamp(power*2, 4000, 20000), list(), flags, zap_cutoff, power, zap_icon, color) + supermatter_zap(src, range, clamp(power*2, 4000, 20000), flags, list(), zap_cutoff, power, zap_icon, color) if(removed && removed.return_temperature()) @@ -622,15 +620,15 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) range = clamp(power / env.return_pressure() * 10, 2, 8) if(power > POWER_PENALTY_THRESHOLD) playsound(src.loc, 'sound/weapons/emitter2.ogg', 100, 1, extrarange = 10) - supermatter_zap(src, range, min(power*2, 20000)) - supermatter_zap(src, range, min(power*2, 20000)) + supermatter_zap(src, range, min(power*2, 20000), flags) + supermatter_zap(src, range, min(power*2, 20000), flags) if(power > SEVERE_POWER_PENALTY_THRESHOLD) - supermatter_zap(src, range, min(power*2, 20000)) + supermatter_zap(src, range, min(power*2, 20000), flags) if(power > CRITICAL_POWER_PENALTY_THRESHOLD) - supermatter_zap(src, range, min(power*2, 20000)) + supermatter_zap(src, range, min(power*2, 20000), flags) else if (damage > damage_penalty_point && prob(20)) playsound(src.loc, 'sound/weapons/emitter2.ogg', 100, 1, extrarange = 10) - supermatter_zap(src, range, clamp(power*2, 4000, 20000)) + supermatter_zap(src, range, clamp(power*2, 4000, 20000), flags) if(prob(15) && power > POWER_PENALTY_THRESHOLD) supermatter_pull(src, power/750) @@ -1000,7 +998,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) if(zap_str < zap_cutoff) return - var/target + var/atom/target var/list/arctargets = list() //Making a new copy so additons further down the recursion do not mess with other arcs var/list/targets_copy = targets_hit.Copy() @@ -1052,7 +1050,6 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) if(prob(80)) zap_flags &= ~ZAP_MACHINE_EXPLOSIVE if(istype(target, /obj/machinery/power/tesla_coil)) - var/obj/machinery/power/tesla_coil/coil = target //In the best situation we can expect this to grow up to 2120kw before a delam/IT'S GONE TOO FAR FRED SHUT IT DOWN //The formula for power gen is zap_str * zap_mod / 2 * capacitor rating, between 1 and 4 var/multi = 10 @@ -1092,15 +1089,19 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) //Then we finish it all up //This gotdamn variable is a boomer and keeps giving me problems var/turf/T = get_turf(target) + if(!T) + return var/pressure = T.return_air().return_pressure() + if(pressure == 0) //Fucking atmos code. + pressure = 1 //We get our range with the strength of the zap and the pressure, the lower the former and the higher the latter the better var/new_range = clamp(zap_str / pressure * 10, 2, 7) if(prob(5)) zap_str -= (zap_str/10) - supermatter_zap(target, new_range, zap_str, targets_copy) - supermatter_zap(target, new_range, zap_str, targets_copy) + supermatter_zap(target, new_range, zap_str, zap_flags, targets_copy) + supermatter_zap(target, new_range, zap_str, zap_flags, targets_copy) else - supermatter_zap(target, new_range, zap_str, targets_copy) + supermatter_zap(target, new_range, zap_str, zap_flags, targets_copy) /obj/machinery/power/supermatter_crystal/proc/is_power_processing() if(!power_changes) //Still toggled off from a failed atmos tick at some point diff --git a/code/modules/power/supermatter/supermatter_delamination.dm b/code/modules/power/supermatter/supermatter_delamination.dm index 463859d379c43..0900656b8feeb 100644 --- a/code/modules/power/supermatter/supermatter_delamination.dm +++ b/code/modules/power/supermatter/supermatter_delamination.dm @@ -69,7 +69,7 @@ /datum/supermatter_delamination/proc/call_singulo() var/obj/anomaly/singularity/created_singularity = new(supermatter_turf) created_singularity.energy = 800 - created_singularity.consume(src) + created_singularity.consume(supermatter_turf) should_spawn_anomalies = FALSE message_admins("The Supermatter Crystal has created a singularity [ADMIN_JMP(created_singularity)].") diff --git a/code/modules/power/supermatter/supermatter_radiation.dm b/code/modules/power/supermatter/supermatter_radiation.dm index 546ec13f8f919..88cf46c1c9fe0 100644 --- a/code/modules/power/supermatter/supermatter_radiation.dm +++ b/code/modules/power/supermatter/supermatter_radiation.dm @@ -22,7 +22,7 @@ // A standard N2 SM seems to produce a value of around 1,500. var/power_factor = min(power, MAX_ACCEPTED_POWER_OUTPUT) - var/integrity = 1 - CLAMP01(damage / explosion_point) + var/integrity = 1.01 - CLAMP01(damage / explosion_point) // When integrity goes down, the threshold (from an observable point of view, rads) go up. // However, the power factor must go up as well, otherwise turning off the emitters diff --git a/tgui/packages/tgui/interfaces/SupermatterMonitor.js b/tgui/packages/tgui/interfaces/SupermatterMonitor.js index 193199d43ccee..13f84be04f18a 100644 --- a/tgui/packages/tgui/interfaces/SupermatterMonitor.js +++ b/tgui/packages/tgui/interfaces/SupermatterMonitor.js @@ -20,17 +20,8 @@ export const SupermatterMonitor = () => { export const SupermatterMonitorContent = (props, context) => { const { act, data } = useBackend(context); - const { - active, - standalone_mode, - SM_integrity, - SM_power, - SM_ambienttemp, - SM_ambientpressure, - SM_radiation, - SM_moles, - SM_bad_moles_amount, - } = data; + const { active, standalone_mode, SM_integrity, SM_power, SM_ambienttemp, SM_ambientpressure, SM_moles, SM_bad_moles_amount } = + data; if (!active) { return ; } @@ -64,23 +55,6 @@ export const SupermatterMonitorContent = (props, context) => { {toFixed(SM_power) + ' MeV/cm3'} - - - {toFixed(SM_radiation) + ' Sv/h'} - - Date: Fri, 13 Sep 2024 21:33:13 +0300 Subject: [PATCH 27/42] more radproof things --- code/modules/clothing/spacesuits/hardsuit.dm | 8 ++++++++ code/modules/clothing/spacesuits/miscellaneous.dm | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 694933dc22073..3242a592ebb25 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -586,6 +586,10 @@ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | ACID_PROOF +/obj/item/clothing/head/helmet/space/hardsuit/syndi/elite/ComponentInitialize() + . = ..() + AddComponent(/datum/element/radiation_protected_clothing) + /obj/item/clothing/suit/space/hardsuit/syndi/elite name = "elite syndicate hardsuit" desc = "An elite version of the syndicate hardsuit, with improved armour and fireproofing. It is in travel mode." @@ -599,6 +603,10 @@ resistance_flags = FIRE_PROOF | ACID_PROOF cell = /obj/item/stock_parts/cell/bluespace +/obj/item/clothing/head/helmet/space/hardsuit/syndi/elite/ComponentInitialize() + . = ..() + AddComponent(/datum/element/radiation_protected_clothing) + //The Owl Hardsuit /obj/item/clothing/head/helmet/space/hardsuit/syndi/owl name = "owl hardsuit helmet" diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index f8760da7e8ab7..905399a5a35ac 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -237,6 +237,10 @@ Contains: beacon_colour = "#ecaa48" beacon_zdiff_colour = "#daa960" +/obj/item/clothing/head/helmet/space/hardsuit/ert/engi/ComponentInitialize() + . = ..() + AddComponent(/datum/element/radiation_protected_clothing) + /obj/item/clothing/suit/space/hardsuit/ert/engi name = "emergency response team engineering hardsuit" desc = "The standard issue hardsuit of the ERT, this one has orange highlights. Offers superb protection against environmental hazards." @@ -245,6 +249,10 @@ Contains: helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/engi jetpack = /obj/item/tank/jetpack/suit +/obj/item/clothing/head/helmet/space/hardsuit/ert/engi/ComponentInitialize() + . = ..() + AddComponent(/datum/element/radiation_protected_clothing) + //ERT Medical /obj/item/clothing/head/helmet/space/hardsuit/ert/med name = "emergency response team medical helmet" From 65fe655d23e27b910011da24ce9960e719a19fc9 Mon Sep 17 00:00:00 2001 From: XeonMations Date: Sun, 15 Sep 2024 11:18:00 +0300 Subject: [PATCH 28/42] maps --- _maps/map_files/BoxStation/BoxStation.dmm | 8 +++--- _maps/map_files/CorgStation/CorgStation.dmm | 8 +++--- .../map_files/Deltastation/DeltaStation2.dmm | 8 +++--- _maps/map_files/EchoStation/EchoStation.dmm | 25 +++++-------------- _maps/map_files/FlandStation/FlandStation.dmm | 10 ++++---- _maps/map_files/KiloStation/KiloStation.dmm | 8 +++--- _maps/map_files/MetaStation/MetaStation.dmm | 8 +++--- _maps/map_files/RadStation/RadStation.dmm | 10 ++++---- 8 files changed, 36 insertions(+), 49 deletions(-) diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 3700017f6ff69..7a5ba97b4c396 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -14393,7 +14393,7 @@ /obj/structure/window/plasma/reinforced{ dir = 4 }, -/obj/machinery/power/tesla_coil/power, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/engine, /area/engine/supermatter) "cEw" = ( @@ -14418,7 +14418,7 @@ /obj/structure/window/plasma/reinforced{ dir = 8 }, -/obj/machinery/power/tesla_coil/power, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/engine, /area/engine/supermatter) "cEz" = ( @@ -14545,7 +14545,7 @@ /obj/structure/window/plasma/reinforced{ dir = 4 }, -/obj/machinery/power/tesla_coil/power, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/engine, /area/engine/supermatter) "cFh" = ( @@ -14558,7 +14558,7 @@ /obj/structure/window/plasma/reinforced{ dir = 8 }, -/obj/machinery/power/tesla_coil/power, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/engine, /area/engine/supermatter) "cFj" = ( diff --git a/_maps/map_files/CorgStation/CorgStation.dmm b/_maps/map_files/CorgStation/CorgStation.dmm index e75d47b3cb8e8..f76809d1dd203 100644 --- a/_maps/map_files/CorgStation/CorgStation.dmm +++ b/_maps/map_files/CorgStation/CorgStation.dmm @@ -2592,7 +2592,7 @@ dir = 6 }, /obj/structure/cable, -/obj/machinery/power/tesla_coil/power, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/circuit/green, /area/engine/supermatter) "aFu" = ( @@ -2852,7 +2852,7 @@ /obj/structure/cable{ icon_state = "0-2" }, -/obj/machinery/power/tesla_coil/power, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/circuit/green, /area/engine/supermatter) "aJa" = ( @@ -3251,7 +3251,7 @@ dir = 1 }, /obj/structure/cable, -/obj/machinery/power/tesla_coil/power, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/circuit/green, /area/engine/supermatter) "aOn" = ( @@ -3668,7 +3668,7 @@ /obj/structure/cable{ icon_state = "0-2" }, -/obj/machinery/power/tesla_coil/power, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/circuit/green, /area/engine/supermatter) "aSC" = ( diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index b9011bb910458..7c31d087da0e6 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -3551,7 +3551,7 @@ /obj/structure/window/plasma/reinforced{ dir = 4 }, -/obj/machinery/power/tesla_coil/power, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/circuit/green, /area/engine/supermatter) "axy" = ( @@ -3579,7 +3579,7 @@ /obj/structure/window/plasma/reinforced{ dir = 8 }, -/obj/machinery/power/tesla_coil/power, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/circuit/green, /area/engine/supermatter) "axC" = ( @@ -3854,7 +3854,7 @@ /obj/structure/window/plasma/reinforced{ dir = 4 }, -/obj/machinery/power/tesla_coil/power, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/circuit/green, /area/engine/supermatter) "ayK" = ( @@ -4119,7 +4119,7 @@ /obj/structure/window/plasma/reinforced{ dir = 8 }, -/obj/machinery/power/tesla_coil/power, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/circuit/green, /area/engine/supermatter) "azX" = ( diff --git a/_maps/map_files/EchoStation/EchoStation.dmm b/_maps/map_files/EchoStation/EchoStation.dmm index 11ad950a7e09d..5d5e09c53416f 100644 --- a/_maps/map_files/EchoStation/EchoStation.dmm +++ b/_maps/map_files/EchoStation/EchoStation.dmm @@ -4953,7 +4953,7 @@ /obj/structure/cable{ icon_state = "0-8" }, -/obj/machinery/power/rad_collector/anchored, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/plating, /area/engine/supermatter) "cea" = ( @@ -7667,10 +7667,10 @@ /obj/structure/cable{ icon_state = "0-4" }, -/obj/machinery/power/rad_collector/anchored, /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 9 }, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/plating, /area/engine/supermatter) "dDM" = ( @@ -17663,13 +17663,13 @@ /obj/structure/cable{ icon_state = "0-8" }, -/obj/machinery/power/rad_collector/anchored, /obj/structure/extinguisher_cabinet{ pixel_y = 32 }, /obj/machinery/atmospherics/pipe/manifold/green/visible{ dir = 8 }, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/plating, /area/engine/supermatter) "iya" = ( @@ -24651,10 +24651,10 @@ /obj/structure/cable{ icon_state = "0-8" }, -/obj/machinery/power/rad_collector/anchored, /obj/machinery/atmospherics/pipe/manifold/green/visible{ dir = 8 }, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/plating, /area/engine/supermatter) "mhI" = ( @@ -28929,7 +28929,7 @@ /obj/machinery/atmospherics/pipe/manifold/cyan/visible{ dir = 4 }, -/obj/machinery/power/rad_collector/anchored, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/plating, /area/engine/supermatter) "oxy" = ( @@ -35850,19 +35850,6 @@ "rSr" = ( /turf/open/floor/iron, /area/ai_monitored/turret_protected/aisat/maint) -"rSs" = ( -/obj/structure/window/plasma/reinforced{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/power/rad_collector/anchored, -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/supermatter) "rSE" = ( /obj/structure/closet/secure_closet/hydroponics{ req_access = null; @@ -64455,7 +64442,7 @@ xYh dXI dXI ocx -rSs +oxk oxk dDB xiB diff --git a/_maps/map_files/FlandStation/FlandStation.dmm b/_maps/map_files/FlandStation/FlandStation.dmm index d1ffea361b2ba..921e0949f95f8 100644 --- a/_maps/map_files/FlandStation/FlandStation.dmm +++ b/_maps/map_files/FlandStation/FlandStation.dmm @@ -52719,7 +52719,7 @@ /obj/effect/turf_decal/stripes/red/line, /obj/structure/cable, /obj/structure/window/plasma/reinforced, -/obj/machinery/power/tesla_coil/power, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/engine, /area/engine/supermatter) "nwg" = ( @@ -69201,7 +69201,7 @@ /obj/effect/turf_decal/stripes/red/line, /obj/structure/cable, /obj/structure/window/plasma/reinforced, -/obj/machinery/power/tesla_coil/power, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/engine, /area/engine/supermatter) "rOe" = ( @@ -78593,7 +78593,7 @@ /obj/structure/window/plasma/reinforced{ dir = 1 }, -/obj/machinery/power/tesla_coil/power, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/engine, /area/engine/supermatter) "uhJ" = ( @@ -82827,7 +82827,7 @@ /obj/structure/window/plasma/reinforced{ dir = 1 }, -/obj/machinery/power/tesla_coil/power, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/engine, /area/engine/supermatter) "vhn" = ( @@ -83616,7 +83616,7 @@ c_tag = "Supermatter Chamber"; network = list("engine") }, -/obj/machinery/power/tesla_coil/power, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/engine, /area/engine/supermatter) "vqq" = ( diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index fdfbe05ab1cf3..3ad4ce21acb00 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -21757,7 +21757,7 @@ /obj/structure/cable{ icon_state = "0-8" }, -/obj/machinery/power/tesla_coil/power, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/circuit/green{ luminosity = 2 }, @@ -21794,7 +21794,7 @@ /obj/structure/cable{ icon_state = "0-4" }, -/obj/machinery/power/tesla_coil/power, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/circuit/green{ luminosity = 2 }, @@ -24687,7 +24687,7 @@ /obj/structure/cable{ icon_state = "0-8" }, -/obj/machinery/power/tesla_coil/power, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/circuit/green{ luminosity = 2 }, @@ -24780,7 +24780,7 @@ /obj/structure/cable{ icon_state = "0-4" }, -/obj/machinery/power/tesla_coil/power, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/circuit/green{ luminosity = 2 }, diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index a58070ea3fdf2..50b554f1bb600 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -20719,7 +20719,7 @@ }, /obj/structure/cable, /obj/structure/window/plasma/reinforced, -/obj/machinery/power/tesla_coil/power, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/engine, /area/engine/supermatter) "dbb" = ( @@ -21101,7 +21101,7 @@ }, /obj/structure/cable, /obj/structure/window/plasma/reinforced, -/obj/machinery/power/tesla_coil/power, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/engine, /area/engine/supermatter) "deU" = ( @@ -21208,7 +21208,7 @@ /obj/structure/window/plasma/reinforced{ dir = 1 }, -/obj/machinery/power/tesla_coil/power, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/engine, /area/engine/supermatter) "dfm" = ( @@ -21221,7 +21221,7 @@ /obj/structure/window/plasma/reinforced{ dir = 1 }, -/obj/machinery/power/tesla_coil/power, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/engine, /area/engine/supermatter) "dfp" = ( diff --git a/_maps/map_files/RadStation/RadStation.dmm b/_maps/map_files/RadStation/RadStation.dmm index 00bc81c62179a..3cd584a2c9486 100644 --- a/_maps/map_files/RadStation/RadStation.dmm +++ b/_maps/map_files/RadStation/RadStation.dmm @@ -26453,7 +26453,7 @@ /obj/structure/window/plasma/reinforced{ dir = 8 }, -/obj/machinery/power/tesla_coil/power, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/iron/tech, /area/engine/supermatter) "iqd" = ( @@ -59493,7 +59493,7 @@ /obj/structure/window/plasma/reinforced{ dir = 8 }, -/obj/machinery/power/tesla_coil/power, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/plating, /area/engine/supermatter) "sQJ" = ( @@ -65338,7 +65338,7 @@ /obj/structure/window/plasma/reinforced{ dir = 4 }, -/obj/machinery/power/tesla_coil/power, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/plating, /area/engine/supermatter) "uFU" = ( @@ -71518,7 +71518,7 @@ /obj/structure/window/plasma/reinforced{ dir = 4 }, -/obj/machinery/power/tesla_coil/power, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/plating, /area/engine/supermatter) "wMI" = ( @@ -72644,7 +72644,7 @@ /obj/structure/window/plasma/reinforced{ dir = 8 }, -/obj/machinery/power/tesla_coil/power, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/plating, /area/engine/supermatter) "xhA" = ( From 1e53cd1c121abcec2262dd45119a8e59930944b8 Mon Sep 17 00:00:00 2001 From: XeonMations Date: Thu, 19 Sep 2024 15:55:46 +0300 Subject: [PATCH 29/42] Update EchoStation.dmm --- _maps/map_files/EchoStation/EchoStation.dmm | 25 +++++---------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/_maps/map_files/EchoStation/EchoStation.dmm b/_maps/map_files/EchoStation/EchoStation.dmm index e2a8e21292d48..3225fd484672d 100644 --- a/_maps/map_files/EchoStation/EchoStation.dmm +++ b/_maps/map_files/EchoStation/EchoStation.dmm @@ -3098,10 +3098,10 @@ /obj/structure/cable{ icon_state = "0-4" }, -/obj/machinery/power/rad_collector/anchored, /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 9 }, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/plating, /area/engine/supermatter) "blA" = ( @@ -4443,13 +4443,13 @@ /obj/structure/cable{ icon_state = "0-8" }, -/obj/machinery/power/rad_collector/anchored, /obj/structure/extinguisher_cabinet{ pixel_y = 32 }, /obj/machinery/atmospherics/pipe/manifold/green/visible{ dir = 8 }, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/plating, /area/engine/supermatter) "bVa" = ( @@ -4800,7 +4800,7 @@ /obj/structure/cable{ icon_state = "0-8" }, -/obj/machinery/power/rad_collector/anchored, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/plating, /area/engine/supermatter) "cea" = ( @@ -8557,7 +8557,7 @@ /obj/machinery/atmospherics/pipe/manifold/cyan/visible{ dir = 4 }, -/obj/machinery/power/rad_collector/anchored, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/plating, /area/engine/supermatter) "ebn" = ( @@ -27649,10 +27649,10 @@ /obj/structure/cable{ icon_state = "0-8" }, -/obj/machinery/power/rad_collector/anchored, /obj/machinery/atmospherics/pipe/manifold/green/visible{ dir = 8 }, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/plating, /area/engine/supermatter) "nFR" = ( @@ -27923,19 +27923,6 @@ /obj/structure/flora/rock, /turf/open/floor/plating/grass, /area/asteroid/paradise/surface) -"nKs" = ( -/obj/structure/window/plasma/reinforced{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/power/rad_collector/anchored, -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/supermatter) "nKB" = ( /obj/effect/turf_decal/sand/plating, /turf/open/floor/sepia/planetary{ @@ -64467,7 +64454,7 @@ sFj dXI dXI ocx -nKs +ebk ebk blt xiB From 55f7b2295556384999e6ae99269c19ed41d183dc Mon Sep 17 00:00:00 2001 From: XeonMations Date: Mon, 23 Sep 2024 16:23:11 +0300 Subject: [PATCH 30/42] finished merge --- code/__DEFINES/traits/declarations.dm | 1 + code/_globalvars/traits/_traits.dm | 2 +- icons/hud/screen_alert.dmi | Bin 131747 -> 132423 bytes 3 files changed, 2 insertions(+), 1 deletion(-) diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm index 3747171824bb1..f98070d62bb51 100644 --- a/code/__DEFINES/traits/declarations.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -69,6 +69,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_RESISTHIGHPRESSURE "resist_high_pressure" #define TRAIT_RESISTLOWPRESSURE "resist_low_pressure" #define TRAIT_NORADDAMAGE "no_rad_damage" +#define TRAIT_RADIMMUNE "rad_immunity" #define TRAIT_VIRUSIMMUNE "virus_immunity" #define TRAIT_PIERCEIMMUNE "pierce_immunity" #define TRAIT_NODISMEMBER "dismember_immunity" diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index ed851cf8f8c54..98ec4af48f8fa 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -174,7 +174,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_PSYCHIC_SENSE" = TRAIT_PSYCHIC_SENSE, "TRAIT_PLANTHEALING" = TRAIT_PLANTHEALING, "TRAIT_NORADDAMAGE" = TRAIT_NORADDAMAGE, - "TRAIT_MOBILE" = TRAIT_MOBILE + "TRAIT_MOBILE" = TRAIT_MOBILE, "TRAIT_RADIMMUNE" = TRAIT_RADIMMUNE, "TRAIT_IRRADIATED" = TRAIT_IRRADIATED, "TRAIT_HALT_RADIATION_EFFECTS" = TRAIT_HALT_RADIATION_EFFECTS, diff --git a/icons/hud/screen_alert.dmi b/icons/hud/screen_alert.dmi index f4a8c1314275a17f425c9ea5a24421e7bf62c216..02af60635b73c277afd5141c42fa23875af38ba2 100644 GIT binary patch delta 79069 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

ut`)beviJ2Lwe+v;g2GzVy+=NV4@?d zqpjT6pD+5Z(e7v1Y+{z?S40fQjG)=5q)oC1DWDsZyF+^Afr&((vnD7tbw`KY8iQw^ z-@I=4L4cUdHp9835X!Xd&q#?A?n^aklGfKca^lR#zc_gkHHiNY-)~J_xaO011+vZO zmbE2j)A$0s>u2ErX)Tny09mc87UQKKKD5HLIz_UDeR$Kzy*+h(ilXTZNh2H&Kg3rY z!N6aui)QX^EumT;g2hVK(d&G#ESS1+2PeP3t@Uljrlvqq<7KM^yb=%xF*Rpul@nE{ zmo31VXFR+qEN9EW!&2yB)#;hbI#vFhMWDKUC48jqJ=^xiQS=Ti7y9=Y2?}x($?_ql zH7KgM?kI3Z3Qco&PlT|M>l6xLXIDf6%A&FPCx(vC{jqB6_e)YOcKrVG8eTfqlq77m zCrKwj7KNiFL#-iOaE2=f)E73i<7`6A79Kk4FPqH|GbHyK*CbbO)c7CAwl9I5s^j%* zJ8l9)1$`Yhuh-`&-7rI`w6^u$dZCnM1ks_qZ%ztz{{sof^OB&VD3a6C0YdPWE(VKv zXtcj)QE-={I{x~pp+gWUT=I4G{J~4i5p;)p@%Jj%750GW*d{*h&=;k|TCSnP<;?Oc zH4q_-3itcFZk+s0k5&ayN_18p4rCp4T`vJMnQ!Hvc3NX*mRPm3aH@A-Oy!A5*@~f+KlcLp(KKa|)S$U4;4PRkO6MKpeE#+Obn;vaH zQ$r`u_KPakwHyx(+lnGyaj=i&Dg`wDtcWro-2K*^*%l_6sLE{lfjJ#e-ga&Myw|8; zkZ3THPs%%gMwM2nLQJDVC~v?rRdw<#Ap#{C;}`m2T(iej8Z5^VHndkVwzXZO-d3|=nz11dDzVRIuU1Jqg5@XIza$@bd~~%ozsjA3 znWSY(>U1(&P&_E7!dQS&(NbCVC0MtM&F8?UH2%WXdh#~H7fxs^DimgA5)vtZ0H*vp1p$$CUcqd^7|YVW`n5TCcx^g7wU4bbH{dLqv_y&-M-KiVeT`khWze#Uz z)A325P;GGB9kl+m+EITFlQD7~7Z~m&1k*N)vsBJc^3yyX2l4p5*NWAoJtSo#B2`)} zw;rE9d^fJ*s>rZSvpcWAFmrb{KTOj6&3K_oKNGCdVQ}b9)|IJVXr}58j6hvAfjHorG-twl zeV;X%>aHoqJ?`j@sZ^$7AT3bSr9@lwsNK`*{c>MG7!F|j2dLbcD=NYV*vsJ$|m=YI@}!4K`YVU6tVga zSFcX_a$!B^!w1Y`uv1rN&Vg zT?wOJeET$E@dUF!a1|Ro2AGwGPn-m-W>|xk>TEd1qQvh``Fy(C*?%8|*n|n#tW%{a zxkb`R0|ADvUzDQrt&@AUz8c{$r`o{J@2@n9-4I&b?CI9y@ahCGU4nuhUCL?}4;JqT z5f0}Yea#E(MuZr5*hQRNTT|2dGsJ(^CKpPXzR z$xw>LH&Zg(!T#F^ty}*AAl5PZtKQuvLJ|!W=qFn62HJc!RG$4iISu>7;LmA`0uhdc2kVUG zeUDc4A_l5>q1xBshT6MA+gJKDmR!c-+2AUc$JaYd78@-V^ntoZ$I{y!ctn={gh9-cO|Iuw?_@BchU;jV>n2uD`J@ z%<0PfAH&1SUOy^YX`=U}DqUyl8xpI;RuJsZEzqL~6QAV>Y<rLzQk}`jDMFfbntY z7zlK?;vg9qKJ+qn;IR4gdKV}O@?pMDWfbKc#~1z@$i~PO9xO+v8oUs$=lXMccJ3L8 zhEui7gg>qFgt;~J4?;U#f`kmdp@966T~)QLTB#xf0jF*6R_fI`fPhvou;uhhm42Ei zlme6+$Y=FSPwQjnWvm6^aXVtEBhz>1MMuA**MsQdL zjVh7M9k#Flacu?uE%=?X#COXXYnd#g;MnUlqI+T*Hat8DXg2?y!sfyxM zg(q&L?{ghjxO3L)t0Mp)dtnPpIHbGWX6_Zz;T6jGAM80WWLP<@?F*iK06!LGg*OhU zA|h6@xxJwlhBfm$f|)QpK=m!Tz%AC1c2u)kHd4>NspO0H6#_pi6n_0vd2ZdKDw?q2 z-Iz*J{-P66o-$PN4o<(qwYZ%IPGl zmhRJR-fiPy_%}1Z$*C@DF;?XmJB?vBV;Od(d!ejo8_KuII+6;;`#H^LU!9;}DDnW3 zqbrho-zcJuUDRJK@-ub!?s*Dgy4A80=5R=Xg=V7D}xXiMsrSC+J_kdwx1#m`28Y9 z0*JhrzJ_YP)Jk_Bc$k~H`*)YWonhE|mcGpCHMf=Ms?+YjZ~SKR?bl$w1zqH)e`Hit z9}Jj)ati|aAlZNCv&BZ?jF}50A(^$<;Vvv(ojmk=I&C$iH)$QP=;@gm-Yt+)VKT_P z@w!|e%~i78tHkB4^5s9&!VjIXx{|~!f8EppBf+=xQ`-I;Q6K;58ioaa`X@8j(YklAG3PZAHbSLw6vZLW?fwE` zq%>WEHD-$hr)}R?5VAwf)ze`-&PL(j&Q@0-^bGUhZ)ZaP^MzBU6 z>Bh);LlSa$+q!D;6JMEqd2UKUJZTwnSevs*x8)?7gmX%ne&^lF|M##^EI0GvK~18w zmp>-rlSUexMA^MnSh-upEGv&ox(=xj9ay9l>q^~IDe#ddn2M=-gY_fw$i5d7n$N4a!N7|!{#b?E}iS++e) z2QyS%P*JQx8?16ht;k7Iu}%SwU&tHek(5v`;ni18=3Xk%8wb%XoIl9%u)RCd2F$Ny z-KjR7hjM>>A6j64c*<5QsQ+KXQT{G6Y+h;;1#_AVuq7t()&Q(MCs{C`)ia7f4jrnd>^UW0L^ zNu?__33$CUBl}T7O+2Sh_GniS z0l6*b@s5w)7oqP1(>BrfvE_!!MdTx8(Jz6ff!2UHxv9g#KfDuSxuRdg0bsb#&{Fzp z`y)5ejNgCV#pn}i^m%{OP9B)kkZ+*p$=uZCQ1#SeF4tADzgU#BBfE5G5 zm;%85Tafa;v`!RlyZ)jGoBlT+!IBmZ%mNH>KwX|e1RFp(^x_kv;Il9EFkQ~h_1+6< zTKT)}Ry_}W!+5dvmW=-_FET*}v2cvdKIaGQb2pabh#f=}yN0Kv^xLhXa>rHp;o>@g z#=l9o=lbXT84(~tSLpvn(8R7j3|cQ10VWiiwU43PRd7K2EnrbUD$C3SWsx7#Orher zG|mSsanspLrR!i6w`F%pd>qd!g{eMR)AoCR#p1@;%BYl@b3xHyhWg_iq#C z``{U;G5`S&?9Sja!S)hk^8rr@n$^mDTo&e18uv$5em9qaZ&+0&!u3^v>BkA+!#DZZ z+c@SX*s~adl%Mxd&WeLcvvZ?&$}X%~fnj6+&4SU!68T#rJuZOp8ASB|vwUtta!rF2 zdmRJD6Yd5c&W2_;@K|!`9GqqKK?;h4ucd;zg8UHA(Ri*aY> zALw;5U`O-D^v5wnxnhn3&!AsG2eg(SaE7G?A57rC`jHFJX=B;s_lSN`t1%%}cUhQ? z+-{|_mH+5)g~3VGe0!$aZ;I5sdmOuxrlYMPPcr(b^C6tJde0$$J-sQWkH)}(jDBQK zn*9gRgv#wka%(73__14ekl5_Zcfx?cRb>y1qk=7~Ffc%J*^FiQOu}b- z_7?>tMH_3+B$qp;%B?B{OE&*~WKuDt7f+4*O|6HxFMtzi%-`p*mFNC*I)=hxLV{%) zsyJ!nX}aq9Qn%FXixlSLg%-`1y%KOqrm2(|;|ky|D@@6jQ;>;0Y~RXB{bM%)e{aFW zhZA^N0E~6JdzB9;E3ZKfPs|+B1az&xre#ywe%%DV_9)U?QN}{x8~;C>xOG7fEhnT2xjFDsH)aBnAXS z_|{;2;~N5fknmRNk~J4PHxuEF_mwkc*QS&ZI)X@LG&N%L&88KH+=TbH^+QdnwwrRq zI?5z_9P`BRnhf&0xE8<6~f3>!Q&^T*Xoa3={$%FwWg*#>(h1i zD@{DL-`buW+t2P7vqbm^rT?w0=m5m|Y+UGz$QRi=Iw8JnPf8d)c3Ys%n6@UzF9ndo z$aqfigITBZDqqDPWGEdt5zv+F^ z++F&bA(lZP^#E_5_Ejwz-wF2+O_44e{Jg-xz>c!!rl#wqNq-N6Qql@Y1CR@=d?Oh1 zw8>n&yE$EmAg*75bD6SwGM2_cev{#UdD%x_^R?tDnrHd0V|p5~Ti@_#Ie}*YvU9am zH(<4w$atVHDhQO{BQLVIML*%XxryT(L`}6w=8fzcW+0_a-<{g1W>hJ*fIe_<&7|bZNGod_=(;L_daC8$mIH_NtvB<)TJj`ZM~e& zWXrdMu?wdbO<7sl19au$JQfU`aCTJX=wcnS%PpS`FqLv2js70!@)0dO>>7D(a|%yW zscUgQEc?~YzXzZbmwk5Vxz%-2q!#0^t$i`JezPs9)P%i;hF8~eMg~vqkCG=4++&V? zn4967+Fi*DvS?GKpmq;LC&o)Te3(9+Hj5;o11OpQ;L&h1>%KO`RnD4M!-+3QQ)YJC zh_41+2dOy3GV(shS>9TFZf;IF{c%y9D3s5t#4@Tr3Sj#ne`PVlBKw6XnEqq@Z?`M6 zS8zA??l%{Z8WFA9+Af6z;}oqHh-GMs|K`>r*S$$i2^bAfOlJf@wl3`NpGW$=FwSV0p}n@LJt;7*XL4jHQ>-Ku{4hg7j` zCXZkra`%<&)la{SSBs|aE>lKVZ2{;`DhU*5td4EUp)v^2!$ww_y`Hr#{7l=B0vlaD z7{UxWNO6su=!HTeQ%SmJ<_Fm&B#d6W{oTGdeTOucY9mqGmeLd?8nZA_c`jF#m);b> z)=9hkR4@uS-+W?y>Rs=ALag~y9!Xtg6v-|0xU|RF-B+pWTv8b=AR*CMYcLRYe-8l; zOzmuUhB!Hm62$g9!T0r`7|t=P4C+lSpNDUH5-p z=RVApYdzg82CLiJ9)*W(uZdPd08$|k_R7ZPWrfaE%DBTfT>rDy_q7tq#!Yoh47=A-?UNaBug;tojEYKwBKie?GYgznc? z9Xn*@44(WH5JkU?QMijCl{s4NVt+->iE-{*RTSAvk~>|nIWeR}fz1beLtF};gwMd= z9o+!?e7WR2=qbT$FtIEki=FirSj0Jn&X!&Y310t0M!OECmX>AduekSE)~g;}K-K@Z zjw9{El3cyAK0&&&?By~}@%(Uc(01-%5OB6&ntK2l>60R9h~2=Use6JQb_aGmE_Bz|=_;s>)j2zB6clil?-7YY1HBPbjZvuOOM)~bgT}t$;K^LBXgtr0oq+o?@!WR&`qTP7zHuxJ36(eJ_b>YgQclnFNNxKWwg`*Oj;38zm6f)0fqQXc=PYC)zx7+3wnXkG(BSc=!Or7w zx-xyv9PM`5!4C&7_-FZeobt1<0RY(mGX@>EDc&X+qUAMIZ$2D{b1vz9n}rC^`xl3Y z-RIu`bNbv3kkkdPC;^7^H+EO) ze61IrOmV1nm3%2-xn~!d?evk{act<#p8yO_>Nn%jsnZ*?p`4P)R&76^K$_tWf@ChJ z%3azRRjnOY;ug=IaT|KkvJ(e6k?>(_W;W%41ykD=?(r=>*xPqIFFsD)UN!$|>{)9K zIv9aIS3rmlfTBYB_TKfKku-^{8;S1W_m03s4|Xf@1L{MWgrbF1g6#dsdc@F@;Gp)R z-7e4(08;0VJ3zvsNxK5_0yc2gnm7y0pu-&BfdLe2HYD89&u#{)osk7u@}+xo?4$?g zh{T4H2$A|k%?m@bQr@+wr6r}DzT26W@tlqua+NXT?b^Z*jw}ky>annw4YLl$g01KApPi9L*7hGf~0;Ym%uBPtz3A zq$vpFso#Em%ZiT&8mghMW+Yj;99FHAbiQzFr@t!AO=afo1Hv ze)`|PlwAMv5L`2UXp^b*dZ9OEjW?1($L!FgXZ|=;9$3;+Kj`6(F6dU`9BEm6`q&q5 zXz&gz82jvOYBuR*EM-MY+G960HZ^F6$u{yYKa8;TX4Rk{Cf7rh^;QI}F1aC6A=YSj z)#Ba1Gf*B1`r!SE@{r72Jw!CgI6^c7l^@r-^}Y~+@<(B|Vb^nYF9NY<yPw-Aovk}paBgb`M zvsYE{tpgZ~)eca7*ROv$Nm zVMDwm^TxPAzWoS97@;4CX?-qP`>%F}n9qXYf+7oo%VF|&Mn3vb%r%V9*ckE!*c*k2 z5{d17@>jv2r?2@^)CZ1g5`_0a*BVA@HJ|(P7fcFii3;lT1JR0h>E)lM;1wdD@soa= z7f+|3U)Is_HZ!~4{sQ6>tLL?C&}LRhQ79rBCcGH7ma|gJH@61>s^;{#h!@-h`4=Qt zYC7Npe!*+w&1Fg$>J}bLlNa!zAz-wePlL!%yzsO1-W)kDyp4SV!MWlzT^Kn{OOB8y zKRvOmtIa%Ua)_jc!=O!<%8guRpEU+Q>22KE^9hVi?20EX^uO+d;gO-+YDM6jYJ5Q7~0|Wnxh1|O>kNNri0N5k$J*XxbDLHqWwXPQ-9+n}@ z1_t^Wghgw%^Xjw98KkAdSPy^|zUh*dQz)IbzM%213iT5gjdJyq`Y+&s<4l>`2RGW{ z;m;gqa@o^~wlA}=XU8kC3vkZGvee=`Izkzq4>ySNbod%sF*B-MB97}F8m4Kz-2PY5 zHxm&MK=pun^2opb2DZCJ9bN0NNOKn08hc83GZq_b<%b&@OtXaYE41A76g3GqT;{3g z0^X|5xd?(j^BmaiG;e@p=FLQ=7QN;lv{+;;2!E24tk;uPNm60#4ID&L0$(RurXSTj zvb70E!VYROMVzp7XmU+h(h|Slv;xze z1~z1=Z>R5b8-00pi36#J*nx1e#dO%pM0hXfyKa{vwj1( z&ypUht;YB7H-@fuz_*hrK9qX zHEkHi3pNOXjmF;-fxb(36%egP}y0(sjTSXlAx=CtqFA5J_E#3C!OJig29AoYF`3-m*tm4%c!XVUt^M^>S4gK{8ToA@{Jdk97HnR$u0!i$H!!rZ|Gu5NdW92? z9I%{05l1PZL}WgHv(lBP7my+XT@!(xC|$1fHq`w|Nz2T5R62iLT7`b*mIg=(ExqCP zD}Hg-%|5MY$=G-2FPMHrPuS2ZA#?BUSuoil3CQAuMBCd_wjex4zewMEVB9CKvZF%G zD515xkM@;E{VYcJC-6N_`^vtpp{N&WttI~zSOYUb>sb&<-nLEMbV)ax0I|?pNYjO7 zh1@VnZUw6LfSoJ?C+yZ9P}`tvIc7t#^23I=L^9|er^`Cm;?zceqQYfq;rKS>o@)It zKKBilmE|z*_(d;o>tu;6)s0K#ukY*L_o@}HR}oZqA2A!u()wUtEdAAIXOzsg#7mHm zaa4O~xKh3olzE&oXriK2rmvfqAt?^9gu;&^Q_~5g)MP_Q8K=OY%Yax}YV^0U)GHFl z7#732FNpj^o!oML!=m@LVA$_(W0n%I1bWA|H*YdE3;jGK3;0u0W)~KAsMxV?vm??S z>{CF#i?jR)_tIY9$0<}1W3#Zou8WP<>mkNsV?UL;t!$|Kb}jvNj8^~pvUO6+jP#ea zOfTxcwET1JsS)@E@L$zyaL9y0vKLI%4t`w6&qK|w0(na|nb_zE2eL$556{jdxO;?i zUH_Y;G$aBOS?U$=8H(S&a&7x|KPsNgJ1bRd?SxAH^OhYP#Nm%rKP=>){w$b`nZoW& z)t*}5vxmCJXwKl?2TdiM{dK9~Lq#rX6v2H6VcLNppx^NIC?_#>$Zo6oYqYxai;&9_ z^10RRo%jRt!+uqg8MMBCXb>IW;P>vlCd9l6gaWhPMy8=ln9e}j3TLKHw4wi<4>`=Z zJ6X_+@#ME#X|n%oo9+NzacGwiv{Eh8zGIblbR>12e zrWJF(9vn^_skj*N**if^r!07=rX*sm#V%UoNFSMQEqDUsc zVRK~kJ**>dCqFNdq43StG&S`?GNX1goa|tL>-=#|%JnZ;5NE-}7rB%2LMo=@v#_>Q zYL475QPr=T^F$8HrH@i$q=ZwNUl6F*QN@72wx4Eh9iNL@4sv`-=8joH$1{Z{Z*PU) z-5|Nu-{@(`6Z0X{0-TH+zErbV1uP~Zx*vIu`skr=js`Du!;GN?>z%i!s9ZSN?p@SpnqDvHbDYrYvRHEA zXIc0!tLAnc{=0T-anJ{3K5iL4KmrxbiRUJbARkmAt&8vm=7XeGqyuGxDPQU(HfPyR z^A5RXDbYvGprsPBFGUnknzwY}@}(9`bmAEYu9ceP^X-_yuE@?@Gs(-M3xqk4%4xkj z+&TPUxlXtJh*djkJF`SZ`Lkth_$8an!5H!PRQYIc|7rdhx1!5>^*(nH;GKwy=frsX zveQ@q($c<=D&;i@IfL{s|I09 zRumUWq6G}!41b?HOt)s#unDJnS7WVFs$uIW6HV9vqLZkxE4=9D%{o zp!a5gViGMYxy!@$d}qWj8jYPi2k0MReT9w4?2hG>?Ri)i{w%^6hRaiwXxu3ndlGW! zgT=Vb;lgPVn6cYA&ZIZLAw37yaKNeFo7qe2ZXGEpHS)D&SCV+4_P*8GxSj-gt|~9= zeW^OCNS}}wnuVlvr(H~v>#fvmhHHsui&Frn-zMB+6jtF$BWchJi4Pxt#=?@!s&`z& zD#lMX+>4c}u$(J`Vk{38`Iec0tOnuNt5-ZBT7@-G^CGR+VOs5v`wQm-KTW=8rcSxG zW&UG7e$0j4aLrsv@~7ub?*v=m-Ux6b9#9yi`9?jTI1XF~YJO5gY+LL{`_PPF0$l-2 zpT27g-@Zg#981A06!8tb@4lO|Ip6R2wdY2mAqo7l6uhyc!?&8qYHe6XO1FV3bwjWG zo}e$j=_KcwmiWJKJY%vi3ZvL8(fIK-^Y35zyItew2)iaCriFXr4n3j2svRtB95Bz) zTq{H8mHA@B<;3+~jcP#Yt?a@oLxCu8he+MY9QKsy_`>?VDvcsO+-+tXnRVp%a;E;y z!&Q$hj4~r_`mKOXg-Y-d(uXh=wX{bfmkAOgLxk|Imrtf!2i(AksV{s{P3uR>Q?C%{ z?BwFe>;xGm<}d%qbWE}TpI8&}f1n$&2(sYq34@)8b@g;P_+M={?{s!{wg79zYt(%9 zfq(gd;>$ho8lNTNdtF~UOzR4|jEa_)pUtOZRfaXhMbn!I)q#YOD9lre3f!^Y$?ww! zBQ2s3X^I2%6qGv@{v^aG6e?VnV`DLz9g+tVhOck7zLlaET^y$zpH%1l&@egjQJgmQ zpUFfx1tjlpFhBn@O7Cqi%L1T35)iDkeUd9CBnb@!s!yX1WH2}PKrcGFz6HTX?Ik&H zK@=gK-wC1{qFDMXBG&_S z(Pzd!***p&NzK&vH0j+({-kl;yanqf9bv&A4$v-z<~L{Dsh|K=UaKxab#;%`)07s* z`Qtm#f!lTdPnv00B8mO??g7h%-8B8Xt#9bZ1s8j7x=TN#0@kR$i_j_=84EaVRDS>T z3N6QKjJ4GGoPZnVv`a{r-O|_wu>PQTrgn9>0s8?dfy?W}5tRRCRXTgSeOkPNr$aa^yp+_%|9nZJ%E<+5Hd0Dy@Ru?*$t5mOQtlyEEhUcnRDK<}y5R-1o9Ysf247U}K8)Wsg61BKAD6VH zd>79s|2M2=c$49+jC!)Oy7fdX#LiT0$;?d1>Mb9pM;v=z6vxD1MfCoKaSSi#$FMbl zyw;H-_H}}%fb#+H#DO?HR&EmA_C&o|@kXjoCtuzd+z!ijNN4chwtDRBvzEVpm9};!Lq!;BeLL z=)J`ozF!c!hY}RC$}uHv3rWE=e0zch#P7RdaU1t{ple1m4gZ_|_#G7$+S7+7f#i{* zUt&W1Uoqtf$u|m~ZVss_DK%=?Fe;@0Hvu0L@1=wLxmZ>i(hO9$8u?kl@2zJyPg|X# z!D`?7ts37Kx2#eHM7g%;nPJq-Z5k}14RqBi;q(^2TIiKzx%boY#^ZYOJ6Koy2F|~I zum|Oi-mA&!k7kF>&a7>^K+#keGQIv$g_!Xs^NZwJzH<(s)d&f7s!*`Pldbp#Xqq9) z=%{Nmm#$03&i?*IXn=6>f^a+|Ki5W4ml(`~!_3X3)-ZEq6?pebGrlmwQhC7yD?|EC zI-OP9JF5Qy2HQ(KwKa6xJcafCMw3jbhG8Tbnrd4ka)8(=rEbqmpV8+mIdi2s<d{#=JLz`-iP5t3 zJ3NH$Y4?o5B*$4HnC9&iBfp^F_T3XX8H=BPOC3j^=B!O&iWPkTo7iJAyX4Qe0VUrr zIY}?(j)q)77vU$AC@1r;FXBY1@{P`Yjy;lMMdrKUrAb)R43NHE0 zVHRr~(uoXF%>t6KnM)A?%3r^FxBtn0oc_)=5K&$Q>5jFSBZk}pP)<-5eTzinue7+g zCDZzGiEe}jr`=oEeAXS&20I=>T%^Mv8(PZX$}sC8`ao)4%kDA*m2Zv-=m%RTVTKW zYxtXc0bYg$>WxkXe_#O|d zviBY$pDKg9)+4tK#n&t`N3Hkn!7|hJrF(+}v}dL(rohhfpx)Ai>@80STZhrtr}Rvc zEPivW_734JLdB@(F#)yon0<9rFoY9TInmhhkT?cL6|fPkTaa&yQ0 zc_A~=nf~P2FMgQ$zCV|LRQ6z3APXDyP*vj5CDcK7^)^kRuUYWY9{digE{UQhKv`jG z{-}%mBEb4IN5GzE=+1v>sToq^ykk{7QZI}d0nocYJJ5}ElqM0 zm0-mz%Ac3zAldP=dVcE9IY4arHhCl7;DHSedN0>KIknGiYQA7La*jQ$#M?+X@lM|xZ;ZGU&~U!uVo;SYUP#9Jjv>6p(i_M9mf zTE~stO%Tyi#ziPFaF~j}qBhaKe4lW*xcCw;!14U~Eg+(}u1V7U&(rvg71r4QvIYc5 zt@XE+8*UofVZ!-ncmU_3i5KvVgCdmF+xIMdi0IPUz&Z8d`q>*6aU! zDPNs%1M~=a_x6k$Q)?RPLXw@T<;Y>pzMtXCLsqoED{v}yL&thSqq?RD zl1-fJDSo{Ak@-4AQjTL@*0Lp2y?PKR_s4Xs9^8xG7=s3P8r|2VV7XKFE;NvqiiO_n zGIn^bH~%=&e&fg$>rw~Befq-GJ;bY+6%{77PbWa%j*t?5L1omxCiV&*<7U^7h`Bh5 z8gNpB;P5$6HIl{+54!XLn|J9TPU$nef{24~hIg)#R7-Dib$XHL$acvrfPqpQoZucB zEF2xqJhlq2aPunGKd_uBo~z?Tl& z0TswDavzJs2)BuUR_9vnbmqB5_Ko)pT+^FwVbNw&^zTiCNdOQNL<>{kLH19Tm!i|9 z?4NEP)eFK9*E{CuNWcIg_azB*2`^Y3P-&>w{{z-QDZkqS0`d`XFgXik2;xqs!#5O* z5=*9_r;kKDyP2saC8ztM@5psPRa8+$7GwE!Cbke&Gg0y5l`b-vSe8Lj=ty)V3er%R z8=6a?KFB4(0E-tdE@^B;&!}i(kp6$cQ=Cp2M3eml zYrMRxKFA`^0vtXQj7tz=2w`OxO%5FWAuzq0!r8TK z#w6}?^H%x{3C9_HW`Os+=PHIBF0TB*WjMSF1O3ftnSM^Zwu97}ZY;|pp~rDK(l{M3 z9PcNlTu#TLlXM<^jm5n^9Ci$G^}>HZDnZs<@p}v&siW2$CMkb^i7Va*zNy(7VLXh- z`M|$M#MeI;mb?Ui_wlpV%}c=F6};Y;6Q2kEH6ke3h;AY{Ukl)~fASZ3@pEH}ETGZql(i7`_ZpUP{Pat_X-PU%NGKLw z-G^h&GE7ecAH9F+4{&)rm}E#F{T)X;UZd;ngVg(cB$82FE{lvFM4};$4D+o2;5D-j zLLOuwiU0@bR;>6ixzAC_k^N-o{ZOe6*^htn3JfB9why}d9MMp``QWI+&u ze7HjB63WH-SOA5V&u^doc^tCG4fb{O`tBWZJNKK*<*I+E1vFXAX8vN7iu#(aMTn)M zzNTvtqK)i8QYz|g>Lb2Ji}0GxsJH1{bUGTQ`};0NscE<3bwGu6%1%Z)U-J`J6<#+C zj$3JTO;GD>BDCU4<}JINSSmwCs-)5}VrNd#ed;Yh#}YaYhlZsmkwW5d8bFGuSd6MR z(%`IP&QO1nOFT_DG78B-3%{nIsx?SWMXC!x$xOO)rW%FfQkamm(uqi+d<($dVj(L& zzlek2OMmfz4`AR-PwqUDbUKOC>8`j1G#Sih{?U*heAbUlM^mc2(y#{~dl6<~>Y35X ztC$*0*Y{ltGyQ!}Ce(T?XqTytq?`OadNRq|n3#X6MZ>adIURNL`%AAt^ZH09(nR}X z{O5DOq_?|+fLkRVkK=Os5SAZH8AMHj2PbnFv<^$-_|4vFD!aJ`H zrNIYYA4)omkUd~d_}b4Kt5&U=RJQG@5S>DdX8}l=)xTvQ4CklXg25n$k?q9OCpu_* z_UC``nwlCC2@ORNRSW1m_)DSG8jtB(`%&s?f2P;ITx@tJuJxH|XkOJpf+R^?xZN&X zS`=;mGH!U^hcGM)JvM};8}xT}(bIJT4Ff%;6AU&Ijc4$v8N3da70z3@EVzcdJWq0I zLx>vEs2PJZnHY5__!@mE^FbNbNcAUB`zJsV6gRh*q&^Jor@ zd|%FX+%UccV44QE{f|vP$WFDT5^;uyhtYLCUnd%kl1imWr&FZUNkFMuKxOh*QAHIa z@y7*Yi;aJFIL;}z%l_Hn$RB6F9t+x=L(lV%y+M8>-bOf`n8VFTy_5QeCWhT{90Pw& zL?%O2?M1p5;7xaslp1<$kOeM_`KA+JJj9Lfy`M`1K`!7%B`AfT+3yQqmjms0 zW`^I1L7XmuYI<39%}1Gc^@lK2i4`+R7zs23;zxDR&tS+XhSQBP82$)!kh2nDHoF^cq;nf0_>Zg*h#bf9q?#U4mXqilg!M<*i$!ziP@GwI|h2ec?^T5IEwm@c@zltiVm|kex5<{H) z|Ji%bFgc4W?f+L#=$xi|a@Hu#NTZxafQ2NY1Tq*{vM~-A+pKMD?}EMi+J5czuESn_ z?Zw7kW4z#X0LvJIK_Uqd0!e=(2}vkRNSY)~4n3js6YBq=HKS1upyhvE%l)N$s_LoJ zGu89l&wb9RQ(lW4J4hnoBJRwgqpmMM{)AUxSLxC?)E9K*C}(~cpY zH{N(-CxtVS?=^F5scIUoCHi~qmd{}3PIL!3R1 zcf*~`1$QP_oVL%hK$>I>71iaVUn-E2BqY--=ES+m&uK4zAjEa70* ztoL?i&xORngZo{%x%nqeDLI#$^68%PdwRNDLY!Qn{cpE_JX(R0v$lHj>)#7LwEv;~ z55oQe;EChfo;Z#~j{o`iw&C}~uM19LOWSW|2%{pTi;7wE3Cw?+M@V{TmI?f-mu`_n zMa44|!j={)DvBv7Q#ES+E^cwvanRk5h@}~y>!!5C!@+1PLskr2K9p1fqD}^7g5Y=$ z6oBqlvGQ$H&(Rw}Rd_26eKYG_N)j8ItQfHE+{ z3PdCxkANz`4~A(oK#Zb-Y%$V?z8O@7w~i1)?WhuQqc?wyHnuD5Jb2_VxsxE;_$akw zPrPOrqup)|egCtif6fNya%23^{)NN0R<9P{UAXXltJVIk)#sMJ|DpX4?SByV-*3BT z^I3!!q^WA8-D8J0d@#7z#U$Vgajhk=2J@!G^UB3K}z7Oqxh!620J}77_PRWkRBd@B>rOX**V3i+lUJ^+1K6>6 zas8CnUaJFGzhp`M{1;w0?X^=EFRtHyWc)B%ueqkaWW|bO+AiI>Xck4vomlFKck5fRPKz95`{se^yiKoS9J*L#;SOrlaAtd+UphEhEN90Ik zLP7kyghC19K<0^Gh;I4A<}K>h@+<5+=@)avVfhaf@+5P)hqQzyKxZSlyv}}>QoQy&_1dt;kBW^>d1Gj9Vn-_o4#6;3^HKtgIA)yy|7i6PA+$i@_!beP< zPVH3`62M#m)8$VYPg)ELUn+y;oKC;!;c-gj*N8Dh2`&QY zya4n-CPSa&BK8pzjWWh^Q7o?qaW@)sFywQ1c@}{mmvTEc3+UBmP-&G8R%{egd-AEf=! zBs7{JR^4<{{pC+RRk!M!|9sunne*%Txbp_wp_LLNq)~!?*`ASScrN_Bp#}eKdU!hsfRh zy8bV-a*RPrm?*~zL_1s9&kv-J9&rV)$&^5}*>~gNyX>Z%N}w8O70@U_18O1pYuenm z^7jcv{MlooVgou)NJHM1{4ddx5cqNz$N+`pZr@3d`O7AG8Du@LIWe-Am{rh1&M8>My?3-Xu$@?L8noksR6G zGbnQH5LUrBdlxODihzva$A!TI6pMVR<3xy>#%HvpW5!y!0vmrB0bxttT;XY-btq|i zmdQhm<02A(7o;u@TOG1c#DuLBN{4U@q@efR4VpS}fzcv|#8>glRdk8_R(x0c(xQK` zs=Suei3p@EAq-gJr^gV`cNZ>{w{hVDUnOL-D@K#h!i5WC_kT1(QJI6^|EYcCxwI<= z`R|iHIDW3nE{cDoqFn}C4h+(%93`Oc?)D2B03XJ1tmAkB`XKC&CZHLUC!frXHOkVKmcPB30?_>$W5o2 zymDpT)WwVI|IP1bSvt)Wua{q^QjAR|(KQXXlsH~_rEY)KO*hpq?CayzK!B^Bd8TgF zO*hpS$6~bkd@PPeX?MBsSr)Cpq!(Wtv3Y4?k;IlQ7<_ic*WLe~jtR3OlMrwEgWUg< zf$6eSAXEwSffg{MYWz<>)LUjwNC%4-k>l&Zsd}Zbry_V=V2zbhAEc$RKo3W^$k?8D zJh8dOF=v0_jTHL*wj;esSk6WA84}z`Ki{TL>?L15MhXulKn3s)um>mt!XUe0k*dTpUd9U4$Tjvh7Epmh zQNZpNR;pi0<*;D$>*@h#j%4;d*5~CUUdIdOb|Ljr5!?8JGwD+dvF3-(_hfbM05st5}epC4&Bt z)UAKLYMfHbqiI6y{y0X8Il1Cmg#0KMu18q_03ZNKL_t(4a|aG7-wGBBxUXxiwYJB|GkCUuM1|eDT%kuE%~AbX;{; ztmK7cj?4ECKOeFg)j5jY(H$3hw`CB=zdL-Vp-o?rwJl0s&5y20R+arv!hW z%jU+Oo-Wtm;NWo97r+NZ|M9 zd_F2uDcn-BRnu6IO3}6CDn9bu3RZt;8f`8YONF3Z2(}~=_<(%N;+as0{6qrV==RpI1DbD;-J75$b1~rj%<_LeyKWIBO zT?(p!D5U$b_Pwd}9(u#sIqoVWGVxxkIN6L*|7}OZqI=RmA;ARv;;U4X-6uE%AfZ7Z zUlYiWNNF`oqcnX#UaJwDZ_nXqzYUOY^ zca9yg55mfA&i(!Z({brsvx0x|KuCZJqye{t4q6EjW}9-qW2E3YZ#Vz5?L-&+OO|(HOqF9-*u$?(lp+}%7 zQs`q)VvS15mA0K`u41`#VbWx{C}(}gelbPuRkZHy%7C}b)?VG4CT zN~#;n7*Nx`1GYybB)wylA+1B&9X-|Q2frPr*4)S@EOb!fFZ zAR@NyNI6Y4kajvOTh)6|FcoZ%kVEg14r9AFKB|8mE~zs86F(s}dTciVz=5XpARKO6 zgzKb_4MGNzw#!|KN}~yNV8vi)$UW$6O}oTI2^EmzwSAd=7(IK{fjoy5)N4@||7&B7 zJSa(bC|1%GR=C)5`u#Wt4v4fB6*Bpb$V6%^k9sLP3Gp9Wf24nJ`WMaLPg-W>O*G@V zJKlfPyW4iEgUO(p>3Z9Yxo7NhZ(JMfN;^GP#YDro?b$)1eW)cqOIQ3-Bs_{X@T%In zZ-b_m`bp$Ny_afC7{#c zR75lGG<~N-XNnP@d)aso(XO+5@_p#hd%S;|D@gOko&4~j7ti^Cw48jMd|x(gVi+HE zEwb~qUsP7bMc3W#-L-nfS&`7G?2jgfvw~|E%$h~(+VejS_I%fWPtTw?8iyP&!Kh3XVHv5PNu6NVAmzlneN$IY3KeMNB&W@WN&t~Nqrw)IS zT83oR@f_bCA(KOGtuq9ryIzmiQ}3QdS2?JTU9ZEensI~Pcu1b2bOJ9 zl1>x0EHq7HP}j+^Ec8+21K_FSxqW|cXfNOToLO-2d9{1&rREL0f1^Dah=OmL8NiUx zO;$B@!_KFD2XhND1&NfEiiUFgyWfh&i$7vTil$isML`&*sc2sS;*d%RWAIfHJ|`~s z)zV=$klg$WN7JHjrEdkX6%A%zmAR7&-lRl88?YG;9MXEq$JsdpPm7e}B3pk8YO3z= zWJ1agL-)F+e(C&l#i9LbcTZJ8v|~qK+ToW8-7hr`2;SP28MvrO_56b8@LsR6W~R28e)YWkL|4o05pYuyOexOC924kA(&$FGXhUjjvGfq{pe5JNa*@6(I zHi-o?wf%Wl=f$@sD`wx7DGOBDYf;o`IPGkG%rtX6DjB;7yRg!3ppq$=U>eBGT48!Z zQdj#R^Jqr%U5839Py-^P2&vhMRe?J6wvx$7*-mS+Bpnlmh)Iz%Q#ya?1ezf@Ryx@) zVLC2~fOV8n%vWc8#(Zei*PWm8jgyV8h}5UuX)Hg`qkX)2h2xNKP9}HGr=#UoyO2$L z)Gn9R?`b^XYp}f;SJ-WaxyUIAXSA&^Y3*_VG5L;6?z2VI}XnsTMuh241rUPzx z^HFEB5YqA%+4?2l%y@s%L7AKIT__zC!Q_|CuG?FBGX160hd z<-srEedNhk&+6t=ROX<-#Yt~;=b}C?yY(J#G8w18Cre?w*PfmI_q!I_*0rmsnK7SK zBF4bLz!}G%&i>gdpw_oBB-jwf$bmtXnm2C3;y zeMzDR+7LqUZaja@+H^eY0{mOUvG%;d4T>~L3PD`c&SH@F!5Rw*(oTlvvOAd()GAFNObaDnX+KMbkhgPZq?ZTy6E#w!{MHu z4FB~l%U9&X*VWXSKj&s}RDwUx^5qQ(!{L!CVUT`Eyp4a^oN^2m9yBRgVCh%?SE@#; z%FXM)=J<2n0~zp3_ym(TeOqgt@o}q2>pI zPy47+==E74SFzB>Uv3pu<+K&aPWa_N!@LTxx5Bt-scNX z_fHVcu2)37FO#V0?1r3(jh2TavkkiXAm3Dy=76+w1GY!+7OK^YwDW`=cu9Kv9$QPa zi*!)6H?yC`) zP-o&0`#^tEvMPaA_jSu}rNJ6NK7LPd%WdBooT`PTic5hFGQ0m$kbQ`V^X2Zf%J|CMtc&kjkGpWRtH&814W*|LIX2w<8 z1=1E^OYln0Spi)r3u0Lh{wd3)A zE1=e$Z^vt9%=eC&IF(c)?rq)q_GyXmJu818hl6R;re)vn$Zi}S{(0NBZIC&?Lk3T` z{=LS~F~kE|zt#a^iKRMp4OD;c{C4sI1NlosFis)49pYMYw9FyE1%SdK9lY z+h26E<;!%y=LzBiTnT@&K(N| zH#KY!L%=q^J!hWz6*kh5=ohP$Vkt^5Hu8PB(mCd%My{GdN$c%487L^Ud}u(Q1RKEgl!Cw#mvsct5_&?@Nq5@PrnfP-5mY18@RyNwvq&@ri#7?bvRY z+~b~y()6#QBzC!?haHwXGoH-;18S;5wL=H{)o7kedIIBxGdR_Dj#UKw6qpSD%av@p zd8wqK$#z>gYVwuGTzhP{^dzTVLpeV3HOi=yNrwkJ~6-}HZjd@Y-tB7^Yb zNx%^Fdw@8CO`vw#cKKKt49qv313T2Tf538;Pmnn@DaZ*jo8%B@@T>{wz?p{}GxmHB zPdeFC?05d{?h$ue$<(rA`bMjulBs2At{_btckt^cUpr^F+_@?ckIzpcHZ*eW+2BG| zgH9!4r&M8=-FlA~;MIR8e;q$t1$4a1DG7&Z?dzkmvXX7vwjCv*BiOcW8}sMSXZ`y1 zBV&)heq`>`5Z&nYKVI>Sj`OV8)a#u;ImDPei}kzY2r)(DM_pul7(9lME}C@uIFX?@ zY7WxaU^vP13p#sDZA%)RqjP>5%x#C*5y-cE?GtS9O1JN)`6{^p|Q?;HLI# zcW%n&ca328k|p&>iBuH&HI0yIlFDRIRF#CPQe|0msVZxdL-YPHUvS5INklnTZS}5~ zWcvo@UE=g^@C$(@B`HP0FC_^@A#U50rczWt|NKZwH>;HUR=%wLcn6RmVUbnFJ1g1|QT^B-XDbx?CL_}+w9HducFf7*Fa_bYa&RC*#4tU$px zGrl#yaWyZPldM1msv+@`aCr^Il7L%$4x=S)`K=94YMtDqGZ@T)EnX%1#)M(KJE1<_M z#T?S@K*WD=*F+4bdyMS2MRo~grGN@S?@ltg`O+N{w)=3tHt6+bJi&I2@Lb!+78&2S zM(^n#AD{W~HPAFm^3*z*;Dg-7Q1&#)S}1=PUfyjxi`-gg_a3c(+(IMog@5(zpD@o1 zRV^^`q)S1@uw6mf^ouVBE52}R|DAXg$dl~dqTq3z`jiYD0KNBjtEFG@>gjL?x zt0n!0t*7&_VutOxE($CE2J&L?=Lo7MfFmt=dL`UDL(tu2`DMAlaww)*V%ZLdP;-kd zcY8#O`Da^Fore%TV7Wl)6%BSl54?jS-C|q;R=4%~>+4M*rm7g33_eX`yP23*Bh-=c5k=5z9~+ArO-K<^^RU4Iv>6r-hi`vF zO4Fz|P1;qJ#1&W6U;fG~bpX=I#HD}C{2Yac7z8}P&CvKKHClDOnPW*QcOAqrwF*}J zP;kREI9vd)55dP5!m>Fas(?ITH>}+c)7Rtf=o3u-mPC{SuK*_OU9TPLYFCWe)#(!N z94xx=Glet-5V=9RG3c|_L)A<(Oe=qgb-;9JT7#0Gv4Vk`?D=6&JTBSQ44D+%bw5nH z8szT;G67`;l2o%XHr)X#65*BfXGE$!swOBD*_F2>o}g5TaXVhj(tP{rfrIkK;1ng5 zvdpl#K(XzhlzyKr*eQr*%p43shb}368amn)aw?#*T=H59Hg!YtpkP|LZ z&hwR_ha2r;-z0;#6rco#R6%5{6K zA?INurdXQa)&{nz$^JuD&KG~a)n7{oopPcC1#+g^jGu3R_m5xlebF8-%^73NLS{kd zYhox`W*1GagGi4+rUgsxmGm}C8oOcZO4zU!uDe@+2|gcm_Cfxb)VKp{1YN3R%H=|& z)(fj|jXIcLZ3d+(P*g0S_`H%3;N)3w=c1BMh12=*hY9DACtr>8sUKmXoYtE~%p9?t1hSmVAO3=9mMIc3}7I6=V-E2GhE!z45l zjv=2@jV~!IJTZ239MYbYw`<_2nmJu&+co)-_=-)v-e_E&blf%hC$_EF)a!-Q@3YRy z*LnTQ-zLSAce{fKsw;nDj8;N5;|14iz)48xR0?P~Hgvl0W5VfV-}TqmJ2Dx+a} zAT*5*BR=mIT>v&W&ll|70$(oDr>Y1>23w+a=9SiU$LsFxwbO}KfU;?eW&ba5F zKe{1xj*MVa!;b8LAzNh9ZjtHk)?z*XDdIcdG)k`-BTz4veC&T)AX@}QrINq1fDDKL zm`Tun3jGt|AG|R3R>|O-Fz^Qm&IHoXmeBh!Np+qLi9Pv@k@-^f@!TV6p|Q? zkT@*quYjGa9i4v@HOtK)$UOovE?c32sJNL1dyuipG-FV)_a9c(e5Yw@Wr`3|B2-&A z#uzzcGXkd*yl)A*I^mL!N$gj_SO>Q)gZ3Xw%4?w4AqY-{f~dqZ8R`!~c)h@TwUBuR z(yYP~jVP`H5}4dif)bK!r<14l{X)N^#nxq|FB2;NtPFo7UlUs6LA`g3FFn5CRw&yc zxwk^lu?8YL;nH@&M=XhG25k^#O@%})Tt6MG9!X{pdOIc4FA_AiiHzDK={X<r-yLF;&ITrTW0q&^+0Z1 zP+ldu@;-lX_DbT-0#6fYDJb|Vc;2*WTdyE5mqg-H&kRaSjy-ZPX&)+wxcRII=zNIf zeBE$o6U#ZS)woQLe=SV`rd(A>SUj;Or2yrq6bnU%gA0g&5 zDWGADRy!j<12`NsH8oLLS$WL(_V#v)ii)yo>9~LKr<(I*7$%=#HFKtQKHG7l$FFN1 zJW+y-LbS`kG9=q?d@T9Yf7Nll2deW28CF8FRZv}SbG?TXNa$1w$U2fa7ws}m`u*Fr zbZLE`rcn$SE*EAdL)y0KHRAJXbd~K##%d$?A-yXxFM$f7yT}qlPi%F)*?0B4) zuD^f2Uez=%f9k0^Q6*Qt@b`|J$PrBiexdcWYe^r5YAaH6&os(z`2jS&3I&HC)()ly z%5F&@MD|9~0`I&e=zK>IiUJeBu}iYAOR{JRZ~%s)BD3WYwday6Qeyyd*sI;1TV=ak z6YZ%a`QEGl<|yt?s_!njGdZ@WMN1w^is*m1Wkx<-(Df8Vrocc<(6$%GS`x<;*!zsY z{S-ud1UcoBt{9XCCGIMLdpy`R5`Rq4^k;zuR`E5NLYaF+k!b={2}m#q^tXyhu8XAV zSjUiFBosw81-2qxy3`{13eF;dQem@u6%3_ea0|rVhJrdt{SOohrb@c2CC(}VLh^sc zqY9VYWizo`&}Tq8A0wV?>5gV}bFZ{;5U>jHJB8>XCO^CXkLt?(QMIS~VlyzY*vw6K z2;pCy;}vFp95uuK-$?ytfk+z z32y*7OR{~PNDd5%Ov_`m<$i&H2#J3J*&@4?RkDfCvzr4f^;b&w^vlu(>z?v9n}@A* zyc5CrbcM%M;Nudn0{uDQT_8|~Z1jF`MI^EbS~~=08}xQSU>uAq6AW#(akPVV2oC;I z>nSX;1D+nKh~)x#qs)Ft52a@$pi`00*^tutkkIi@iQoRG$K#`8K#x56YCL}@UmuAJ z4aa*%j~i~g5DG|2Nnv@_h>{5BALGvVo@qbMg-}4D+yeT0I!{nQcRcWYFJv?2hT}u0 zjR6fSpW}#Pw4$l3tfZ-_2{@{J)~{brQ&ZE?7|=-+(CAFLQ^kOekMmpzd}dZr{K1FY zPuc&@m9NzfJG(aByMe@$ce{VD_ds=RN)%{{4i z+0NtpC$C&tx9jSw>#s;AS?>1}l#<>|Y~I~ERLrzlzC~en!Rb%*eY>-tn-!a8Te1O_ zTXaG7k!z8Xh!8aCI=ZTI)ici=RY3ds*^)138uqMKXGPwWJ^RC&th;|FQx<5JE((A_ z5K*8Pw4g?6gO1{qa9NVJp9d)V)F6c~1gL&s0ADBccfqTcAE+7>tgR4UN2=q+&%-w2v`f0K>JE4^Mme@w8jMGd3G=uw4ED%ptt0OrFZP5 zR)myz2cLYDA$}g3OJb-EZ^646Et*y{{)OngZ8=0h;CeyQRx2o(1Vs~F z`w|PsvN)kiFjh+T^(dI#;PXTM-xO;9&M1t`x7-_k=ad~5Lq$%@ueiuCnVZ?qa)AC0 zk#???y`@)Y!ij&?4EDFBD`xM6l0}j}RpJi|OsB%&%PvB5li&kIW=r-&6ph4KgQ`ME zjs>F#l)niI{jfI!l{cEdlhDax zK*#U*866iI9q;+lXMP=j=+S$;7cvHP?Y&?3DvClPHiUo6<7M=Fx7&NhY`6=dfQB*Y z;>$*|;D(jY*0rl>-T8KW_;Z~x3+^N;Wh6EatN5&pHbm&AIr@+*Z zJ3hSrp#s$l(BEmjCqg=Yp3|-W$toPY_1PVmzp3MT6{^c@XgdT{L)+dHNGKXONr2}# zJRE472cmyvbla|_OY7TxKK^PL=$1uBQI4n=i{)Ds=3!w0YG?1sCk5sK%Wai;SSR#l z6a_<7(G-QQOopn_od(MC@48B^xY6*hEpbI}`FU(SyMT7GL8K1IACL?TxKIaECpKkb03QMNU~GI&Z=Es4EPg%Uv}utk%@E3E zS1GVjk}L*a10*#E!kt0%#4!fIF$wHBOLs{ivq!K6e4HMG? zU&4DX*>Gp8KoYSb`g=MVcEb%Llv{AdY`6=dfKrJ#q1*!4w}X<}+1?o!Uk)6re9p%H zaGd5;D(84qR#q~1?p&5HUw&-IkpzE+(HKrfC@CyFV-{R*wATwcggiDJA&|blY*KS1 z=ky9Gdo6^+IRJz_HvI_&TOahE>Dp7F{?qmFnI0I zBBc~lK5#c;$|dN1YcU;FSRcO&z2!x`3;Srz+`!Od-(;#+(w7ooNsxb%{6Y|KOX$He zYcNGIsv|^@sBDN1iJF}0I8}(dC!neUTPeKAa&LcE@5l=ng+=29$;TvpcYPoK^&OHN|{XnGdQ9Xal)cVeBPlShzHW zvEW03SkEW z1mX!4%Q_~1K^)3o&GATq;G$>Bf9?on4P6*F{SJwtDSc# z;{foE#ME@#=Qf?>W~=fzBarTgaMc9-Ew8~5b@$j#KQ~Oz5Xm8%7hZiSG`+z)55x3@ zFwh_gUL;@$+*Qz3uf`l(tbiUuWhRJu(oLFwxaRxv9op%ZK2a6=>{amo)Ad9g z8zHd=(e^8@{!K5P86R8!-xOH$k9d1mk#Qv1-z0y?7n0g9ONt6X1SM`S2tDf>v>K2_ zgVL31QXh1Vmzrp?2^K0%=DYmo_MbX;O`N7h{H7GHq>U8@Cc@xWQ0Cr2u=6FzzY&I> zaAXn# znNNRv0LsolKqtfLTxu6O3+{aS&Ls|XwhH9=-~1##{Ce%Dzv2z$7LZEBN9H&k&P4&; z`1k+E>+*Q%@9E4coFn+dkG>HfJ!bg*X!2=4)Ns;$L1&|Y0II92Pda8KHTx8O!x&9I zqubA>qthQ#O(k4iA5mlaDRLyZ|%D`)Fv*DxLlW^e3RP`{=b} z@+4IyK34S|@`CrgU3wRagq{h7$gwQO_b1rsa9}%i^i2Ac<9)sp%X9}$qmC>gNINwg zrX-p%aA+Du=``Jd-RbnTY*nJZ{EQZuZ0Sy2x`qxbX=T86(hPbfIO4BDcormff$D!k zW?Vd5@&q*eclMkw>sFXqjdR6Ypn!CPb`dZjS$BuPQRQfx{dZ=uSY_j_F#L@hoQ+fG zrgPX!85&R`pi>fbo4WL&&{Up_)UjBK=!z1=u!Y^r7o(4lJ;_;*1?xgh*0 z1-0J}b+1*lK&9=}YNTooBGo+1qYh;jje-CkB4eWnfh09+|rZ9W{Qs28!^GOg%NgxAit90*p+1Vj%WaXEK zss$!&^r2SkmTCohrbWYZn?9T?0HCOP2zTrfK_d5nuQajt* z-_yzGe)%6>x8Fa~-o2xXR3bJq$LVmc3aG!Qlg52JVBgWrkC)wgkN1D=7na8_x$%=H z#2kjnXLQ`>Z0!##AeSp!t27#ol9Q8j!nl)>(3zCa@Xu#dKnX!Z>mZxo9paX|W^w0T zpM#G3vYmww1F-D!djRO`%aVOVtIg(j2TwbG)&xN`A$auZb}y&d2XrR9-z2nt$&&g~ zkB4X~MT?@4cBlkY6;6LrP$K_^2ah42s=NM$SS)so5;_?)MZr`BQb4a|(`=fMlf(KY zOX_16lV4sUlFjup>C-ezhE=b=U&zqxWPmUzD#%U++58xfw&d_e+Z4W1)QXn0Ik-I+ zM?r=%^GTcsD^R1ruV8PUAU7?^y9nYY>|O0{oBiFPVi^)Rol<|3&lobfKOHE6qb-O+|CSc?g&k~RWdbdPLZG*wv*tYRC#+UUmrpzFoa*ku7JLr#Uq%(s2#cRnle2umj z*Hd`|R0CAWs#lceDbvKbV23b<+6P$5yUNb-(unC37*}(d09%e1KCb zpR=()oV~Vp@7_}?pwal}mcKIVuPrQ}ag=n1Uv+=|=-3s|}32-C||+n(b`9m@z!Px5$c9j?O$6Me0ei9s}9GgCeV{D17dcYIyd zmG=ML`;^;tb=8aI-W#si2Gb0t85~H!BqWfYnIykqGUUyhOv+@E%p{YL{w9-Tm^6lv zGLS+7p%~*BgJrOWPEfQ#gO=UtFVNU|L#FJGA9(++~C5KR$=A!lKa5r$V2t zD)qT4psf%6^b93)GSe+IW!8ezoX==+pYie!oxhXGWCoSc07g?pL($aKL^7GAu<*>Z z;j^iqSO~6KQNw>f-JEwO72iMQPyl*=oL^RaANb&4jA+Lz@p0{c)ruPGe}B4vG8>BJ zKMroMziG>;?G^?QFJ2ZJ$q5;5jiRxRc~x-?8;l>#XRwO)N!$@%zxR{FO7Q?x{Q1u- z>u$QKw%BJ;tOU9AnRQPGl+M&UzXZUM`#yKJOU*+FOxvUok3!Gm3De}VllA9Bz4IBW zbn}Y$I?-o-;9tAq9hr$$f2#|B^a0=!2)6;dz60}bV&XMda4_+Gez(7xRdX9yuSA>jhrc>$qB5G>acx z^R3+5fB%WlZ`R+Gn3K9#<}$}XWHs?;p?FOe!n>GW1T-p+%2EthF+J9QkG|?EMAyF( zc=;gxEdtBdoOneLEd~ULW14VK+hQub_#3;yQl4A$b#M0E8ttc)T6*vcEu`P4w;k=W z<`i0<)&8{E8(r+iLYD%^!7ZMK9Y4Zb7X`q6j%W8x;iAe0m|!urY$5u<4QOsg9|!S_ z=K0N%c|qU;@Ir#)n`M80&BZ$EKdel*MdXf^i1-vw2k>Kw2K^KXF5)VU+$yAYQPq=l zxbNg+z>S0LJ`E>+z@~Q!n0p8R@SPvf)EQ&XKh{I~{ouJ|*51Ui`@hCwPc!=_jhzJ^ z)NHAP9@}auouvZT+?t-&wMF#ShYfM%I@c53+CZd|YMRl$`k$PC&#QXJuLoFcZrE2E;Q<(HDJ<$NsJc?QP`t`{%Q6`d)6jbTT4gK}Qcx`K28B(MHOPAU0X! zb^s|&f4`t;t_m8i5Wzy%$hPTZ%L3uQS(} z(15}jSfwyNCYQ9v!--DfzT+$cpxcP!ljYVqLT z$>iwtgXbT`5tT*7$%Fy8|A_^>>*_Pr48Z;O{Se@^7}0q4KhhE>UmH&Qfe}m64pgp& zlhv$;VQ4>~;Z8_2ovfmLsFfAf{X_-){=QXgJE?@O*mcc+UPgEU+IY(?wX?EWOw*(@ zx#v@UtPyZf{xghV27#yLj9v7Pw|u%2ZCiXKNYTPfB84_|Xl?PZTYzEbq6Und+{ z-_~h&iJ(Y22CA`9#+{eEk_#>dO2`jGJ@^N>NkdPN<&%yu!R|*FU5AKW36YKD3Rm#h z>KEAX8AV}#7&3j(sWgEifn9~&ku;M#o{}xs-j<$77a%pn_#m1MM~|8tCogj%7hjc5 z3L6ogseGOR{7K*|)#yJNh+F4^zYgZ~P$uKNc)Xlt*Q`T?($My2bhSygRuM6vVXt7> zJ2cL2$oZkE-tKl=@jRavi$CE`HPRTg3$XM&(Ta3`%XOe_x3SPYAu@p_Dw4_JnNgr! zkbYKURy3fy{u{Ahqo)d7!=vM1kTNTP_U(bT4nl=LWbtjFwP4X?O`!>y7pXTgtLWmt%~S?6+BPns z(EGFM@B1_U!UXr~8c}g9Db^o-&_B08&^mp2wj|VrEnEa~&?TVzqsX@JK-pIii58^S z#{#nv(YX$qPr&6jlD2QAx8ZwGtcipmRsc?a7$(?|jSGMH2G3SU(ZxY!Po9In`vk?Y z$>U5y7;V^X_&lIPBWycYjFss&R0R#M3pd_#z1A$a0d=wT>bHcHQtW;DPs!C&-W6(V zIznMdIq7urRV$G3@UMQ`dqe(UcyP$CVMuH!5D0PQ+dmi@hyk4||4_$pwqdwct5)%U z!INR24I4I$y5Ea0zDO#SI#o|@4ER$1&C!NXtPb>i7*Z1w< z)+;8kaeH3P+@ZD^Yfa6`AyTo#T^TABo&38Dc- z#ODSLQyEh)pt#_29U=}d-{Wh&;QHM2r1ftmFLJ5;>gkyk# z1@ver;O8Vbfv01Cxj)#v{*J_dv_yk&s{CFgnHKm0g2?R#sfG-q5xfhFU}}I16HD=J zdkWpxjj$Dzi+sXD8aNImbHP%ex;5S;(7Uwq>d{U6jUF?gg?miMiHo)0s6y*Se7Vf@ ze7p$ZQf2pc$;^WHIb~KH*aI*8NV4o3#n^4_=;}UH$Gtqcp#UYS>Gy7bBGc81-Mp3V zY>dKk;0bu<%aRpWDvlf%EV@XO{y7sju~-tFj*#i_~osi@gnn z?=&WMzd+B6JMAXt1+Apv%+%fR)LoLPKl~CU#RA#cM4-8r?|tC2gkGp8-ExG~;9k#E z>#=aQN(jRXkB(HJ^o^{9(A}M%3^<@ZR=@9EA%GoE{2@7K@v6|kc}Bx)Q9uJ#tp|qP zdOJ@Hc0!$d@s*)o^3CZWpD^)ivfu{L(%nralR0D9t*0lS?mTpV-9UoDaP{-zi!UqJe)kVq0GxA^X*Z1w<*Y`m_kr-eHz@YOPnAfv$dsAq@35~S>vjHCADcTK# z0;O;Y{m_>eXd9M)D1LLva*9TnU^)~BG1#!=blW-Lc+9gx+m8!D)Mrwj%uuKlYdw!t zCPT@ZHMQ=K)x!S&V>DGQ$%RT6xf44dm;EdL*{NxH5=4Q(_kv*a_cpUAqA2gNV2fP~2Ru6PT8hF*vq1{Oe(16>>>#zCY5B%tG4U=%|5+I(?L1SAf0FrxrC z4%1dDd=~i1HM8c*gb{ONky>oydIT1b0W}Myb2xH^DATXV^t4O{(St0UuKbyx^m_MV zgyw1FW{;PDH|=MBfhO$lM)!hh`7L^;KxZ`00qB27)3;DCy$Z0wG(e^_q@gT|do+ZR zLgr%EVnrwGu;^A$B~iVEQd@OAa}WDV-o|`ciSTE&neCE}l~q3dkAhYIrg`#?PF79_ z{}PQXYQ<@5rT?)yRQf4OzVs#9KLzc6$t9CC>;uz(gpzg8v_rG)8~**&;0xDiAKQSW z;DRDmqCT97(GHy-)Soh!h$eG^uAEk>E2ov^@NU$2X^r@$V6ClbdGszUN0Y9HoC{vp zov3QCX6z%}`~XfTMalC<)@g%oOD1DeltBxwXwy#lB3(f8 zRit5mztI@!t#h<^51cAcI^M3RuT=pR6%_*vX1#6w$^FUI?|WBhK=quh8p3N;KtqS! z+M13Gat$b+mc1{s?79u1q1(pGf0|<$VLnhO6gthx49$ES$@zTe*=PCti!X*$YTVsc zd)gf~wf800td54JlzKFDoT>snrPL!<7-iFc*1n{qV9-`11<6fY`?&Rr389|ez7dWI zvuSJJSt}s``HrS1D_8f7uzk1!8bIy)YcYN_pP;Kxs~tDcPiUaCYGqCL3qz0Fzj^aY zxkJwx9sUK{mpY+?$G)tYbR8`JFcen- zKZJ@>&}9PA38XclELofjR*pN7O13#gK)e7%-ca`pxQ(+S%r+52+&};qo3T<;U{LHe>SU<4tXD6lo(9h?Bb5$*`^|+xJj{;i%>Higf0w_K?CLfRI zV-{=gyel-20{uqDfHJ8By`3jWr_Vm`XryhgwjYpf+vIY&K_@g^867%w`XKGrOor7L zUwqCAXyA8z>6KIxtkY^fA8nT$ZBLE*TfdrPhGPGXo9Ek>80=&^5=K%$gU7$)=jlKF zcqOLA8CA3gI;;L+WASo-XlovNoas0`5sA=jn#@b52`ELo9ooL#ORgAjEWg=#mMZ4M z_9?Z)+ojTIDUfK&b2+q>q@-k1D8x;P1Ra2`=WDihW$SJuZYH!93wplpy`r!7kHPxN z$*IL19!yb+W19ufKQEYfnr|D^fU*jK z7Z4d8dU{<(y!5Vf^-VvIlvM`N)%QQ zEm0m;eAE07*naRHm%Z9BmLxm;~)zkn4b= zSD-Qo{-CCR=Q4p;0>!I93xW6(w7MeR)oLUcEOROmpcBydTbZR#^>Y7tjkCj&DMds?N%3Qt&1)ZNxM>qQXMi|b)yQDS9;-yA6t6@<1(xB z$UdDZo2kM@Wh!v!hoaw_ELr~6>?F5cDdB^{YgCXzc-vBMe+KP9Gw-Z@$h^!+``Rw4 zO4d}&%|?`?aXazS58)=mGI#ulOvF#fTxHY?N45656P2$pj=1cL3JSsBul0m=BL2#= zzOKv!?H=AOGy$*Z*a5RMR^kOCEh>=ANT;k^K@F5HQlZjzLihxfk*~_US0WzOOuNvF z%BLM+sSO#_I_lH@fD5hKe@JAywBg&Q{RK0HH~(Ft-`}XM zBWYic`yx)dUAR+MxFrj(b1IA|d1Gh>cc0L^8;#>kg$wTRDl7g!GfcnNzyC>*uxH>; zIa0M87CniEKzppz^A}&B!gJ<(A&yJTiAH-`=-{z~*6~=O7xYi?iZUK%+080+tV#A3 z2X#OkfAWG(E2_U$W&<(o*~^@;*eYGT;KVba+O)&)5)|8_x4B@CX zZYA^iPycN2DR?gGXaA1ms4cnAra->=&i5uq`+K}SfnJLO+WF+eXXWV2$9+bPMZH=D zG!!GHVz1tJ@~L`qF`$6v%$dWE9XrNUK(FTae}AGvPXKad5t>*`JOuh@0X-hoc0 z(-)TeURE4fJB)Bet)wN7c*3!=Yklk7^D5v_k(CMT@$3R3fhGiQZc zf`a5#GS^xw6RrD=zDmmr`K$0%7CGULZL+=mDpj6p6S-Lzxh0dAxyAb*w%S@lvd?#n z%%8b_Nq`-}psX(Aq+ieXp zk!_JVU%4AIFZL`ijP`m_A}fSY=;%bxS}@Zs=2>B#@MPc0_hly*O;90G3@8;M25bcu zk`G#U0eu?U1ypKSsqqTY(WvK-{I@jvcFB13ot}UH7NetjhK`oBdcppjkuEJ$f8j{0 zGOKU*VyXrG!XNE=9nn7fMO{Lb)};v@>gyDl@EUE)Lju-<_CeckMQ8Z}9dkmc+@q?u zWPuLyFkJg_=PLyG`&@&V-TN1jZTqF{4KLOHX`WY_Ez+(EYdvRzTcT>f%b=1qGMBW; zbw4IEx=`!r1RXLe5rMEatNdQXe=NtS3}wSTM?~t$o&KY<);h(eAECSL|{UZ3KM~aw|i$VMmiRT55tW#1b4QfxN`rgars2w8~gSPFn4JPYU9MpEZTPg zr^<~DDu&lmk8LarJp9K}K(7b?Ks;!qI&fq0j}-$t+Z>>g6wsVGb4EV*5S;Jdepm@6v8nKgVndc&F^|BpLz%a^Wye z%A=~LjN`d(L~ER=5Lk}OWJ3@SK*p7va3G=-WlE7e+1)xN1pStU;X$$Ta9kJ9wrLjv z|HKf-o73#I0z`ZUhdmFJqGjE>T6O{GZ4E#4O-}}c`pAx4@1(iDf8dQD?OL2TB62&o z_>L8k^_8#lBJ2e^Ab6>^BR*yI?2`S5`;BC(1!vL)sysShMzbid^a2%D z1(#jxmK=P+>iFK@#CCq{E4?f9L=)N+v;&hVMYC2v3_W$e49b!HU9m(imo#N{j>r_x zF3oyoWkC730_mHee@&Vpm%xj+8Hwn0FI=)fhePwUFI1#$yI31#6I758^tX%L!6(h` zC3iX%2w(~MD&HRH%^=Ew6rIfFDL2loxkpSdT`0Yhh2cQcK{r+RD^7%pF)FTbg28so zSH5Glq^GGuIZ62&Hd$R0=BvVG|I3@Ha|$g%w+aY?IS;KXe}v9epo|_N;=5%wla`|I zgmRUOGD>9F+@qyagJ%`$j}jn}EjCo(66`5yT^3oTeR_+;nWfrfbZp>S&eg7xTREp(TOx8TJ{|$ceKIZJ%3fEysp@nz3_%i zFOUzllY z%Dw8Mk)vVYoZtL$J_Wa@-JvWDCx+~E`0zo0NlDp=`siGo!dNP!v$NeV#K>`k^UV(< zcQego@|QGH2He1K+;9an)cKrt-eHdDeEltkuAV10U^p@M*FFd@lczKCepN>w_92Sz>4>?^!`GLG6kdmo= zebl)w!TKKhd_Ia@m$GO92jczoXo*NFLP8^fexSy2=rTNYeS^M|>PPF!P zndwXaHZ=hs%(&Gl{fC7;rFy2w*C2aE{h3;><7QpV3GqJSF#pzcMXnz&8f&+5Go>(X ze=S0Dv}L@4wASiC?dPn<@*)+Qy22~=`7n(h52G1rb|QU6+7!F`nCRYhe-2CJO)!f1*q? zGm(qUoSZ8ZvoM6sHlTsM+nm$)uDqx?^X-Sb{Ga@O z{sB?$XVjsxbH(s;y?bRrCRS#hHgT!6v@+At(dO^!>KJv7$m; za}ML?n#g85bf%y}+ubjT-u6Z_HFvExm%K+;#GgqeR4J~^3L62N-z~Ra@uFIxPH4nU z{4?E5ri(d5frX%BU@z5%Wf2G+Rp=&xY!ndC2nj3R>eTf8NG7=xf20j12@07*z5{ti ziLv8MOpM_WZ$XZ|gLi@>!mx8dU$v>s1ZU!hv7teO)FL#V`^G)!T16 z(Tpcb3bC?|Cz3&}e_I;OR3PdGS_~-~1>!AV)3Y&&(5#m-MLZk3KwprmRniU+HcF6s zo=`M{T_=o+Nx353D~WY#v;C;(wOUm={)k9KSLv{PT!`RuZ4rcQH@W5p(HVFv!O2(Z zLfSRCq;mBxfi?xg)>t#OK^*#@BN1um2VBkq3@E!uMK0Kze=T|DDbYFCCD)PB9jR86 zK)@3soi*euR>JOaoM540ued@@=J#M<<6<;P5$V&R`a026ut86ZU7^Cw2ZjIT9~%ck zeK^^2&tHHx)4hgYqy7CalIV+SySzk%#SC>T{ln6*|7r7P@x{w8A3e(YI^dr+Z$9ny zyWF3D1MO*dfB4w?;!IDwL#)htLxRx*=N(wKCpc{gZlnkE|4p24{^5>c07Lr&jTcLo zE@j7#9lZ3?OJnYLzJLE={B8f&?e8RVPd~kK!O71@*R8AV^E|X|BY?S&KDtr^b+_D7 zJK@0xSI&Lg+iG_|^w7$lwQFmufys_T$L7r|eL(Hae>c~bWV5WzX6f0qX=Mkn{gzv5 zBM&~fQUcL+>uPh4JTll3RX3S`5}ry{t<=#fPp{x=r0!-#L%Z%VRvTp^?1@sXqNQKt z$d+IFy_q+r{}@}s?Hq-kqoUubl|9}G&z-n|Jrxu5jniu!GaC`EzeLOMTpYGyZ*zoy5EF!N`yZ{g$hji>e&A(0N%Z1V+t=RTDR9tE`^M zMMYkhLXPPK~u$ZhgFNUHX25^tN17xk43gA=-&LnJGL-b{a$P&BCL z7cbyqddU}?4S|;YT-0hSG?yDW%6wWVC#fxxp!b5FB9KZ^uvpZtSgfzoJ)%cXA%q9? zf9Jc4(hj~3Hch)p?@u_~)$o+;tteKeznHM723?}ib)rM`^5lWX%{6nTxfLAcK6ZmH zH=)$~aOLgdt_^GW5kXe#02_qu(zZ<|p1I#Xdh35=mt*tja}QW^Fte~6f<4loN#St0 z)`h#ZBEbgvJdyf#->2+C&sZMInbltvf1jcY=Yb!EzJ2=@iN3OT>K&bNd7YS~z~H~> z#ul45Z+_ixv~$I6*Iu3&7>;O9FgP^vdSmFh+Y|8X$2NxnHf*?ke6>wpXZ+?j51e=Y zFTDHRXMN%5Eh?gLjHHCua?Iy{{&R7@fB)OAy}b53@vj`dPs_S>wber$1i->Ie`{)g zLB4+vn#U_Idjh6x*tZdfCk=)pIP*i@9Sd#bAgx1 zKlm;nKlF2quTacSP%I`!5t>4tr;;1+Q-Dj7IEQJYo|n0h1Jp2|CO$wbmoSs>(pPg=#)Wp=hI1Pr=U#BKXOP|4k1UP{RyL`6nX!4%&f!ahcvmR7~XqhwF@0(^h+T zkk$|4;p$$Y^#merSV+5wB<-Z)Jt|gEMh5}|g^NWT&8KnrFb+Wk^9hi~e<%FZ>KJom zlBr@B-TGV9tA}V8$5~2(GC7^3*UxWxlnFdfF^x}t%m2l-cVzy6;x=k1#}B+r@X?3F z!R!7(-=KR%eQu)me2#dCBVxT+trB!oLW(;m<3`%qKq=3m`5Z~Uz(oFq9=ddc$gxOV zO{cz9?9&%g3`_-f38)e8f6)Q`5t78Wf6tz_@_##@!QfF2vVtO7`@hbAM?TGLIzUg< zaI(%Gf<|&26zw{MVk3$qF)jsR(!*pbnSsSEWJC#B{Xra2Oh`?p251t{p+70~FNEd@ z=+y$T1GG=yE8=1)3-uC&MjsQN(0sQmEdI8*mjF`~Oah%0+eMH5e}mfN|C~JPe1x05 zWdy}XwIC~c_@=i_f83}M|HTY4{D~}=GqG-?dC9D`Zn-!C^nqRtTXIi}4I6IHKLp2! zUAz(a&9Ckk0B>e~AwcW=&{_U(fibY35NNFj<3n022CBG-A=}5nKdJ*1LI|z(>HNmP zb&kO=2DguT0dEEefBYulKd<)pSDatG3GDB@@eBPPsYwDeKwk%h`4$e>iOtOBV$GiI zcK6iBa=pP%im7Bk1XMEns4wliF8jX30r6k{oIjjV(cOHf*>(@&B^@o2*xGT!6zf@jWb0 zbjkO6`@KY6U!bw{S=U;8jr0DLBYybM$9xUTBCcI(2eUgXvUcpJ;@?%)=$Uz=5ei&l z2IzOumZrHwCg(Kh;0vvOd&-P|T=0b_{5KXH&Lt*Z>Q#zHZ8e<`R?QOiNebn94(L|k z(}Ne(HhQW2*Au0cBNs1yGw}~q900a$5e|n)#dAa=5s-p(HeVksmvhKuvShPaq?EX> zM}CG~9#R@OLsI5P2KG`y0ocx0;MvHX~<$oi8@uuZJ&-V9M zoL`)G`#TT(CVl}EVb4QyX2nvd4yeLirj@8`lKlmK%wN^6`SK;bn=%zOPEcP+G`J)Y zp7)f$W#?n`%v$G_OVY}jXlTo)g*dD!?~duVT^%>W+(#* z6PD;`@)hx`{#|6smx*sy4}ST!CL#p|T=}avBLD6bo_hNhI@+4fxC!4>`~w-+ihNI# z42afz{Uy;azysB*FiIra2P8EV33NcC{Tj4D+xpZwAnyzH99KJzqlFN-t~X>bFh7Lnx}NUrZ1;C`wE2hM1jG0N*jBqH z#I?gp-Bz6$pjoy5o8zv8aW4F$VR%aXSZVL$=08XK+j{3#09N0(dfePF`tSc&oL`K` z{syv72T)(XJERfJp0(gK`yXq*-s@%mU%KaivxD;uKL5!tzv}zX^xA|rrmEKVE}5O< zI%Q~q^f2GDJU6MQj?P$or(w>q%9r2n27SksL5HBzbOSS2;H$hz7kN9RGN*a;9upa7 zyUa~-FW{PASs`X0b9jEIEEe_P=z$b@cjArEg)6d|>FsE&uv| zBI3<)4(Z3n`+d#{)5Wzc|N0^}eQ3*w+us!Yjd2d?#}NpG7Fanyg&ox>(<$sSG^BK}ipx@(;+#;)*f(Ez6gQ$NPj*3L)~x z*tR7~ON)$DDn(&ofoWN$a9x*NE~h+y&od1}=yW=*Y}+!lRw|QmbuyV&QVQX^9!e=K zr5ubSS(Y!u;B28Y`3I^&JY9eFsR=b5L+pF#=L^aK*f#g>(ClYFch;LgN;z)+Hv(tl zAFutTK2ycY{rf5V)Tg-3Sj>UFFY?Xsy=Ub=oBjP2=NH56ufBeFXx6NSgLXZCbYl7Q z&p#7dx$?5)DlVn2c1vi*g{uem8}6tE@Os(*cmLy_(3%AcPp$asr$cvr=o7E%{xjub z8utI%4qpE8+!W&(1Pe7@op2NVMpw}+Cpx{jFJvx}!plhI=Ct&t;#C*uNTN-rGRMrE zvJ^&88?KW2c%ew@D?|oh*Fa1z<`t_gjp3o=6 zH(0{bp%+*%p@1!=zh%5dy30-;-M(X7yR(apT-x#0QMaEf|GDC<{8a@!Q~EoE%1_?4 z(mo=GE69X2g-0t9hJ`K`WZSc3TU@-lmjUoCS_+j0>O=(pd_PX9k4z+g1^97%4q7Or zW3V^4g;m|_M&*x2qbHqDe%Q^jOc9NS4S;YsWJoE5VHo6cIkMS|REKv7K-jaE3){A| zl)?;$LtZkOCYQ?(xw)>#fb(%(7a^oLr&@R&W7ze}CkCC+SoQaY;`&+s4vZPX{?0TTIR(<{Mkk-qF z+!#xf+r`$(O?-RYfN*5JH4aae`&u8Jft_TGD1cL#*=w&*a z&Eog_$Yvekc^;We*2oXZrM*lhs|R99xm-?z5RT($%Q8oQ41ACH_O+u8mYzLGI#yNi zp?JMI(!N@Z#eX*YOMRw__3PKuzJEWn9{&j^PBhWco@D-leB;3I&aTFi5hz{EMiWPy=j@^E88I4BYuxk86mCt>wFFsGQmm87lyY5H3n7FMQl!%vC1qX#$@~SJ_69Qa4eX{1w@|!eg?3AG+8Hhgl5lLFnBKvS3d*mUW@%F9fy!* z@wPb^01PgZCzG7cb|0RpfOc^7$;YkrSxLPv68L5qfu6m@7haz$t>{!?aZFQOs*QM$ zbh^XY3D;H#UVaP;Yd~~q5?O&+2`xu8msbhu>|9waBb~wtLU%P7X(uZwC{nhy&oE1W zC#X=>#VW!+fp$O~8(RSdKWGj*ouOzvdh84*G!#P}(l?ggahf7}tqREe@cFg0>#y_Bd3K}(*V*pwFsR)6zk3iA_m4$wj?$$mcvHTS3j@B;hmO6@7U4k7j z5U#-T`APJoV7sJvdI70WAHtLPl3@aWVNHKw0@KVts7@N_V76OdUmrq%WmzJVNfQVJ zgk?#gloFXt79oV_?(QKH2?K)8&Q4*s))8BLskST&tu;QMk3=GcQaQskCF!)Igb*SS z@C(qy<8d{FUnr#pjbQj2*cG#$NIqSE_2^D$M;o&f-y3%Tbl^LWhBvzc;$K^TdH6FA zv;I?`qN6=YN!c7a+LM%)h4^OpUcx)i&i_{h^ybBI`)Z)1r_vv_F^Y?%0%B^%*?@Nr)ptL zQaBmJR@ieK(g{sz94@;}6MqScYXssjgv%i?O`UXwhZzLx#cVl)7=n6GSDMc{lBGOrxwxeBC%`V4t6oK+EuI)f3h`-2( zMw1IWSZ*gY-t!KU0q$mGz|>HI5`>BpscJ^ zQ&x)Sd7`tkiwP5|wCgH=qR|38&jT=m!GO>jT-Vipzu&NJTX%JJ44KS&3M0LNjjDup zw6WsCjmaqEQ$7RupR9lY_;WiCU-vM#-S+vxRpV7Z@K*)&X2wYNcPb8)X4R??vDm5H zoNe1ic;1UsD&&n&K%e`>za+nO&u2p`X3rsDB4I0-Iv_Al%1d0uqRH%uk z1=Y47bpo=-H0|A*wM!+x?)Wx0o1~~RjHC`ta z-ue0|paCpezn)!x51;OE#-oJBQb38u1OXiUX&-@90Do5mX+r0&IKi+FfTFS(Zr0;i zT{D$675HqM&aQ4Mib^=RcPe-6J5+(#a0!M>*mV+k@QocCZ-Ym9lqqI70vZxS( zWHO0TN(X}hX<1TAiF6#7_Vx}L2>8)j6N|<0Jdei4Mp0RRS*dN?rl+@8my{H<2e6t3$b1SAqkZJN@sZ5yTZY5Xwy8`v322$((Vp(NuA`<#aV$qFd- znf&|O`t|Gi;L*R~-pN1WgGc`c!i-D(z}XehMGb#H?plz~P5F)(*ni;jb5p+ankKd` z`OkX>`FDPQ;1goWf8L{ae&7@TPfV5_$^HgnKzY@ZJ8j!YN~n&p~oF*F%?pUT4#EN2p>WeUr3<2!RR}(+lU9Iremz@%{9{(X|NW;qp*d^Tux-iMDrhu*!;nO( z!+2H%(G|r!T!>SuN$>Eeyr2Rk2rcM38Yg?a0p*VpPi5#h+DLI_F-;xKOkFyI<0rZ) zn^K&Auc@UiRMZ3QN4OfxGVqo9@cVsd7=mF)B9RD|Wy)YMApL$@0wfasa^l3A!O}Y2 z-8~}PaRkFGB$djDV@De)DJ#)!ZLMO~tl7G&t5cMhmkm5bgb--cv`|V*%d&KTf6B}A zpZQD~>kVu`2@QNcSLHK+|EUT{URTCvKl|B#!M|^t{3E(MPH^w!A5mVOpVM<-?~4F@ zbk-L~FUNEwOaAj7J#*6#PrB*kxi*b{ z&U3-p_yOMWj@O54B>eK1WAl$@f6-`^?c4K{zE`aZv29y&aCrvA*m0OwYyTr{$>*{##NBepx0Y$#)-XW#r*2-XQUJ}Owc#s|HE#IJ0; zK7sb2!UWS(1oq@;NoARr&=gDucLhvb4!*gXqg$ZmfEI_gSgpy)#FpOV)KpE$d7@K; z@AQj17X@@<%{qEWlEowIIqYt#9n}$kz1|8a7>jZ9SH42BtBbXF-_4WX{N{*UBXW$u zZ=M`SO*SMcNkjX{%0fgDT;oX*PS+e$4@7+~( zet%R~t0i@7vk0Dh^FEKB?y5R}b-q=tQ}sRH^S?yeW@fe|_hGhjBa#=;ro+yZP+y&$3}d z|0-SYykoLr#Zs<)Wi=dyyZztdOVMv|xBpvg=>9ib8Rf$$(Ec6rIq{FJ1NQ$i@CQB- z`B3)zVEg*|zvbI^{-oeN<=RI+x=t1%0f&5!NgMycZ~TFqzV#s<{KinsT#J7BL-_9+ zzRYOw!6u*DT3cn_`uG2TG^#qk^0nLf?stALa=}df!;w(F_U8l~%$@6~pA?Q7`g19u zA@hE)NhhC;6b&~t3hpaUNk_zrv z4EatB#R6>-7_H!&37#^Te=b;k0`)M2QlQKb2qCc&0z(R+72z&_s=&MdMYVgb%W7ph z9lR=5y_E0!0zbDZi3^Z~b>(5}GIl^fI?ovh7-8nTcMpK@+}S zzUX#F8a5n^FNDC77GAH1U?51379<&zBwqyo6d!312uq=LUpv#6o`qrx5{W1W_8h_O z(Mg*YaV3pNMDcik1g0CpT?g^io{dZkgd2n%z=maj*YBmcxERy4P*nv(2rNtD^?E2T zFH?Lzw@_78Mxzn6sHiCG^J!^m74`MAr6O$n{re9Ix5tHHniz&fG!i4As#uC3(SBGI zmn@OevhPn(oU}d)fq-8W7Z(fDw4|yk06cO{|J?1y#-ltiuU`R0(i(q{O+a`1zm-=BjpPGTzc`RYKXH%9?)&th zvNeIsXZN42i@RxRrBq>9~bg7RjIuHSBdp(ynejN;X}@4Esa<0w`K8a4Q~ z{T<5uPC}_FjAx&va*iam3#=$`N^t6splGIaO`4YUPM&Z1j{Z@LiWch-C&e4YS&@5j zgL{Cn2VmpPUmp+&w`j@Lc#B-@?~Kx?DwshRrGAaGd;#W6`5^l?Kb|F_dvCBK;Bv>u zCqe;#B_k1hrKQ==c`NOqxslXQA$(O;@pwEWk0sGa;cE9_B+{r6iAxH??Qv=+=$egy{@U!q*)IN{P0F(N!1T5*JF^79nZVBpFGeX)2abbMO^B z9uGoTN-P$`>vb!ZWnr2omZcGmMyRN$kcN?eCY?6eyLZ0;=xjY{<9j{y_4OeG6?h{N zP>OMN_u_K7gvaBNQYwHXm9j&!HBH5`hK6B}#|JZ(j0vwS{GxyU%l}+(c%Tsex#uqQ z=l0yTZr#eNRjb&#b!&E?q9|s*dC$Q2V)tjeD9h|S{K5Vg z$HkZS_lOVd?HsmFfQwgL25BSP|*KW^SCSUv8yVnKutDt_>^XF4Q0NZx%U~zr@ zumlu04PM#%PIfph-*pU8KuWFHFBNN!bgNPi2;F!^NhX?Q!UzE_5I&e(+DDN!7wXo6 z+sohn>xbF8dnN~e@^Mgf=o2I~m5vrkr4Ccy2kAEOw1Jw2^0TBjeppE+1IU?wms-I? z-CPtr%z2fcmhj8|i^`7d$^7zLVivv2;9DZsd_7 zk`@TRhF0w&6^EFT1Qc9;7tPIoEr@_lZ+AB_nFJsePviCZ=uLz%T~J(JOj0+ov^2Wc zh44zum_)i1TxB{!2s|EFMx7|Q-7cXh2DT`N_In`} zG(-W3PQ2}h)rhJ90;w3%RWeTrv^@(nN>ckFxc>#1^M0@rK!BZp&2#X3-O%?oEKUHE zaCN&VTc*Ga6XPXFyaT~mu;f;V^qD0mn$+H&FflbIz3EemQB-8Q7_{hQeg%?42v!?P z+D$rih-CN#R;nAXnx@q6qg=0`##>Azkzy})Z~_eV$&6P4&F#8}84V4z?ASrcs{CKps)%$N(llLlR9wx^1`5TccyTE1#ogV#xD=|l|#qPDI{a(u)yuK!Y9y&GnUlR#&Izs03u0Bh+0$3crWB>J!( z4rZ!rgFB`pqgN7%uQl$@p3LFhLtBW0J|lH%Bnsg_n_zQxd)aukog!gv-^X6GjP}<@ zV)c783w#_HRwJwF2OjcL4DVZ}uj1+~I zHFBUzA@Xg{;lkdyC}NtEmAB;&)?m~5LVU5KB9sRE^#VB&KYLn|2z9_g-B?{FgxW>J zn@LEm`fGLKvC4pZ%v@NE7Gro8+P$aoVBy_$DHTjr52d`EvF0 z`WO%>AgD4szad%32TfZZ)cT!v@&Q>|Lq|W_to(Cq>Xonm+(A>C4r7{(Huw1DLyTsH zidpth5DYwF0UVL)P*~%05XrTkH{=aQh}(|`^|H4>)@_V$xb02{rpNV`eru!aW9!-^ z>5Cy4C}6v>3Z;;_c<0**`L=HuSCJ7Izmn3I3nkrGoCQsimmQMw&A@g}*P7lKnV2s2 zKas58J!h^$PL^#(p!U9=XxPw;k|yZi zU*SFq+&>ew^LTbmckHNkWRG@!!n(tOamL1CN{NN!Xx6L6P#0W2f}fIDxl9|i!n7Bx zAJhfIGD#&*PCvKEk0!bGL3>|aC#-dkN-s^9>gPyNu{L5Ge-FmK-&2o1`FC-c)g1{7 zEI+E6knci*8<`5*jULprO{R+oOiHc5udt;lH9=5lGU)4Tv(X%xMPNKK2d6+!-jj+S zVVjK0upYTSLVfIrs;IyPFTS8y%o)qhZGmg`_pi&NGpDvR-r!HZDDT*&XcYfIwiD-Q z2F`M9G)Z%? zmY}be7)$)Su;5zSp4HUE@wJgJN-DSM+SNahyh`I*X! z9#=;w|94_yBZ#rE(L#yP0rM(8fE6;YslnU@3G5LJ5HR8Qr7SP>bUElz}O$;&gcDML>v867dQhsiK zAF94DNdireGc*x3eG1>Pe*+*-9RL(+1PMeAEb(C|r6G+9YF~05y(d6X{izv8hda)u zKqG-ji8iR&I)CefSv)j-L`H8V`;7&2Lk%9J!S@7Ly%K3Bdq#!sd=UbXr(+ww2#6$P`TE=RD<#5iWuZf-iP_q}FKw44XY}c;KL9BNE0nqNLcAF3 zcyco5&FxL{SV>ria7k#vfQIU5E#~x%jSg$fKiu3T{yPZK-_8k)8Sy{qYNxS?>iZkb zAOAZU)ZC$6Ei2YBJqmC`?yo5R?uxf?Bq2Q@Kxvb3&+Y(nS0Quwq`P0PRP+17BSnc8 zIUQG1%K*OPHym0PRTiKUigMV+S61d&JWIG~T9x;J9$fdWxU(~oL9<-WXeo~wK>~?# zV5i~Ad%bPL5m#DT9oJW~dm`5ZpHB7X&i(TYx8QfGBn35n4GACHDtFo}q6l#T2a9xk zg7nn>Xc=?wZgJP9E0~I-cSH_DVY9a|qTRy(5Zhi`Wqn8=QDlK;OJiuCL||hRcsi5i zzwGML2Kmw=?i|!V6c`v93b7*WgAnOU(kny*@S5o)%@41nZ?+Et?!EAqeMrW5grkPZ z3p*zaEQr9}YZDFG^(rC-`|W+{NIla^Fp8bDlC(+y?J2g1z~%HIUpoaw&gN;UYe zyp)vW;qj6o>}zx5FD+RI2o0?4KKpi6r{59BRR&q;Qyoey8CzC=z*es%O5>=4CSB)J zsxe2Mdw(of2@!*-GEu6${Me)W0Iwk&R{3f&GRJN6(gTQhp<571l&Q5KO|XVnnz`)T zPBYBH33sM?Kdb7{Zywm#U^6@}W;lIaRgr6Yx2}F=3!amU%e^=BUg_7yE=C*n9!ouHO+&{zYk zl+4V*U3H;sM1Fo5p+%JfjT}9JH3@}=QfZE?WY!E7Cnq_(Y({Qnf@(WNL~kMEm6a8S zT@aMFTlRN4o1tX3^2)nQsj8-^f=)`_HYzsk6VQJFQZq1MLLU%Y6-SaP`3!ZIBFuEV zyEk;Gu~Xh2-yt8nbAE`WHSa(64XT5EF(J2VPuPh+SbaEzewv2)J?x);Gygscx}1l3 zeE?Rpy2@;>R9;J4n^NaTVPj(wv>Sj*o`7^sMcTiql)ul`dmzL@w_B9svX2i@=3DK` zfXdry;kz71SUcCAgslj_r(RGNgyuel^TS=8!EY1Js~au{>g$yTvryeu$2_!fi2=qm z(5f7c`tT~41}@k_g&qPw>(8Tuupg$=+w_p9zRky1w zPxWRburE+j%!Qrruced=4LjyYbuTJ+YzmZoF{(o>4`FT6Cp;n#a(DZ)%J2J+CuDw;WwXGonDV^m zy`K@8K7p5J7l55UoWDg4D}3H}uoRU%q`fO4-`Svb93^$7gZSA)Twb2P+JKToWtZuG zZgVxfLSL3KWTaT6nA0~ZRfexdFh~+B6m)hLBgL4;W5k+aRYRJH4fRe~Gf)TEovq=} zaHT1+0>;#lSl9?lUdIZZG@+gO3e9fJvdWB_#d=1!P znmiQdTpDcggxgZU(_AJxb$K79hR=x7{8VY2hU@(VK1m?ilp4p%uQg+YPvjr)vQs#9 z$kiSi&EadRk-E&-ThGYgxbdJO4J(dRr5n4OoedjJ_t3QiqLC0|Ort%I-xaR@I)bHN zKwgB*UPymTwVqvA*`M&;0N!6Yrn>*=% z9O`&esV!k810F*W^khqnf`Vn7iX=X3)M6}lIEAAmdf(K4_q@i`s{s0-P@?dGp4ItqVw^N#Z%n-Mst=NZoMc{6#aY5ro&t{bQhaRbdGroeBq zN91zCn8TCL=ps|MzMdQgzsqrtSOfR2$kYTii4-V#LYbuavaL?!ZN7Gt#5Hh?sk5eQ zQ=~r(fAR^6(znL%T=${Jh0G(-0g>Yx77w!lc1u9W$0jRR3T>iXM!9^LhZmZp5;!Nd z{`$U!cTKogNK%}Y!pYSOA!&*%gWXsL@4%VcCn*iPhAp!7oS}JZe=~WstBuIGPehq6 zl%d^9Sn!A%gV~CA4tMr7#aGBb$)clI1e%_U6b2lv+IprtcGGn_UGM%`aki&>?bzEE z|4jz`ninP;t57{ELxq@)czWHw*|>Vh8+cBFb~m9lt%W?bsrAR|?4@ zdd?7Z(8?!U+U%2v^0`)+F+8e}9on`0tqroBI@SCVDqWajvD+3UF!Ylg2kn1j!tkyo z$%aPR?1=^lYg*atuffE+Oubt*080aho-5Qp_Zo+<($YD6KwtGA&dr9+6Vy2Y5t!g; z6yubFhTeo?#M4+Qy>#g|n%LC5K?L}{v`iTkMI`1)v9tT_x}cdpV}-F8m>79HPig}J zt8M84quqWDrDNDnSdyL*&f$A)Fq)s)jTri=ga}RG`gNEB!X(o15{4&}lc|6|dP-AV z%Hs!f2&SIy?v*N^n3$SDnpIrU#k-!JrIvcS>GE7e%^jV7wH6#SePoA<6>)vSg&{XV zL)kkN1=wTOkd$V#qt!K8C9=0~Y_F_SE1b{G`muBbJ0|B74YR*`!ClTzXM|Iajz z#9TW5ac|eJRlHP^j!Zk+EE#}3{ws+0pJemdd|L3IHpNqQ{H5(YE&D@Xw+?75FlviHV;~1f$ui*$7Z_5sWT2j|RA)zJmM9=foQyu>J!Kuy z9kFv2su?;MBH+TLRQ)Hsby~HHI=U?9SpJbTI`@L}bYnhcU18)PAUh0dK9D??RUt4*UibF(gt zF}Lg?AEk!Qp_@f*b=7)m2_RD&WzAKoc9tfa`rRvNvV>iHCfPZ#yle;iaqcY+h(^A4so zl>@ga!8Tig8oSY7q<;5@E@Ro?!CbBBOuZZf3uRa_y`5D^l>{?B&b@$WIy+jZ95o{> zO_E$@qpl$wRhojLwEFqaWgliIOnW#ElKoWx!h(WyU6a>KUkGXE$-d{!eIBi?NL03X znU3W2L~zH=oZgX(sbn=aebQ&?o+elaF?ol$oY>@W=C)p z@iBuu)nC~w(~pZksCN^?t=h1(v1f~tZWWk&rGN0m+dZDto|V?~U`TvAPmB(l`g6_CnZrnKfN4N|D@nKg#=e zRM=5j+2!NKRC(?KEN@^K4TY5zy=6rBd*^*`4w6_4l|Ax0#N+K=VjgU;+{L9JZ@c&T zZ-38!o9LBF;9o;tj!mK1_`(jC1+N$VC^n_{4+MTr|LJ2D75(Kw_V#VsjyE7d8}?ve ziTpvTA>B8|g73aF~H!k}~ z6|jrY7rw9I0Mr0{6|>LFR#8kh|1L`szVtro^xaJ1zBa4=fEW7=uaP7N zI~;q|n2Jl~V2Xqa7<|;x!xg4h^W#zyj<2d<|BIWVvS6N`1@Bi~XkglY{(hkXEde;5 zfmM~3)`re5EYyPyv(-;0t)hc+sSH^sub;Yb@epw5e=;Y?LW81agh07vcDYgox|TL2 zE=tah^WU-39T%Y`+UvjOo+{oHFfpQ+ep%!}9}P0X)L8QgdL z5VJ&SCn8h!%&ZZEy7DZ$+8u}*kguWs^ihwQ2_Cd$DbRpM0QXp8F=y1GrL)SG9v{C5 zmm%D!qsNJW_9@1TcK2KMMv4dci^l3W4>bG0dmT#B^cN8Xb``WQTDD%Esl2<%`giC9 z0z5w{S>vydlHL)8kx%wL>~F`YZ^wu~&Yj(TcjjZf*|ugYY-*xS^6P!N+ENxAxO#(5 z!-+e|Km&3`X=&Kzrg7IM1<0GP6Wz0O_HO4B$Q1%f5W2pCaGFh77jHNZ$bN$0tU@G- zfufM^Z9{-7?=Y?V(s}Q$fP;MX5!K^q-RIFmm>AFNzbmK_i5exQv`431 zN?JG87T1W^Ah9mwJEobeAFtO-Yi~6o8YDikfa6)Yn7+#>)f3!s6)xvs5FQKTxANE* z**qk{`Ky60`N45S5zef38toW+ZMcA&k`T1MAO9t~nK^1kl zOiV0$ON-3J4~CT9zTu~ed)*U#(VN3Jpf)YpLE>goEAW%50t3bfLX)Z(S|!Y`w`KS1 zT7tVw>rJ(H3Qv(+ypXKa=dwTY&tVTqvSj&z1L))}CTat6tzHAUn_F4X<9EVB<1nlh znxEX-k_&&&T?U+!14C?yf<}m)6A?u<3cuq@e206~nCH^cPUC-UBHyAc=qI=u0X|_O z%KQetT%h%n|9X3R3slKJH@W@M)|P3*r7&ETe(p(?G?ET_d0R36v<;Dd>l(fvfxa>o zbk9rGQ{w14sjl`kcN=TPbprh?44diNbt^U*PSQte7?Vj72yMG$)cm#>k)Nl}JB#@_ z{&5#2#BIfQSh-ShQx^TroCU(b^3)Z0q1oY=f5xZ8h(=C);A+hP?qp(IcyeT~ucVPd z(~g$;V#0euvpAj@5^U@2cH@^FK8=Y`dyDkK=a3dE?3L>cqN}< z{konG+iM(EG=3*3|15F{^zTe@X7&H-&T}Z~Cy0xS8`v1`bZj>-1RRNl-akXAdL%`x z)4H=ZdY!F+tdHDprQW65W=oXxd7!MWyE~GnkEqrd!o!Ud3cD~Q|3rp+BAf*^Pw5h# zvwM^5ip;Y6PZx=P1?&TSahQxN7mcf+cfS+}QNhkjcPvZGrytpRLb=H%qJFcv3t!@a zy)Tr0d&wca?-=@nBunn#ZFR9)F4)nz0wpztHamelmbfn-FPw<&zWlJMR>QrA z9i158WO#SAh$y=Jb00KJd~fJuso7YaoZ#8#}F2@U5G^gDZUUcumR6^0MG5q&cjLSXAJN3B(7Dw1H!o!u6^ z|IMZAk|Mnqit^3)eEYCN!P9tstoTS)XSO0vbTaUy-ls8CnV>(LK#=clR$lKsNo(h1 zS9C_ywGVnp_Z^V?Tq&V>a|}kr0lgH&E8~J2--fe9J!lEErVmawXIVygNko>Z*@f{X z*%-_oP8XCj99HIjkEJOmnD{x&b64TU)OFUK1WSdm)#_3jnd<23T<;9YKsdiG@zfsw z8)9yvBNA=)bkM9dyP8;SQD&OA)z?m&N&CXn0&@d-=><@+)yEgU@J^0I_F5^=bB|i! z1BcMjDKk*(Q`>$yIuNpfKT3*`lGf%I7gJ%7<$e8{3!~5;#&OCH`dY+f?A`*Op&zZt z^u8!%C~%t#7uPnK<3;Xccj<&98j}LHI1`b<2||Zht=VF1ik+-%jrEn{avvLRMCP|p zN$f~eL4d?QFYhA1aodYW8T5sVgnWCZnK?#T^tGCNyEp>!^$J9p$qz-4UL%F9O@4nL zILHJ)=>FdM=k}hSwSgQQeeFuCO5V=9y1j)Urr8`meK~-9w(ir|za>QgcLjO!vg|$5 zAD_jKC%5@{jZMe`X34vcDL2cO*yTrPxI%mt0@%^Pv>l1fs6Q~dk{%z@SPM@Q)>hoj zXwc_zU!7j~&l-^;>sw?s{`U~mCaFJ+z>CSRA_#rOJt}f`_J#HC`3=6C;t@umRuT{u z1lkqt@U?k-G;uJ7-`-~;NmCwt%PAjCmjw$dim}y6MIVhd@&d}Dc_t1ebq`^+GG>I=Iq~KCqJ>VIc~ z-FP+Z(#FIDs-yoz=TlbKh7uaw59&R&9)M&1#S0UF?5oFT&EMSdwZ?u#QL`UsIG4G_SM*KDyH`9$}+B(qXHLx z`V8POzliOS$%(wKo7Jz%g*A+a)6kG*#6YQg*9%KNEnT_Mqp<0KQmgLM%YUnU35Y0D z>hgIoVv-5+ywzxs312qk=$OiI$TzRWS!Lrgp>%7^{d4{BletU7YP5o)r!GaM%>FeR zh0*SfIm_`wKvfDIRq{!6h?$=IH=?7#y<9Era_N#>uVrZAP;jIAc7Zy4SlXeXRRaua z0hagOiTB354J9z;l1!aAID-UBilkzdoRv;l^mTUMD$HXh85<7mSpbbOpQk20|jf3N7jJ z$Qv@rlRSHPSfjowl#sTx?7LAV*m^>T`EM*8|5xSgY!*AP3(xC63iSEZ^ME59@rqD@ zJZ%Q(%85J5P`gQJwtWK!+Wq@J_gLd*^L{blRe2i;om^L^A%1pOaDNvo!QbR0@p`I} zK*Z8XFnXjhdNgBx<@&bm3UwtEa$i8g-yqug);>{S&UtF>HopZlZ9j#A=tMzMlK-h! zJZr7>{b90ie7=+1%9osItKmUCBGnlx6#yGD6VS`4DAM`ht=B{`8KsBFW|5(n89K z|0ynMbu{cPBZ?E@J;VX2r%ux@Tk>j}9!_5d{jSs*nb+7$m~wJld_@}DMzR418K}Z% zUlW%RTP=~>ICf`(Rbv#ZFER$PhjR%JR=MM8mivCje#vCP5kr?9EkHShE`Is+8eZ*Y zU>2~ITTxO_)fwa``Hno_@Zjc*d<#=)cS*FTAmMeRR*Ow{u$(;5BM3XY`O+2A!>^j) zE3G!X>2S?pQF8kB?ZRGnx8m*vfRPV^~a^&m2v0`nNTq%&UvuD^if$dW+cDZdtBuZ5WMzs zriI(`F-HTx3I1dII)E*@)Vu1p`pD*A?V!8sGQoeC`u4^xh*((^J<04uy&4 zYHKad@GE_Hk+z)t&S=vRu9Wgsn+D~)?S8eKh=Knr;omG;b?KtJg-?=GdhDX{Rtl{7 zc+u@FQOQ~M1dARLVnzbWx=XOfTDS_Zy{TFv(1jm{E`0aJ-7Y+8Y^+oLs4*JhB^xE! zU69V5G~cmeid`*S3<2PxMA=i!B7nqF75d2eD+GPLl+edJrdH-ys)k7?(gclQTi;h*9Q z|(E_%1zo6JA{60N@qxWAeJ@GW#PR|^|kIR+GfU>8^CzV!2fAX{+ zrgX}a_}QBYfQ2#uMal{U``Y9`v;5~6=`=_ZSZt+bMU&_|J`%5RxPIOt3cG|5k*)&D#ewX$>*-%;I^co#* zQaE;3LdHEjpmz2>IO)Hx#Z#x2E1~w{dDRb=SoYz zC}4%)bf_4WhkjV}AVYySZg-i^|A8`=H@Gl2*Y7|EOv^WHMNhSx84c6W&{W}4D(_{r ze9IZ3ENI+*XXx>VlFV0Ngu%#K$9{X}HSQt8=NPr`^A1#%mLgwuobgj7hn0>}!Xs+1 zByOV5L4i@CJ|jDbf|G#lvr7t<7#qr(1#T=pdjcpzq@dZ5GgCP`b*9pDnj($<+ybb_ zON8p6>>Kx6RJz`i-X+K+tfU>22)N8=06myF?G~_|T!x)X{?~c%Gz!Z?T%l6Z1+EOV-l7ztr7RyGydloKpKTjR3{{HMnJ!flfm)|U3wh&BJYcL0EQ8ELe zcf(8=qBf`)iC2O?QwMH7TAelJ?@mS9*I#3fau>S|sYuf#hhIO;z~Q!A!FFEn79gXH z^g;AM4<$^$fPTnf)0XV?3iu0{H{(qNrQwhq%-wMkX>#XeOnh{B0l2kg@&6m@Ja(G>kNu={Q$DD+>$=pw=H%G=a0N$Sv6L;yoXgowBn^Kc}a zf|F;Zxs()-!(1~HU6I+!K6>sd*ayLHXYT}7(1RP-!__%On1sXpi|DVC9wPFe@~8g^ z@L5eMRRR`&9@(Pe0%bGz1(=RAW>T9 z-r3B+c{*pCtok$YuSawc$9$=_c2uqYg8Ry1?HdX`CYa#z^bixW{V@phswB4mV{XK) ztO;Sq)UwTgh7RSM$f`vu4n2u7S;#GGVaPXz@>KYa-9I%8yB-TOiqX{g_}IKC;_egf zUwEz^0CZR$*itWNIV1(c`J~dSB~p; zVE!|4j%FW*CRIvsV&BBLzcCc!;sEs`X+hSsbl=@_;TfoDJ!z59QR6Ilu36G-WK_wI z1QZ@w@JlhTJ4C|Aad|gz9ZgHr#dyD@J$X267n_KRtngM3`mx{RA#WMpzc4@9|0h#k z>7NVisw-3uZdz1bj5pjJ1Fb*un#+=LgHIhH(&!NB74~l-XhYMJI*H#xfwXa`j@0!? z;;o5wZ5FQa0YLG*FRW8A;{Tgbdy<>=%v$k zoQDps<=*DUuy`42cwUjEMB#$3kj$%DERJ6i+1XbcA3 zrXSe20%Bu`z~cpHI7AqtywdUJmf~sJ1U}6og?;dxkDOkQEL)(yQwDM?N(Au&i@}+p z^*hgBF3udhr)Z}@j99X7d^b+|PN&1H?pyI32GCH?L2bZ=*62#{u&9^o2XnbSm;lZ(8NLvii=*;wBB;KgJQ^BpMx{%`2w%0e1`+ z;m1G4U60ndu;F2-$&;qid>J2=`l$<*W$q^S0s7CrE+9Hv@vj7#EGz8xVPj@x*#r5~ zhLzqfX6lz&;SJbIJd$EGx*O->?Ao}2FenU#IU&ZqqPpYRHR&^tuPQo*0hD2?R|iY_ zPpz$9E^l{BF7iJ7)6go(1x|)L5U_AgWuTdzF%?k_+*sbjULxjiACLJ+oy4d_H#wV0 zKoo5|&o{h;aVO5d_$j$tw5xDD4YAr_m|oS2S>+V>968WPdAgu>$pXYygpe|yiEt0)#b z=PN(GJQ~j~jD&orb6)odmaYPLp1KnV5^P(hc5rnAuEx9Eu6STpJumk`IBb^CHYT2z zrM`VsvAVHS=EKfNOk2_6<{;R&c9sG-n@lT{dMLY9Mn|OG(jJeC7!a_hDMZ65ORY!r zf6M8{T)^k&q4#!I399m8G;O7e_YBo&x1*_tjsZn7%k$lLxSy0 zg-|NDTD6iVz1i2fwKlWK67%}{OzK;1rmv?{ym_H)@KKqPpsC*NWP22{hJkt$yS1FR zeBzIYS8T07crRoXAYHlW>+Mak)c1cJP%fLLw^ja>ujlQ2HIpMLG$n#8M_E}QfVaS9 z>*Q3yb>mNG#5(eqlRJ%y8h*ZX-y`E2438M)>w2p!boIV|c=52xrfrnNO_+`mC4^=& zU^nuS6=dwrX;{5pW{o>dB+ke^4m|v({C_S1R3w4BF>2jzta6N{7j_xZKt z91$7X!w7mhZ+mTo8|NXZ6{75_-6<$+hQ~rvJC|GMR(aeO@GxKyJl{paq$-%sNN> z#eWJ6^DT^tF1&H)<>hI?ENE6VG58DK^|858_!B^Xea*EiYi`DY+0$ZLK*c|pjAz%t zUH7w<^eq&=znYF!-hr*Q<~uNdF?laz+kI8_3)W{qrUb_EKcVD8n68Mn@mCvt=E)_v zGWEA!>w7T#+R(UipA;(#%imLgxAZf~8<-k$*BX{%tlW7w{{GQ{NQ7Mk;k^akaYt)0 zmy%|L6!~GZp{N!sI6zB-9}T?9qNu`z)yIEX&%-uG9L$#-XGex>AwQ%pl8|RJiqdq@K2*6-r zss+KB@6oIrweBtmjRH$rov*OEYisW?PP-lf+kL?KF~ThI`yUX(^A{G-W0&6C ztOuz-^nyHH%1WA_Y$#L?u})Hg`l+-i;;PeTC`)dsD1BglU`$yFXv%Nvz&#qx&uWn; z?Wh=9EhI)ZwpLa~tyK+W znGDWJ#dDT1!Y;=!#@~*b0)zs0X~_1B^>coy30Kkjsh0fl`r%lffD<`X06=OT%P~zS zJkb6HZ_4Ab8O}w3Yyc^>o@3tOT;tXfLZJ*ot<6>0z0g1&CBI1RNJg1jn17{X`A%-% zwt|>Zl_wXm?hYzpWnF@VRY#)|J8!sf<@Q27`{(})zdrZAXZq2%xH6lhtwMZNfZvni zV+I97H5l3rW>IN(YRv7`PlHVj%)+Dm=Bi?!Uh>GFI=c-1;XAR(s>+ z9e;%-{exiA(4=P5-gSTe)oG~fh(7mjOY%uF+FlVgxQ?E1Kxj?AHDWx`oldijD=yoD zBZtm{z6aw3yw%5!)?b9Bq2LcI3bKiH=LkQXlONoDH$sPtVu=jUlLx9Y3d2Aqs3@}F z{c(%7@dLZ``SAmO7A~K7(VMZN!2VIJg7{-#QO3)6d$C%z#k9A1ORh2nGfGHG%YG1X zM-xLVN+ODcTZL0M7Tn=Q!|}Le^`wd#-V^HnMh=rv-;-L=Dx|ozK=(AvR=1P0BrN?J zN(qRF&e(8J{#XXUQLw0`0d+eoAxm9Q(Zifro1!DGa8^Dl6Iyg;+p_nL1Tfjg7WwsG z4c+AEGn8DT7#<$CUBgd5MkQWDqcr69NR|K$857R8sW^xWc1*KulP4DAVmu)`a$aH15tzAApgtngoKaDC4uX-nb#ei{pVi z%+=_hYPiMb(0Ex~w%~JuU|{8%%ueV_&7|ckI6Kc=M?Czm>Yx2_&OSs`Tc;^e2pa*w zg@Qzw2-`Ory^S{RVR5Z20E;@nP?%BQQC&54R6>`uomrgdUWLoR808K$JwM$Xx$Wf( zOBPR)0Gg#zlU=R(sufI!h@tZDlY)w>e@Km$~-j@nxP~M>Zwu1_FWm^t@n#|0^g(b0Mq54Urb3}|8o)H{OfjHA?0XEKY1KR z{o--Zt#j=r(_gGYyQTgewzx=u8<{8w<*3`YP(R3vG!fO{od%Pe7^JInzIB88x*>f) zAf;?0;fXtdt1mm8i5tXuiDciBR0~&RW1iEeo!zWCpb@ zcYp713-6bGPs>*4s?&TW5pcyDbPRzm7}o@(5gKZ0%F*NrtLDz;n-}wY!K{tEZkm`; z{^9Afv@f1V_gR+{=R#Z44?aE9p;g&G++1DNgSdFI6{beG97#k|Q1Cvue)ao+oKb_x zYVgToGIhh~&V0B4qkroY7-s4tS3Lhf#C7BwViq?#q5%cM(f$!5Xl>Xs+OOFxx?ms>$BNc8_{akKzuhU10 z+#pl}jCI`YRKt zqu46sJjtpUfl0X0M#jcdmzYNVDSM*(O$4ZBo2qFQ5kmH!lNXN$_aXqoAVDOKoaOg9 zmS%&3wmi}bBg|VTYaVLppt9_6Cv94ljPctX=I;za_P*OX2o2lE^8N$^1pDjz(Kl>m zq23@AVAko`OBEJbG}ZYq#&abgq7KgIYfmC!^0^}}84L@$d^B4MMER%5#Fw!&Nc0ku z>sSQKVwtAs3WWiJ`wgJioboCRqZ-f_>v3n!SJaew9gX6c%|8H5mMwk@)%j7m>GO2Z z1B<{qR*W4P0+JD#eH8O&8 zycAm;kU};iETlIJfoB-3YEdinW1xi3mzUA~MFxMQOWVQ7upr3rNAlZ|vA`|6!E7*w z^KFHi>W1GqH%^G62A|p@+UJ8kVZrZ^cbLW@8`rQapsnj2U3$0*EcMXt~uH zUo{?*XyEBy)(be<*>N1A1=y4xKkaW5xG;{yi#Bpe(3T`CY*=vUobXY4;O44>e;><3 z=4C-Q?C=w4v)1XZPJ<&~bc7}1EveYi99e~(i(vkhCAZpgG@I5NG3TI&b#2#L*IQ$YcvpKwwQB#| z+cC<<@$tI`s^?u$*v`qAZ=(JilH}hMB_vZq@(*|ENIMVhwufkjey6cdqR7)ZMlW9` zbB>7DR-)!lN*O9YP$_&g^4Y>FzzM-Rzv9lQu{H4XlMiPOJ!mCMFXCqA6d|${xLT#j zcnpJU+G_<4J#aRT2i*m?jQ{=$yqbPsz-#W&bE-PL6Mh5LQYZ~PM4T(uBOHxgR)ozT||_;@Mc0v_RK)P_#8iP z$q`ocZE>a+jifqcWC?u%Ga2(vna~$Mdf=ElD2eDW-p$V|A)R?%DxtJQ)P3g-z8UuQ zq03!YZ~g}H%Fg!w^&=KXK)`u|WCGlZp@|&@Y@yA3bmB2cyD5n+&D;Qp$kJ3WAUIJ3T8fXUi=*8FktS* z@ar{T97dk3Fx1L@>=t9S|87KuH}recxH|HxxJYs8jYpJ?Db4^2w4wtwE|tx(x3gLV zKrCAse0XIH*D<9S7KHDdH`?xtMX-?*nex@I#G3@c?(IR1OvH~N+{xP^EkUdfWki4L zNO-H|(Dm~}Mc^8~@$;+QVY(3Z`1gz9I)Un~OKbbdKMHG)+IC-g&b8#wnB{IE7Q~gN zt@WhPik3Pw*PFO|e;l7Bmuk$-$)m$yB-kqP|A^I zhlR`*E;OqO_RB?l<{&C%X$TJlrd;3iDI`%NW-rRfeWR^xnF|i}`VJGfEtK@(Us5Wz zrChd`lWLQh->1qh*=KKg*Xb}*MC&9_fBn|4Kd(JMFH}xj9U3PCDXvEygwF65nEW_p z`jE{j(G(a5KA94@Q}h_LqRUC!j{8}UNn3?c57z}VtQxnMBZM-ZuJ4KMHEmHI`ysWkW3-OAqAZ4WYdYW2c?@1gKFK8QfcXoFZF286uquJAeki~0l z=3|ANSZ3+fwJl4A%@<+E(oN8+-k@e*JY$@B$y6IU-zCW`KmmuCWUzh}+O3uT$M2Fg z6r*5&)_lm(>5VeKBLNC zL56oFVn5pta}t{k}FC5s`tgXYnh~Ehbd>T7)H|)?h+Yt zJCw;bSqxWH<7S#imxc*;N$L38(^6bTI{1rfV%6^dDm&|_D5J06lY&SK0uqCQQc8CV zNOvRMT_PP1T@p(7Aky6+2!kLYgCZcE(%msIb;sYm@4f3?cilhk{4+CaX3d)CoPD1C z-TQpb-XXR7Y&0l+@&rZv=+S>N%V&Nq+ShRIOk%*=Fe}6B_nw^%v#hmX;{Lll9v|hp z$l69uX0DV@AbH87>&3$l_A5G6+@78ySGL@Ur@Y_jNf$X;YEIZwWT=|APW0|MWo(wt zNZpH+mVUj1V_wqYBl9`2I-YV(GAxX?68FE_o4?Fyt?lnh*QKxJyI!ANfXta z3Ygt^1r~x5e0T{M&n75S7LwAHh^N)Fs8I$9stP(7`}~`eN@Fse{n}y!?v3|OQgO8X zR&^hphPm$rrm)Bn=shzw3b^;__pA6r+@2!FnGxYC^38}frk@H*_oJ?u2S*s<;$l-s z-YEilJLCuM_;z*iZw6E!G2K<+FjM{Ps5bK1Ya|uu|9NtAQMW(+Lh4;qVA8)8&;+t5 z$k4zp&J8jX_DN597JZf*us)Ks=%APSoRV}Sm-5NE&78jMxasyj;%H2_8h+F_n-)qY zNFNq&z@jmd{M-R)8p?0=1Fuji%+64e=Cg`U#IwhitKt#l>9Y8hB992iXnNbckFQI5lo(x;1~}zRq)Vc3r5_)qU!T!ts$w7D~B)M2y)~A zyn3aI@?m%wARGbFqAL#5#ZLciav(-6zOwTY$!?^R$Tcae||~XXaqpw?0HVoWD76?tl%O%H#gkCR`2I&qa|Lh^MZ7P5g5Gu+j@`lUwll zVtzB|hwWF@@h7>91-2QR(M(8{-?MO&=|8{7=joW5EY}$dj$2m~z3{&p>Cp(t zax{BXXv^-wZZLbWoZQbDezOBi7Aks`x!3YaXBb-4+_6-izd-U4ajMgG>h+{8%Zx~g*FX8%<6ab{Ip6np@ z9p`;_J=o9Q&bP~zhuJ;@>d#E4x5?PpG0*9r|8n{{S1kaIFxJ>MPiS*yu1+bzdQ!@o za*PJZ(`GjwR&{VQc$Yq5OqC}DZE;kM-dSCyFe;=<%3fI*a%+% zUfL`7>Fsl?Gr4Mf{(4T>ms0z(r$rODVh;>hr-&9R_f>l3VAg%i5I3_aO4>G@lk*+{ zJ^g_smec!8?dQt3m85bUEa=qyVhX#`4)>pICQii z|6#WS6X&cGE?ZrK<)g(}?j><*^lo$Vp|iA5UBn2DVz#^b8(~EBCx$r#*F}ktw|Lv> zE*cjQzoxO5@RDe`A>MG9%ned8tH@PmRX)uw7W@H`_G1L}U=<7xLp*R?U;XTMn>W_C zLrVW(1&Ax#F>G{RcHoSAc9YUQK-L#ue~rKDi=)_Gqcjq|Le_G*M6|KAf~gKdY&YeT z|Ha-IpB(sld@jNuxDX1ys7hX?C5=6pV22lIatbA5%W|Sr{_@(4x`6p)!;jvdaiMHerG8fM zcL8pnF-3~sJ-bTI=k4mybT~LR<`biDJq%5}Z<}^Q(MZ~T<%nH8iSfs5X#BYfJiGVIjw@{G%}E zqlGpT%Tn8z+lvP0@vjD`Cc7U#z@X*XK!41Gba}U4yccg;m2o;zGY4+BV1|hKC}DkN zgum;_n~>FWp$+`Pxr_FJbv9H%)@q_#3fHfupy;vh5J#rwpINI5!s8i)n0Q)+Az_w< zesdHYAVYb3*bXH?H_2K4?dadnrVtHW5L|6}H+^zzwXF_Tw#oAhnMXJS)W6$JT0)+x z%IhCPukkdCgnxF3wfBUZZ}j3|scvheFp@G zRolCv?>E>N6$ca&-h&Hv{7A~h9RAe`(1@DFYGqA1&?WHSPF@|g9(L?7mxiSZajK?$ zriQ40_m!pQVf9mn+L|x}-_O%fk_B;^2Wij7skI8lg}l9m{GeFSx83etF{1c(LgY2u zKQGKL*WXY7dlB03CHLpaSG|{6g$(Id^5vRWnNWTqS;w)tcy}ye^PnovNqSFxPcYxW zj<0B=fb_+V<&=fa*;dA$hJx*jKr5aLuAZ@m>*o+{>z}PAsNJ0`9baj(m8t&paew|E&=are&>^}2i^))oxNWeYs zB>9U^Xtu8(|5PA|g-H<|f zrTf`g9h|k~F4#B>3-SV2X~BedO;2mCjf&=u4&K2C06$_x>OpJoC0u~y_cfhBNL=E3 zIy&O!j>`CUrwl!zcOTmJA;%X?XXEOmecXisDE;vPFWF145xWniIe98V;`>WK>iqH5c;Pxr#{pHqWH$>n zHIH`JJ`8*#G}yY7!e_uy^!00o6k}DC|IM_21Nau+>&Q=Y%8)bfU`+A(LKHd7Pap9D z+G&RWs&QO-;bEA@LABhj*If5Z^V+yL{lEhr#2_N%Y8qWIEj9$xtM6zB#Op?_i=X9~ z#XX~8C{Lef&_z+c&=+WfbezfD-og_hJBWUmdM^K<+04SiXazXTr6aK8^amT*>u#?C zSgc>XTIVF_BY*&!bpBUkqAY^%A5mM~DrA`aokK|Hmp+G@KkS+rZoJ4+q6#0WC72sL zVZeG=bo)vxKaEB-j@#7G9CK$Hr_cW?blEmr4e31OU!DI*NRo!9l*+%Gq|@rV?`GMS z+7#oFXl{L(LU=qc?;Lc%n@mbTQEZR}%#-u+3z8AW(2^5TO!yXPvMHH!-?`>dG!#80 z|J32r)e40hZc($UQ@GN45H&?5JeSWRQfG)kOsU{p6>zO4{6!H z>BxiPaU*9S9CaFTx5H}Vr3_Khw%Z~0zr8;PZk$t*pgpHm8T8v4A~D zmA*4x!W@$eO=2s8nH#FI)1#Uq21diyI!kc44{D9DNC_mWRv~e(fZ^or7iekw;tDkt z>Oh7=cOlBuYc7y75+$`Q48j-xxj{&sLH5F=#pGmH+u5D}`RlNoJE)%Gr2TudV|0uq z$x4R)BuQO20&e$s~-jQM8=aRO#A|_c!Db zu@4HPc*JPzo{IvXxY(`WwI3A> z$Iq?)x`T{ZIar~lAtvEHFa(obJ&s70xKYKo+JW;_gvw${;14(H%F5lcC-%qCSoG~r zyN;oOyD7_NT{)980@8e_w2SmY+qWq)FW&2>>!li6$q+!WYzub}>l!`GI7D;?nghja zS!`VeU6hB%CP@~_2Gd8yr8*1`kp+cFjvU>pZEDTiYRL9d$v#It5P@Y(R~Xb_jb2|7 zg})IpK|=av>RXlP=Us@^s1zlr!b!jIzJ$mMk5+VmA^OIB*wgtX?DLz?ZmKLiw}Y%K zpBG>)Is(5gKOO8gtJh5ZP>H|-(@^K)$3<5+^*9%gdWMt}Do2wJvq!MsE zwm0S-=@eP1Y>#!#hhOX9zZ;Mu%fEP6ttnv=xE;~0&cdqy%5}Ie+GVV()&-y`ns((Hp~20(U_2>F5U;09%Sl`_ryD*H#|0i-Hvs2nsgTB z-29KonDp&Tw#OlY)y*j+42D?$?kV>dW?A;R6BE@4TPx~MGPvG`qG}QI*Do%r`UKA2 z+b3?pn>H=){v0WC!16(Q!BH}#Wv{oJ`zih3gt^YW;~wyk3Pc^MPMR)4E@G%v!iqzf z!2kpj(x)xUWvDMvu5sav@vJ>(=g?62(h$i*Mb?R;1!}40fkv;KU-oV9y38&Ilz*7- zc#-EwFZ)j{dZJUcWsO#>GZb;!|9EopB2H)2U zNm$MDga{v(vBNxReYBm$+!$^~mnAYn&MTtYkaBxT?DT!VX2SQB=ycvt!7YHCvs@;q;(_uh2w8hrmOR|cQ*oz z7F6&meZPpJl11F2$nWxSC`X4~LdH(~5&HA!K%=ndS|8=E?1#vFw_4D3;tZN$7l*4< z;TjU8PxbY*g2OMiU#`W_p!xxf4)@^hMqYdJd9FmZ!tdKbdGtT*zP?+vtV@x(I)t69 zN}Jwq?KqqC1jPq)+`q!*jn5HJJj!lhnhX4#SPC4H>|)VqG0fSb$u_SM$lGig{RX%Q zi$tIe{9C|%xFn@dzoOytJ&mm`zKyB7zAh;G+cG){N7eWD2>Zo(4sga9CL{0S&xs|S z`aOm|q?}@2&(Jx)`UxY1m-{`9dCgeQE#LI0W$2}+ev;Ju(lxy+)7Dl#2+9R?U1Lgg zqKnBhDC~#qQm^1iV@y%1OGJIW+oVI8B)jWz$Fs95nCN(agX&3 zB}1FQ>h6f?9pwlIE}%&llJurpJ{$eNFiGCfpMeIbnD!lz?-j=JMI9;TU zh$JPE_uN(qt3xz@W^CIG!LUR3)}*F5Yr?22enVGs%NCCuvHAzLSU@Ns5 zw;2LPk%djtd-{g$WPdKKqniU!3K<|-A9==a;iCqty-FrmJ4yzhWU&mvhIJO5-!QG` z78EXS0jMH2l?PH*r{=k162IBSGM91auvwqBWF{&8H=*zAJ`n*x(hF$gj?W^moy30( zJd=br)@e_#gA47s?f>uF$6di51!qkjxUn{)F%aewPR6&^L)Q(c6Lok7D82PG+#)|=B9thL#ME0VAr)Mbi?gY)h>G65xJzF^(b!2@^D*lDbX4Sl7 z<1(m6z4z)s@%zF*sp_NZo9L~;QO(KHfU&h1*X++d34v0Un_IiEs5@Rqs-v?@j6|j*z zy^Nz`0$nTe_8a}Rb6+gP9EU|OhU^w`d;S*1W$F(pt#xkH#499yUoR@*j`F(P)mc0W z=D+7bgLH^7&gOVr&nD#sp>QrO2s(b9kwsQo+4=nv8-HPu@ZN&S^(BilfG2enK_c$a z8kp2PTCY8sX-axCM`(Y6Chh4;$lre8qW}iF+%GM9P;dRm==3gMY4o_}; zI=y8yNa_v;v{bkp@>RbeVcc@vm)s>z%a(4G=kfb1_}%RdS8j$j05*{I9UT0MN#0Hh z_Hz)4n15om?$cFlVcE8X)I1*LR5A}-cBKTZlh zCvNSGePE}rI2&T&mtmxicnpJOU6>4u+i!pR;XuZojzdo2nahjmTqArWs?1KcS*w>K zk`2C^HFCQdr^3$ys*y9h9qJ=gB(qa|u!TBMO+`_#&SU}}?h#_6%u#pTawJmbA*#3A zJlj4OdT^e9YR?cQwAzEiOGVhn5Z6!9gBzY{!J{Yn z*|^Y4ir*Z)Z!X?D_dAo?W!lc*w4v9wzA6aI;sP%`91z>|we3t|!3*Rba+gXyK41Lg zc6!QsW$Qm?22;Acz*0(sNo>lsAU)B?7J64$ZgtCK41Ag6n-gr5yTp?^j;95@c6buD zQ+S6kcxsoJMo=L);*iYq!x7Rl%6l2)wrU^zLPGQ4B3qPZq&mddV9GwE_#pV+vsP3B zgwt^q@Jn8(p!zWK_N94fTLYw;(ocLZKH1>SQG@wf1g|9Sz~55e8SCy1xhIIU?}X+% z5B-g#GG9)W-;Sv_l%7P?&t2s5yI9kfN9aV)^xZihWYD?#{>uF;m^|*u=3MYwtHeB3 zpeQ6e)iXB|?QJ__)VqUiud6b1RJ0e1Gg=yQ2z>Cc(3W0+oFNT}nWXbd)+v49>Z5G* zC^zPk6op3l5*%Cg8y_yrMqT`t{nzboqa2=m(lyEXZ@g7GLu_dE;-2K#?s|LGPZK?N z`K#mpaY5><*|OyaJYG(fpB5UHdgQC#v43q3?RjbuUFK#ry(*0(&hP zphWn1xnfLv=wh{L!(^O=2K7ZmW~iY7R5M4H%a^VxfIeAiec~L7v2zDOGff0CX`<<_ z{R0ti;CHLCQf+J3qcHm`VAav1yWy753ol$iiAif<;?XG2*F4Oxm$VZ|WZY-bTstZR zq* zSzSOi({4|G=xAk(PM*JbfR%c5oS7oqO|W%goEhafNg`RWhx-(ELRbltJ}?j*(6f`X z^HBx+`}W=3J!ZEB@81YF#}LeN$!SHfb*#FjY;9M|GLRA^mUwL>uQn!!sYTEI`s+2P zII+n>RONRtTwS586Pt9X8+w~VkWLaA;in2E$jfCbhO!^k&G)ZD3H(g)1A8pEVF88f z7s}i3@2%k}0a$*67Uz)w&<9x=CA`799)x-BiR3~McOEMNh-{bYnvZ*TM&eX|suT7z z`6_yN1q}zMimQ~#WLzIxqTL_Rp3wGj37K|Y6OeHVpssd8F7UF&Kz83MOfz=0a&x8$ zWuKx4$c{JbyZJIxcqI*uleIBZsIY_hc%bE#D+M!ysS#0&Z-xWnf#1W8u_COUY7;B! zgZ}vRqGi79O=b*h z#l3?-eyAPm&H6x|W{mH8t`I+%6?m-XaBLv7ZH9^Jd2uUV2uCqIHu<6icb=*L#I^d(4?Oi>bTU|j#wyvn-mhdEr> zcqm5G`#2~g8Xtubc0Oj!TTFT)YLws*#!X-GYU{QSuCnw~g3%=P)dSQO6s%LD8Eo7n zz`h>5E?(o^yzZDPRTi(@X+{-qfON_m66rk~_nz=f06HBWJ{HEsfXS0PWWcJ-q%!&C<6 zLy4*Y=^U{sk=n}mEUOR5X7!52S2A%?R&&z2eCFhGza4Cw!}>J;7@#vC_b?UAjDzvapltIgc};$gC4>KB~5pX)|f zI<{>6IW{djT))~dZa4(HRhaSknzvx~Kf=hx)I^JeAjkM1DN zgzMeHn_Gm6v#2;#n}(gxSW1Am89WulABj2f$-CGf{AXx6sy*cphRu|u&?&JiC|?fd zuIvj!o7}1n!B@@g5XeIQKbP1E)*TZxNbz3;->dUl$1TCoXlBm*nel=>SHEuW7`avj zy;LhgeAcAoX;>+JRyuCsyDmnCpq3&o-$JFu#oY55)9IPfuo42RWWWJxXNNV@Q{_WS zIvPOsf#c=J0H10+z0cZ#(mw&qI6%pRNO>)n;8?dVm%I!2Q_|by$cHY9cA||Aa*guq zetx+W=VjqT#wDmo?5iBEVoWSa$k+NDhYU}FR+5%zukEV)N-TYNQ<9i%foFRHtH4z7 z9**M3WW#l6{hM1b8n{aByoN*8=4sJC zs3SWKO6KcLQP9paflQ^9H`dWCa3p76^u7=5aLodXfo3cja79lDaNB%Ekk+{RwH)p# z{h1e8se+04wplW;JcNY%_NH8+Ry)tBnXiyC5O)d0>GR&38ky7IWS*lVwzH^=s=lJH zddn&=h<-f|XYOsNjxZ2%-oZ`o4suv|%eVcY{KD>cBK5Qc4`fNCxNk7LQo)^da<09gRzbomcJsXD0j4!?NCM)C>uFCiz3;jFfAq9Xz3)!u!0=>TbzJOy< z8CJ;U9Y_?lfAYNzZKWrbu0%Vn;nRb984SkJY+GI-tvbeJQHF+71g1_rG5NMXR~IKn zwW=63b%>Bj*iF9(|CbN?Zvf<(PY~W=QYs_m=k5Mx1vO&_Gr`e!Yi<8Xqriigi)LPE zahs5ix6H^LAYX!NB|}UlJy+~bVT1PRwuBOhyl>M)WUluphN5{uX!e)QR7#ZOO)Z~V z*M4hy({{>13JxWTL1U_OBW3Y+iwAJ;hLk%?o_#-AM<@=fVkcaRU?Q%Syq_37CC){i zk;;_w0(!VY0p_X2trv{! zn|lO0$<)X8>X_+|`bb!H3~)DYjBVdI8pv($5RVQgV#3+psXyOa?ClGFPej;mTU|qZ zbAU8uJRnkw&AWtywWd%ZAfl1=6aIi`gjRv(zHi}QVN^+xgBL*%_jTL<~GxtS*)~K?p0Qwh#WK5jP}q z+Km>#1ifX)eN63j=H)43u8EUxOP_Gb0NT<)R+xaeUoPgBrl263N)o4P0rLAjQRAB4 zYl=mxN1P#FZ4$b?Lg*ey3vmZ%E%Kxw;d);ksPaw+v6dJlQWvF<8eq1FNFR6uAio7! zabaQuAuzf+aH0JYWc;mc7NOhYcwC&JxF1n=YWZcjt(a7Q@QV+E9l{4H0gN!78XY{)7-a|se`Mh z``BfRMq?LeK|S8!mRDdsSp&U_yQi`S%(77f5eGkm5>=%bBp0q0+q-N1ptXuWJZ~jm zP^~-ZVB=0RW6qgP2_?(&DhC3j7vbkIZo%O!ibZrcSsjn_tEV&_;ITiqyYxSL`AIb$ zvor4|dUeCr)l8b!+gPbfohM3_zu1|$PWQ|S9rAXo54w3O zx2W05-i;7~wX|S$^9`?~^JfoU8%$%yqq_P_kI-B0RU+j|u)Ayae0zh)P%-Y2JJq9W zc1=9Y9?;CSeLlxhVhFpo?}UJtRq7A61@sIn%ZYVY%Sa4>#+U_XpOg=Yd`9J4%3F}} zn}$U9x`S>gn21`S{`0SLBuJ#gQ6IOb3QJRLE2DM3y+a0~Zf!s!VQKtP2j7<_R1+Ip z^#6kF7M?#5nmU}blTj9W;s5=}#)>_f8;WO_>rWK}U0f9Sg)9DOB#aor0#Iw;Gtl6j zPSKV=umE(C+o?3Uxy1(^;40$kJS^FK09e>h`oc;65xJ0ew7|{Me)@3Uef1#<(-G5l zR?Ssx@276|_jlcN_#Dt;zVziZ{q{ZNH`uavBF2Gc1Wi2&6;w?t5#tK_D@_8vb}DkIiV5Nj4AX)o%}Lx)_6c^}erwXs<)JWAf|qFu z>8#!bM;UL6JXA9S-mLZi=@Au3%y5RN=zF z`0(08?}IvY+B@~`1zFO#fic|KboNSpQRjWP*U=Ic;$h`Zogr6!=hlE1JLq;tiSyNiR+5@g34oio2y*zrDTI>m@4^=sTie2& z(@`?U7dYIHUF`-fCa23Wo=GIcrla)N)iq{|sJVDocCu>+cYvBV>37>;TPPRJk_u+i z7FS=raDTCs9nU^D5zvnRFc4unCCUy>N+fA3+%6d59Ci#~)XDq2mR8K)UT-zTEN&^& zhl<4c-^|*7khP>^1`M)h|6j-&k0p}`-fTA2hco2o44%pF>S<+DbXOos5MDO)QP|T3?|o{A*6_F00VWo{K=sj+<=5@AG85yO?o5&+<47QIEP(p` z0wu!eSeQR92lW|UhB!cmWrq5yAf9@?`hz=~DPzhSYf|x``_T|vAvR^@8(!1puqpZW zOzqc4;8vm$p{45%kp~bLPG$h4C%Znd(k~}BI2eulcyNHrnMjC*Q9RKojc{KaU}2ehZJ^Eo0;)61&znO^{zj?k%RLY+zRpgr6$stC*})^0 zXND$S!{_M|wDqSVA;sa?9|<#8!VX0j6yI~R)K$uVWVI_Mp=BcV`Mw7z;3&onU@U=C z&=33njXWib$v(nw{V&o?S%sU-zRN;W?;mP*_}Tvg>ItGtj{u*at1kKmy2)5-!u8H8 z+yKwd9gApc;N%<}cDEODuCm=sJm1f~wstwCrS%1Qyxc8m06cJ5JvX~uMiWv($ZR#Q9{?wu0Hu9_omy=eJS!k zz~V#V?>{hEyrMVH3?T%t|3$=*jdc(YgytGIZ+=;q?q5Bk#F5&}wn6kP{GZ{l?DVp3 qK%gGIeDmi30;$rgxW3nxfF{Gr4O@|@%*nvQJXBt5D%8taMg9+)jV#9i From b992bff50e9b23f89c908805d84db02b90e7cdab Mon Sep 17 00:00:00 2001 From: XeonMations Date: Mon, 23 Sep 2024 16:41:30 +0300 Subject: [PATCH 31/42] handle dionae being in the game now --- code/__DEFINES/traits/declarations.dm | 4 +++- code/datums/components/irradiated.dm | 4 ++++ .../mob/living/carbon/human/species_types/diona.dm | 14 ++++++-------- .../carbon/human/species_types/pumpkin_man.dm | 2 +- .../simple_animal/hostile/retaliate/nymph.dm | 5 ----- 5 files changed, 14 insertions(+), 15 deletions(-) diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm index f98070d62bb51..a4950b436a528 100644 --- a/code/__DEFINES/traits/declarations.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -69,7 +69,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_RESISTHIGHPRESSURE "resist_high_pressure" #define TRAIT_RESISTLOWPRESSURE "resist_low_pressure" #define TRAIT_NORADDAMAGE "no_rad_damage" -#define TRAIT_RADIMMUNE "rad_immunity" #define TRAIT_VIRUSIMMUNE "virus_immunity" #define TRAIT_PIERCEIMMUNE "pierce_immunity" #define TRAIT_NODISMEMBER "dismember_immunity" @@ -313,6 +312,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// Harmful radiation effects, the toxin damage and the burns, will not occur while this trait is active #define TRAIT_HALT_RADIATION_EFFECTS "halt_radiation_effects" +//If the species gains good things from radiation. See: Dionae +#define TRAIT_RADBOOSTER "rad_booster" + /// This clothing protects the user from radiation. /// This should not be used on clothing_traits, but should be applied to the clothing itself. #define TRAIT_RADIATION_PROTECTED_CLOTHING "radiation_protected_clothing" diff --git a/code/datums/components/irradiated.dm b/code/datums/components/irradiated.dm index 27b9938915ef2..82f618f45d3f5 100644 --- a/code/datums/components/irradiated.dm +++ b/code/datums/components/irradiated.dm @@ -83,6 +83,10 @@ return PROCESS_KILL var/mob/living/carbon/human/human_parent = parent + + if(HAS_TRAIT(parent, TRAIT_RADBOOSTER)) + human_parent.dna?.species?.handle_radiation(human_parent, world.time - beginning_of_irradiation, delta_time) + if (human_parent.getToxLoss() == 0) qdel(src) return PROCESS_KILL diff --git a/code/modules/mob/living/carbon/human/species_types/diona.dm b/code/modules/mob/living/carbon/human/species_types/diona.dm index 2fb42c6c151b6..7413d0a109aca 100644 --- a/code/modules/mob/living/carbon/human/species_types/diona.dm +++ b/code/modules/mob/living/carbon/human/species_types/diona.dm @@ -6,7 +6,7 @@ bodyflag = FLAG_DIONA default_color = "59CE00" species_traits = list(MUTCOLORS,EYECOLOR,AGENDER,NOHUSK,NO_DNA_COPY,NO_UNDERWEAR,NOSOCKS,NOTRANSSTING,NOEYESPRITES) - inherent_traits = list(TRAIT_ALWAYS_CLEAN, TRAIT_BEEFRIEND, TRAIT_NONECRODISEASE, TRAIT_RESISTLOWPRESSURE, TRAIT_RESISTCOLD, TRAIT_NORADDAMAGE) + inherent_traits = list(TRAIT_ALWAYS_CLEAN, TRAIT_BEEFRIEND, TRAIT_NONECRODISEASE, TRAIT_RESISTLOWPRESSURE, TRAIT_RESISTCOLD, TRAIT_HALT_RADIATION_EFFECTS, TRAIT_RADBOOSTER) inherent_biotypes = list(MOB_HUMANOID, MOB_BUG) mutant_bodyparts = list("diona_leaves", "diona_thorns", "diona_flowers", "diona_moss", "diona_mushroom", "diona_antennae", "diona_eyes", "diona_pbody") mutant_organs = list(/obj/item/organ/nymph_organ/r_arm, /obj/item/organ/nymph_organ/l_arm, /obj/item/organ/nymph_organ/l_leg, /obj/item/organ/nymph_organ/r_leg, /obj/item/organ/nymph_organ/chest) @@ -90,15 +90,13 @@ if(H.stat != CONSCIOUS && !H.mind && drone) //If the home body is not fully conscious, they dont have a mind and have a drone drone.switch_ability.Trigger(H) //Bring them home. -/datum/species/diona/handle_mutations_and_radiation(mob/living/carbon/human/H) +/datum/species/diona/handle_radiation(mob/living/carbon/human/H, time_since_irradiated, delta_time) . = FALSE - var/radiation = H.radiation //Dionae heal and eat radiation for a living. - H.adjust_nutrition(clamp(radiation, 0, 7)) - if(radiation > 50) - H.heal_overall_damage(1,1, 0, BODYTYPE_ORGANIC) - H.adjustToxLoss(-2) - H.adjustOxyLoss(-1) + H.adjust_nutrition(clamp(time_since_irradiated, 0, 7)) + H.heal_overall_damage(1,1, 0, BODYTYPE_ORGANIC) + H.adjustToxLoss(-1) + H.adjustOxyLoss(-1) /datum/species/diona/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) if(chem.type == /datum/reagent/toxin/plantbgone) diff --git a/code/modules/mob/living/carbon/human/species_types/pumpkin_man.dm b/code/modules/mob/living/carbon/human/species_types/pumpkin_man.dm index fc44046ead173..802d3701c9f79 100644 --- a/code/modules/mob/living/carbon/human/species_types/pumpkin_man.dm +++ b/code/modules/mob/living/carbon/human/species_types/pumpkin_man.dm @@ -74,7 +74,7 @@ switch(P.type) if(/obj/projectile/energy/floramut) if(prob(15)) - H.rad_act(rand(30,80)) + ADD_TRAIT(H, TRAIT_IRRADIATED, "floramut") H.Paralyze(100) H.visible_message("[H] writhes in pain as [H.p_their()] vacuoles boil.", "You writhe in pain as your vacuoles boil!", "You hear the crunching of leaves.") if(prob(80)) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/nymph.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/nymph.dm index 6ed5076220c3b..2c1290fe98c73 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/nymph.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/nymph.dm @@ -189,11 +189,6 @@ balloon_alert(H, "[H] assimilates [src]") QDEL_NULL(src) -/mob/living/simple_animal/hostile/retaliate/nymph/handle_mutations_and_radiation() - if(radiation > 50) - heal_overall_damage(1,1, 0, BODYTYPE_ORGANIC) - . = ..() - /mob/living/simple_animal/hostile/retaliate/nymph/proc/evolve(var/mob/living/simple_animal/hostile/retaliate/nymph/nymphs) if(istype(loc, /obj/item/clothing/head/mob_holder)) var/obj/item/clothing/head/mob_holder/L = loc From 18cb489983a54960db48c2ee114e542fc5d1d39a Mon Sep 17 00:00:00 2001 From: XeonMations Date: Mon, 23 Sep 2024 16:53:14 +0300 Subject: [PATCH 32/42] Update _traits.dm --- code/_globalvars/traits/_traits.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 98ec4af48f8fa..a4fb36536c429 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -179,7 +179,8 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_IRRADIATED" = TRAIT_IRRADIATED, "TRAIT_HALT_RADIATION_EFFECTS" = TRAIT_HALT_RADIATION_EFFECTS, "TRAIT_RADIATION_PROTECTED_CLOTHING" = TRAIT_RADIATION_PROTECTED_CLOTHING, - "TRAIT_BYPASS_EARLY_IRRADIATED_CHECK" = TRAIT_BYPASS_EARLY_IRRADIATED_CHECK + "TRAIT_BYPASS_EARLY_IRRADIATED_CHECK" = TRAIT_BYPASS_EARLY_IRRADIATED_CHECK, + "TRAIT_RADBOOSTER" = TRAIT_RADBOOSTER ), /obj/item/integrated_circuit = list( "TRAIT_COMPONENT_MMI" = TRAIT_COMPONENT_MMI, From 2e87000991f2e577c241ba16fdbb662f76abbe7f Mon Sep 17 00:00:00 2001 From: XeonMations Date: Sun, 20 Oct 2024 16:07:58 +0300 Subject: [PATCH 33/42] mapdiffbot From 4d8bd8deb35c653eb7cd2034622a5a077cc3a9f6 Mon Sep 17 00:00:00 2001 From: XeonMations Date: Fri, 25 Oct 2024 13:59:35 +0300 Subject: [PATCH 34/42] Merge remote-tracking branch 'upstream/master' into radiation --- beestation.dme | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/beestation.dme b/beestation.dme index b8de9c0fb4143..10f52ae4c6e75 100644 --- a/beestation.dme +++ b/beestation.dme @@ -554,8 +554,6 @@ #include "code\datums\holocall.dm" #include "code\datums\http.dm" #include "code\datums\hud.dm" -#include "code\datums\map_adjustment.dm" -#include "code\datums\map_adjustment_include.dm" #include "code\datums\map_config.dm" #include "code\datums\mind.dm" #include "code\datums\movement_detector.dm" @@ -2313,7 +2311,6 @@ #include "code\modules\cargo\bounties\assistant.dm" #include "code\modules\cargo\bounties\botany.dm" #include "code\modules\cargo\bounties\chef.dm" -#include "code\modules\cargo\bounties\core.dm" #include "code\modules\cargo\bounties\engineering.dm" #include "code\modules\cargo\bounties\item.dm" #include "code\modules\cargo\bounties\mech.dm" @@ -2325,7 +2322,6 @@ #include "code\modules\cargo\bounties\slime.dm" #include "code\modules\cargo\bounties\special.dm" #include "code\modules\cargo\bounties\virus.dm" -#include "code\modules\cargo\exports\core.dm" #include "code\modules\cargo\exports\gear.dm" #include "code\modules\cargo\exports\large_objects.dm" #include "code\modules\cargo\exports\lavaland.dm" @@ -2879,6 +2875,7 @@ #include "code\modules\jobs\job_types\station_engineer.dm" #include "code\modules\jobs\job_types\virologist.dm" #include "code\modules\jobs\job_types\warden.dm" +#include "code\modules\jobs\map_changes\map_changes.dm" #include "code\modules\keybindings\bindings_atom.dm" #include "code\modules\keybindings\bindings_client.dm" #include "code\modules\keybindings\focus.dm" From 49991c256a487ac788bce2505d0e7e35877d04c1 Mon Sep 17 00:00:00 2001 From: XeonMations Date: Fri, 25 Oct 2024 14:01:59 +0300 Subject: [PATCH 35/42] aa --- beestation.dme | 1 - icons/hud/screen_alert.dmi | Bin 128259 -> 132253 bytes 2 files changed, 1 deletion(-) diff --git a/beestation.dme b/beestation.dme index 10f52ae4c6e75..702a9b1517bc3 100644 --- a/beestation.dme +++ b/beestation.dme @@ -2875,7 +2875,6 @@ #include "code\modules\jobs\job_types\station_engineer.dm" #include "code\modules\jobs\job_types\virologist.dm" #include "code\modules\jobs\job_types\warden.dm" -#include "code\modules\jobs\map_changes\map_changes.dm" #include "code\modules\keybindings\bindings_atom.dm" #include "code\modules\keybindings\bindings_client.dm" #include "code\modules\keybindings\focus.dm" diff --git a/icons/hud/screen_alert.dmi b/icons/hud/screen_alert.dmi index 885ee8fae8697f9396cfd9d30ac901c8b536b264..e0c769bad683034fdef7db774aab93b3abedd822 100644 GIT binary patch literal 132253 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 literal 128259 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%0Av%G9CHIprF_(LqAF;*sD(obn3H%Z>D7QS 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 Date: Fri, 25 Oct 2024 15:21:00 +0300 Subject: [PATCH 36/42] CI/CD From 144ec49a16fe88ad44601a9a8380aa5e667f80f4 Mon Sep 17 00:00:00 2001 From: XeonMations Date: Fri, 25 Oct 2024 15:26:20 +0300 Subject: [PATCH 37/42] Revert "Merge remote-tracking branch 'upstream/master' into radiation" This reverts commit 4d8bd8deb35c653eb7cd2034622a5a077cc3a9f6. --- beestation.dme | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/beestation.dme b/beestation.dme index 702a9b1517bc3..b8de9c0fb4143 100644 --- a/beestation.dme +++ b/beestation.dme @@ -554,6 +554,8 @@ #include "code\datums\holocall.dm" #include "code\datums\http.dm" #include "code\datums\hud.dm" +#include "code\datums\map_adjustment.dm" +#include "code\datums\map_adjustment_include.dm" #include "code\datums\map_config.dm" #include "code\datums\mind.dm" #include "code\datums\movement_detector.dm" @@ -2311,6 +2313,7 @@ #include "code\modules\cargo\bounties\assistant.dm" #include "code\modules\cargo\bounties\botany.dm" #include "code\modules\cargo\bounties\chef.dm" +#include "code\modules\cargo\bounties\core.dm" #include "code\modules\cargo\bounties\engineering.dm" #include "code\modules\cargo\bounties\item.dm" #include "code\modules\cargo\bounties\mech.dm" @@ -2322,6 +2325,7 @@ #include "code\modules\cargo\bounties\slime.dm" #include "code\modules\cargo\bounties\special.dm" #include "code\modules\cargo\bounties\virus.dm" +#include "code\modules\cargo\exports\core.dm" #include "code\modules\cargo\exports\gear.dm" #include "code\modules\cargo\exports\large_objects.dm" #include "code\modules\cargo\exports\lavaland.dm" From 1dc8dd32cefc92c40b65a6d4e1e4f0e01ae7eabe Mon Sep 17 00:00:00 2001 From: XeonMations Date: Fri, 25 Oct 2024 20:30:01 +0300 Subject: [PATCH 38/42] icon diff bot please work From d39aa48bdcaf1bba4d1dd2662209c670a9ccd0e8 Mon Sep 17 00:00:00 2001 From: XeonMations Date: Sun, 27 Oct 2024 22:41:52 +0200 Subject: [PATCH 39/42] Update KiloStation.dmm --- _maps/map_files/KiloStation/KiloStation.dmm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index cfe6d335bd7b1..3fb4cf2d95cab 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -14910,7 +14910,6 @@ /turf/open/floor/iron/dark, /area/security/courtroom) "cYb" = ( -/obj/machinery/power/rad_collector/anchored, /obj/structure/window/plasma/reinforced{ dir = 8 }, @@ -14923,6 +14922,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/circuit/green{ luminosity = 2 }, @@ -23533,7 +23533,6 @@ /turf/open/floor/iron/dark, /area/security/execution/transfer) "fFV" = ( -/obj/machinery/power/rad_collector/anchored, /obj/structure/window/plasma/reinforced{ dir = 4 }, @@ -23546,6 +23545,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/circuit/green{ luminosity = 2 }, @@ -24110,7 +24110,6 @@ /turf/open/floor/iron/dark, /area/engine/engineering) "fNY" = ( -/obj/machinery/power/rad_collector/anchored, /obj/structure/window/plasma/reinforced{ dir = 4 }, @@ -24123,6 +24122,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/circuit/green{ luminosity = 2 }, @@ -39760,7 +39760,6 @@ /turf/open/floor/iron/dark, /area/maintenance/port) "kSk" = ( -/obj/machinery/power/rad_collector/anchored, /obj/structure/window/plasma/reinforced{ dir = 8 }, @@ -39773,6 +39772,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/circuit/green{ luminosity = 2 }, From a248728ee88fbd2bbb7abcabd93b182bc1a131e9 Mon Sep 17 00:00:00 2001 From: XeonMations Date: Wed, 30 Oct 2024 05:14:01 +0200 Subject: [PATCH 40/42] deltastation + ruin i forgor about --- _maps/RuinGeneration/21x21_singularity.dmm | 3 +-- _maps/map_files/Deltastation/DeltaStation2.dmm | 16 ++++++++-------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/_maps/RuinGeneration/21x21_singularity.dmm b/_maps/RuinGeneration/21x21_singularity.dmm index 0400ec6d67f7c..569e6f9d45170 100644 --- a/_maps/RuinGeneration/21x21_singularity.dmm +++ b/_maps/RuinGeneration/21x21_singularity.dmm @@ -22,7 +22,6 @@ /turf/open/floor/iron, /area/ruin) "l" = ( -/obj/machinery/the_singularitygen, /turf/open/floor/plating, /area/template_noop) "o" = ( @@ -30,7 +29,7 @@ /turf/open/floor/plating, /area/template_noop) "p" = ( -/obj/machinery/power/rad_collector, +/obj/machinery/power/tesla_coil/power/anchored, /turf/open/floor/iron, /area/ruin) "q" = ( diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 01aa2185d39c2..705c313057f2f 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -3593,7 +3593,7 @@ /turf/open/floor/engine, /area/engine/supermatter) "axx" = ( -/obj/machinery/power/rad_collector/anchored, +/obj/machinery/power/tesla_coil/power/anchored, /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 6 }, @@ -3621,7 +3621,7 @@ /turf/open/floor/engine, /area/engine/supermatter) "axB" = ( -/obj/machinery/power/rad_collector/anchored, +/obj/machinery/power/tesla_coil/power/anchored, /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 10 }, @@ -3889,7 +3889,7 @@ /obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 8 }, -/obj/machinery/power/rad_collector/anchored, +/obj/machinery/power/tesla_coil/power/anchored, /obj/structure/cable{ icon_state = "0-8" }, @@ -3906,7 +3906,7 @@ /obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 4 }, -/obj/machinery/power/rad_collector/anchored, +/obj/machinery/power/tesla_coil/power/anchored, /obj/structure/cable{ icon_state = "0-4" }, @@ -4164,7 +4164,7 @@ /turf/open/floor/plating, /area/engine/supermatter) "azT" = ( -/obj/machinery/power/rad_collector/anchored, +/obj/machinery/power/tesla_coil/power/anchored, /obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 8 }, @@ -4177,7 +4177,7 @@ /turf/open/floor/circuit/green, /area/engine/supermatter) "azU" = ( -/obj/machinery/power/rad_collector/anchored, +/obj/machinery/power/tesla_coil/power/anchored, /obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 4 }, @@ -16618,7 +16618,7 @@ /turf/open/space, /area/space/nearstation) "cje" = ( -/obj/machinery/power/rad_collector/anchored, +/obj/machinery/power/tesla_coil/power/anchored, /obj/structure/cable{ icon_state = "0-4" }, @@ -19862,7 +19862,7 @@ /turf/open/space, /area/space/nearstation) "cAK" = ( -/obj/machinery/power/rad_collector/anchored, +/obj/machinery/power/tesla_coil/power/anchored, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ icon_state = "0-4" From 09681340fb164060a5b002f98250f625da521ec7 Mon Sep 17 00:00:00 2001 From: XeonMations Date: Thu, 31 Oct 2024 20:14:15 +0200 Subject: [PATCH 41/42] Update hardsuit.dm --- code/modules/clothing/spacesuits/hardsuit.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index a7b4368a42281..23b6bef0f54cc 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -415,7 +415,7 @@ icon_state = "hardsuit1-syndi" item_state = "syndie_helm" hardsuit_type = "syndi" - armor = list(MELEE = 40, BULLET = 50, LASER = 30, ENERGY = 55, BOMB = 35, BIO = 100, RAD = 50, FIRE = 50, ACID = 100, STAMINA = 60, BLEED = 70) + armor = list(MELEE = 40, BULLET = 50, LASER = 30, ENERGY = 55, BOMB = 35, BIO = 100, FIRE = 50, ACID = 100, STAMINA = 60, BLEED = 70) on = TRUE var/obj/item/clothing/suit/space/hardsuit/syndi/linkedsuit = null actions_types = list( @@ -507,7 +507,7 @@ w_class = WEIGHT_CLASS_NORMAL resistance_flags = ACID_PROOF supports_variations = DIGITIGRADE_VARIATION - armor = list(MELEE = 40, BULLET = 50, LASER = 30, ENERGY = 55, BOMB = 35, BIO = 100, RAD = 50, FIRE = 50, ACID = 100, STAMINA = 60, BLEED = 70) + armor = list(MELEE = 40, BULLET = 50, LASER = 30, ENERGY = 55, BOMB = 35, BIO = 100, FIRE = 50, ACID = 100, STAMINA = 60, BLEED = 70) allowed = list(/obj/item/gun, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi jetpack = /obj/item/tank/jetpack/suit From c8bdeef858ef53f53f66fc193b7c502a0d1db19d Mon Sep 17 00:00:00 2001 From: XeonMations Date: Fri, 1 Nov 2024 18:23:03 +0200 Subject: [PATCH 42/42] Update DeltaStation2.dmm --- _maps/map_files/Deltastation/DeltaStation2.dmm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index ad89a5c11858e..a83d1bc4677d2 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -47733,7 +47733,7 @@ /obj/item/folder/red, /obj/item/toy/gun, /obj/item/clothing/head/beret/sec{ - armor = list("melee"=0,"bullet"=0,"laser"=0,"energy"=0,"bomb"=0,"bio"=0,"rad"=0,"stamina"=0); + armor = list("melee"=0,"bullet"=0,"laser"=0,"energy"=0,"bomb"=0,"bio"=0,"stamina"=0); desc = "A replica beret resembling that of a special operations officer under Nanotrasen."; name = "replica officer's beret" }, @@ -82784,7 +82784,7 @@ name = "Replica CentCom officer's jumpsuit" }, /obj/item/clothing/head/hats/centcom_cap{ - armor = list("melee"=0,"bullet"=0,"laser"=0,"energy"=0,"bomb"=0,"bio"=0,"rad"=0,"stamina"=0); + armor = list("melee"=0,"bullet"=0,"laser"=0,"energy"=0,"bomb"=0,"bio"=0,"stamina"=0); desc = "A replica hat of a Central Commander's attire. It has a small tag on it saying, 'It's good to be emperor.'"; name = "Replica CentCom hat" },