From 954e823940b212d7d4b98881edf238c84901ed4a Mon Sep 17 00:00:00 2001 From: Arceniu <129214736+Arceniu@users.noreply.github.com> Date: Thu, 5 Dec 2024 21:10:30 +0300 Subject: [PATCH 01/15] add: skyrat 1984 update compact --- .../SpaceRuins/nova/cargodiselost.dmm | 137 +++++++- _maps/RandomZLevels/blackmesa.dmm | 159 ++------- code/modules/bitrunning/bitrunoutfits.dm | 4 + .../mob/living/silicon/ai/_preferences.dm | 1 + icons/mob/silicon/ai.dmi | Bin 419492 -> 423688 bytes .../master_files/icons/obj/clothing/hats.dmi | Bin 19778 -> 20018 bytes .../modules/blueshield/code/blueshield.dm | 2 +- .../modules/events/code/event_spawner.dm | 3 +- .../donator/personal/donator_personal.dm | 314 +++++++++--------- .../mapping/code/areas/away_content.dm | 2 + .../lockers/cargodiselost/cargodiselockers.dm | 12 +- .../modules/mapping/code/mob_spawns.dm | 13 + .../modules/access_upgrader/code/upgrader.dm | 45 +++ .../modules/access_upgrader/icons/pass.dmi | Bin 0 -> 583 bytes .../loadout_addiction/code/accessory.dm | 3 + .../return_prs/black_mesa/code/drops.dm | 4 +- .../black_mesa/hev_suit/code/hev_suit.dm | 38 ++- .../black_mesa/hev_suit/icons/helmeq.dmi | Bin 1505 -> 1405 bytes .../black_mesa/hev_suit/icons/helmet.dmi | Bin 4713 -> 4714 bytes .../black_mesa/hev_suit/icons/helmet_m.dmi | Bin 0 -> 3836 bytes .../return_prs/novaya_ert/code/voskhod.dm | 172 ++++++++++ .../return_prs/novaya_ert/icons/tesha.dmi | Bin 0 -> 1836 bytes .../return_prs/novaya_ert/icons/toggles.dmi | Bin 1005 -> 1188 bytes .../modules/return_prs/sec_haul/code/cmg.dm | 155 +++++++++ .../return_prs/sec_haul/icons/guns.dmi | Bin 0 -> 1432 bytes .../return_prs/sec_haul/icons/mags.dmi | Bin 0 -> 894 bytes 26 files changed, 746 insertions(+), 318 deletions(-) create mode 100644 modular_ss220/modules/access_upgrader/code/upgrader.dm create mode 100644 modular_ss220/modules/access_upgrader/icons/pass.dmi create mode 100644 modular_ss220/modules/loadout_addiction/code/accessory.dm create mode 100644 modular_ss220/modules/return_prs/black_mesa/hev_suit/icons/helmet_m.dmi create mode 100644 modular_ss220/modules/return_prs/novaya_ert/code/voskhod.dm create mode 100644 modular_ss220/modules/return_prs/novaya_ert/icons/tesha.dmi create mode 100644 modular_ss220/modules/return_prs/sec_haul/code/cmg.dm create mode 100644 modular_ss220/modules/return_prs/sec_haul/icons/guns.dmi create mode 100644 modular_ss220/modules/return_prs/sec_haul/icons/mags.dmi diff --git a/_maps/RandomRuins/SpaceRuins/nova/cargodiselost.dmm b/_maps/RandomRuins/SpaceRuins/nova/cargodiselost.dmm index 05d2bc5fa6a018..2dbef429d2cfb3 100644 --- a/_maps/RandomRuins/SpaceRuins/nova/cargodiselost.dmm +++ b/_maps/RandomRuins/SpaceRuins/nova/cargodiselost.dmm @@ -298,6 +298,7 @@ /obj/machinery/door/poddoor{ id = "bridgelockdown" }, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/cargodise_freighter/bridge) "ek" = ( @@ -325,11 +326,6 @@ }, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/cargodise_freighter/quarters) -"ev" = ( -/obj/structure/lattice, -/mob, -/turf/template_noop, -/area/template_noop) "ex" = ( /obj/machinery/door/airlock/survival_pod/glass, /obj/structure/fans/tiny, @@ -420,6 +416,13 @@ /obj/effect/turf_decal/siding/wood{ dir = 8 }, +/obj/machinery/button/door/directional/north{ + id = "freighterchief"; + name = "Door lock"; + pixel_y = -24; + specialfunctions = 4; + normaldoorcontrol = 1 + }, /turf/open/floor/wood/parquet, /area/ruin/space/has_grav/cargodise_freighter/bridge) "fS" = ( @@ -552,6 +555,13 @@ "is" = ( /turf/open/floor/plating, /area/ruin/space/has_grav/cargodise_freighter/utility) +"iv" = ( +/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/machinery/door/poddoor{ + id = "freighterwlockdown" + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/cargodise_freighter/kitchen) "iz" = ( /obj/machinery/suit_storage_unit/standard_unit, /obj/effect/turf_decal/tile/brown/half{ @@ -640,6 +650,12 @@ /area/ruin/space/has_grav/cargodise_freighter/kitchen) "jp" = ( /obj/effect/mob_spawn/ghost_role/human/lostcargoqm, +/obj/machinery/button/door/directional/east{ + pixel_x = 32; + pixel_y = 4; + name = "Freighter Windows Blastdoors"; + id = "freighterwlockdown" + }, /turf/open/floor/wood/parquet, /area/ruin/space/has_grav/cargodise_freighter/bridge) "jC" = ( @@ -713,6 +729,9 @@ /area/ruin/space/has_grav/cargodise_freighter/quarters) "kF" = ( /obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/machinery/door/poddoor{ + id = "freighterwlockdown" + }, /turf/open/floor/plating, /area/ruin/space/has_grav/cargodise_freighter/primaryhall) "kH" = ( @@ -828,6 +847,7 @@ /obj/structure/cable, /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/cargodise_freighter/hydroponics) "mq" = ( @@ -877,6 +897,9 @@ /area/ruin/space/has_grav/cargodise_freighter/quarters) "ne" = ( /obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/machinery/door/poddoor{ + id = "freighterwlockdown" + }, /turf/open/floor/plating, /area/ruin/space/has_grav/cargodise_freighter/quarters) "nu" = ( @@ -976,6 +999,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/cargodise_freighter/quarters) "oV" = ( @@ -1065,6 +1089,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/cargodise_freighter/utility) "qG" = ( @@ -1321,6 +1346,9 @@ /area/ruin/space/has_grav/cargodise_freighter/trauma) "ux" = ( /obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/machinery/door/poddoor{ + id = "freighterwlockdown" + }, /turf/open/floor/plating, /area/ruin/space/has_grav/cargodise_freighter/bridge) "vb" = ( @@ -1502,6 +1530,10 @@ "xC" = ( /obj/structure/bed/double, /obj/item/bedsheet/qm/double, +/obj/machinery/button/door/directional/east{ + name = "Bridge/Armory Blastdoors"; + id = "bridgelockdown" + }, /turf/open/floor/carpet/orange, /area/ruin/space/has_grav/cargodise_freighter/bridge) "xE" = ( @@ -1587,6 +1619,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/cargodise_freighter/mining) "yW" = ( @@ -1808,6 +1841,15 @@ /obj/machinery/chem_master/condimaster, /turf/open/floor/iron/kitchen, /area/ruin/space/has_grav/cargodise_freighter/kitchen) +"BY" = ( +/obj/machinery/button/door/directional/east{ + pixel_x = 32; + pixel_y = 4; + name = "Freighter Windows Blastdoors"; + id = "freighterwlockdown" + }, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/cargodise_freighter/bridge) "BZ" = ( /obj/machinery/griddle, /turf/open/floor/iron/kitchen, @@ -1823,6 +1865,7 @@ /obj/machinery/door/poddoor{ id = "cargolockdown" }, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/cargodise_freighter/cargo) "Cj" = ( @@ -1947,6 +1990,9 @@ "Er" = ( /obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, +/obj/machinery/door/poddoor{ + id = "freighterwlockdown" + }, /turf/open/floor/plating, /area/ruin/space/has_grav/cargodise_freighter/hydroponics) "Et" = ( @@ -2000,6 +2046,7 @@ /obj/machinery/door/poddoor{ id = "bridgelockdown" }, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/cargodise_freighter/vault) "EP" = ( @@ -2007,7 +2054,9 @@ /area/ruin/space/has_grav/cargodise_freighter/bridge) "ES" = ( /obj/structure/rack/gunrack, -/obj/item/gun/ballistic/automatic/lanca, +/obj/item/gun/ballistic/automatic/sol_rifle/marksman{ + pixel_y = 8 + }, /turf/open/floor/mineral/plastitanium/red, /area/ruin/space/has_grav/cargodise_freighter/vault) "Fb" = ( @@ -2101,6 +2150,9 @@ "GD" = ( /obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, +/obj/machinery/door/poddoor{ + id = "freighterwlockdown" + }, /turf/open/floor/plating, /area/ruin/space/has_grav/cargodise_freighter/trauma) "GL" = ( @@ -2135,6 +2187,7 @@ /obj/structure/cable, /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/cargodise_freighter/trauma) "Hk" = ( @@ -2255,7 +2308,7 @@ /turf/open/floor/catwalk_floor/iron_dark, /area/ruin/space/has_grav/cargodise_freighter/primaryhall) "Iy" = ( -/obj/machinery/vending/medical/syndicate/cybersun{ +/obj/machinery/vending/medical/syndicate_access/cybersun{ req_access = null }, /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ @@ -2316,6 +2369,7 @@ /obj/machinery/door/poddoor{ id = "cargolockdown" }, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/cargodise_freighter/mining) "Jy" = ( @@ -2326,6 +2380,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, /obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/cargodise_freighter/vault) "Jz" = ( @@ -2340,6 +2395,7 @@ name = "Kitchen Storage" }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/iron/kitchen, /area/ruin/space/has_grav/cargodise_freighter/kitchen) "JD" = ( @@ -2381,6 +2437,10 @@ /area/ruin/space/has_grav/cargodise_freighter/primaryhall) "Kr" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/structure/curtain/bounty/start_closed{ + name = "dark curtains"; + pixel_y = 32 + }, /turf/open/floor/wood/parquet, /area/ruin/space/has_grav/cargodise_freighter/kitchen) "Kt" = ( @@ -2434,6 +2494,10 @@ /area/ruin/space/has_grav/cargodise_freighter/kitchen) "Lk" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/structure/curtain/bounty/start_closed{ + name = "dark curtains"; + pixel_y = 32 + }, /turf/open/floor/wood/parquet, /area/ruin/space/has_grav/cargodise_freighter/kitchen) "Ll" = ( @@ -2573,6 +2637,9 @@ /area/ruin/space/has_grav/cargodise_freighter/utility) "Ns" = ( /obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, +/obj/machinery/door/poddoor{ + id = "freighterwlockdown" + }, /turf/open/floor/plating, /area/ruin/space/has_grav/cargodise_freighter/cargo) "Nt" = ( @@ -2620,15 +2687,18 @@ /turf/closed/wall/r_wall/syndicate/nodiagonal, /area/ruin/space/has_grav/cargodise_freighter/quarters) "NZ" = ( -/obj/machinery/door/airlock/command/glass{ - name = "Bridge" - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command/glass{ + name = "Freighter Boss's Quarters"; + id_tag = "freighterchief" + }, +/obj/effect/mapping_helpers/airlock/access/all/supply/qm, /obj/machinery/door/poddoor{ id = "bridgelockdown" }, +/obj/effect/mapping_helpers/airlock/locked, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/cargodise_freighter/bridge) "Oa" = ( @@ -2665,7 +2735,7 @@ /turf/open/floor/iron/dark, /area/ruin/space/has_grav/cargodise_freighter/mining) "Ox" = ( -/obj/machinery/vending/boozeomat, +/obj/machinery/vending/boozeomat/all_access, /turf/open/floor/iron/kitchen, /area/ruin/space/has_grav/cargodise_freighter/kitchen) "Oy" = ( @@ -2702,6 +2772,10 @@ "OY" = ( /obj/structure/rack/gunrack, /obj/item/gun/ballistic/rifle/boltaction, +/obj/item/gun/ballistic/automatic/lanca{ + pixel_x = -1; + pixel_y = -5 + }, /turf/open/floor/mineral/plastitanium/red, /area/ruin/space/has_grav/cargodise_freighter/vault) "Pa" = ( @@ -2763,7 +2837,7 @@ "Qn" = ( /obj/machinery/button/door/directional/north{ id = "bridgelockdown"; - name = "Bridge Blastdoors"; + name = "Bridge/Armory Blastdoors"; pixel_y = -24 }, /mob/living/simple_animal/hostile/looter/ranged/space/laser, @@ -2817,6 +2891,11 @@ /obj/effect/turf_decal/tile/blue/half/contrasted, /obj/structure/rack/shelf, /obj/effect/spawner/random/entertainment/money_large, +/obj/machinery/button/door/directional/north{ + id = "bridgelockdown"; + name = "Bridge/Armory Blastdoors"; + pixel_y = -24 + }, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/cargodise_freighter/bridge) "Sc" = ( @@ -3015,6 +3094,7 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ cycle_id = "lostfreighter" }, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/cargodise_freighter/mining) "Vn" = ( @@ -3151,6 +3231,19 @@ dir = 1 }, /area/ruin/space/has_grav/cargodise_freighter/primaryhall) +"WM" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Bridge" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor{ + id = "bridgelockdown" + }, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/cargodise_freighter/bridge) "WN" = ( /obj/machinery/portable_atmospherics/scrubber, /turf/open/floor/plating, @@ -3255,6 +3348,7 @@ /obj/machinery/door/poddoor{ id = "cargolockdown" }, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/cargodise_freighter/cargo) "Yf" = ( @@ -3363,9 +3457,15 @@ /area/ruin/space/has_grav/cargodise_freighter/kitchen) "Ze" = ( /obj/machinery/door/airlock/command/glass{ - name = "Freighter Boss's Quarters" + name = "Freighter Boss's Quarters"; + id_tag = "freighterchief" }, /obj/machinery/door/firedoor, +/obj/machinery/door/poddoor{ + id = "bridgelockdown" + }, +/obj/effect/mapping_helpers/airlock/access/all/supply/qm, +/obj/effect/mapping_helpers/airlock/locked, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/cargodise_freighter/bridge) "Zg" = ( @@ -3419,6 +3519,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/cargodise_freighter/kitchen) "ZV" = ( @@ -3934,7 +4035,7 @@ Gh Gh Gh JQ -ev +Ef Ef Ef Yr @@ -4142,7 +4243,7 @@ Gh Gh Gh Gh -hr +iv Lk xw JN @@ -4306,7 +4407,7 @@ Gh Gh Gh Gh -hr +iv Kr Ny JN @@ -5340,7 +5441,7 @@ vh vh kX kX -NZ +WM ux ei kX @@ -5752,7 +5853,7 @@ kX Wt WT Oj -WT +BY dy kX Gh diff --git a/_maps/RandomZLevels/blackmesa.dmm b/_maps/RandomZLevels/blackmesa.dmm index 55a3032e83f7dd..f302fd4796e0d1 100644 --- a/_maps/RandomZLevels/blackmesa.dmm +++ b/_maps/RandomZLevels/blackmesa.dmm @@ -1723,7 +1723,6 @@ /area/awaymission/black_mesa/security_outpost) "awI" = ( /obj/item/gun_maintenance_supplies, -/obj/structure/cable, /turf/open/floor/iron, /area/awaymission/black_mesa/security_outpost) "awL" = ( @@ -1995,7 +1994,6 @@ /obj/item/radio/intercom/directional/west{ pixel_y = 5 }, -/obj/structure/cable, /turf/open/floor/iron, /area/awaymission/black_mesa/security_outpost) "aAq" = ( @@ -5465,7 +5463,6 @@ /obj/item/storage/medkit/emergency, /obj/item/keycard/stockroom, /obj/effect/turf_decal/tile/blue/fourcorners, -/obj/item/crowbar/makeshift, /turf/open/floor/iron/dark, /area/awaymission/black_mesa/science_internal) "dIH" = ( @@ -5821,6 +5818,16 @@ planetary_atmos = 1 }, /area/awaymission/black_mesa/lambda_teleporter) +"eoL" = ( +/obj/machinery/button/door/directional/south{ + id = "chemiguess"; + name = "Science Lockdown"; + normaldoorcontrol = 1; + pixel_y = -37; + specialfunctions = 4 + }, +/turf/open/floor/iron/dark, +/area/awaymission/black_mesa/science_labs) "eoM" = ( /obj/structure/chair/sofa/corp{ dir = 1 @@ -5959,16 +5966,6 @@ /obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/iron/dark, /area/awaymission/black_mesa/hecu_zone_camp) -"eEM" = ( -/obj/machinery/power/apc/auto_name/directional/south{ - auto_name = 0 - }, -/obj/machinery/power/terminal{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/misc/ironsand/black_mesa, -/area/awaymission/black_mesa/hecu_zone_camp) "eFZ" = ( /obj/effect/turf_decal/stripes, /obj/structure/table, @@ -6936,10 +6933,6 @@ icon_state = "bus" }, /area/awaymission/black_mesa/black_ops_bus) -"gEm" = ( -/obj/structure/cable, -/turf/open/floor/iron/textured, -/area/awaymission/black_mesa/science_labs) "gEA" = ( /obj/effect/decal/cleanable/blood/tracks, /obj/structure/cable, @@ -7209,7 +7202,6 @@ /area/awaymission/black_mesa/science_decon_room) "hfm" = ( /obj/machinery/autolathe/hacked, -/obj/structure/cable, /turf/open/floor/iron/dark, /area/awaymission/black_mesa/science_labs) "hfP" = ( @@ -7806,10 +7798,6 @@ /obj/structure/closet/crate/bin, /turf/open/floor/iron/textured, /area/awaymission/black_mesa/hecu_zone_atrium) -"ipH" = ( -/obj/item/stock_parts/power_store/cell/high, -/turf/open/floor/iron, -/area/awaymission/black_mesa/security_outpost) "iqc" = ( /obj/machinery/light/warm/directional/west, /turf/open/floor/iron/textured, @@ -8072,7 +8060,6 @@ /obj/effect/spawner/random/decoration/glowstick, /obj/effect/spawner/random/decoration/glowstick, /obj/effect/spawner/random/decoration/glowstick, -/obj/item/stock_parts/power_store/cell/high, /turf/open/floor/iron/dark, /area/awaymission/black_mesa/hecu_zone_camp) "iOl" = ( @@ -8325,10 +8312,6 @@ /obj/effect/spawner/liquids_spawner, /turf/open/floor/iron/pool, /area/awaymission/black_mesa/deep_sci_feesh) -"jle" = ( -/obj/structure/cable, -/turf/open/floor/iron/textured_large, -/area/awaymission/black_mesa/science_labs) "jlI" = ( /obj/structure/rack/shelf, /obj/item/assembly/signaler, @@ -8665,11 +8648,6 @@ /obj/item/ammo_box/magazine/g18, /turf/open/floor/carpet/blue, /area/awaymission/black_mesa/high_security_hallway) -"jPw" = ( -/obj/machinery/door/airlock/multi_tile/public/glass, -/obj/structure/cable, -/turf/open/floor/iron/textured, -/area/awaymission/black_mesa/science_labs) "jPD" = ( /obj/effect/mob_spawn/corpse/human/hecu_zombie, /turf/open/floor/iron/textured, @@ -8838,7 +8816,6 @@ /area/awaymission/black_mesa/science_labs) "kfR" = ( /obj/machinery/hypnochair, -/obj/structure/cable, /turf/open/floor/iron/dark, /area/awaymission/black_mesa/science_labs) "khd" = ( @@ -9154,15 +9131,6 @@ /obj/item/knife/combat/throwing, /turf/open/floor/iron/smooth, /area/awaymission/black_mesa/dorm_computers) -"kOP" = ( -/obj/item/ammo_box/magazine/mp5, -/obj/machinery/power/apc/auto_name/directional/south{ - auto_name = 0 - }, -/obj/machinery/power/terminal, -/obj/structure/cable, -/turf/open/floor/iron, -/area/awaymission/black_mesa/security_outpost) "kPC" = ( /obj/effect/random_mob_placer/xen/zombie, /obj/effect/turf_decal/tile/yellow/fourcorners, @@ -9238,7 +9206,6 @@ id_tag = "chemiguess" }, /obj/effect/mapping_helpers/airlock/locked, -/obj/structure/cable, /turf/open/floor/iron/dark, /area/awaymission/black_mesa/science_labs) "kWg" = ( @@ -9960,11 +9927,6 @@ /mob/living/simple_animal/hostile/blackmesa/xen/headcrab_zombie/hev, /turf/open/floor/plating, /area/awaymission/black_mesa/resonant_chamber) -"mnN" = ( -/obj/item/ammo_box/magazine/g18, -/obj/structure/cable, -/turf/open/floor/iron, -/area/awaymission/black_mesa/security_outpost) "mnS" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line, /obj/structure/chair/sofa/bench{ @@ -10313,19 +10275,6 @@ "ncO" = ( /turf/closed/indestructible/rock/xen, /area/awaymission/black_mesa/xen/village_hallway) -"ndu" = ( -/obj/structure/table, -/obj/item/paper, -/obj/structure/alien/weeds/xen, -/obj/machinery/power/apc/auto_name/directional/north{ - auto_name = 0 - }, -/obj/machinery/power/terminal{ - dir = 1 - }, -/obj/effect/mapping_helpers/apc/cell_10k, -/turf/open/floor/iron/textured_large, -/area/awaymission/black_mesa/entrance_large_office) "ndA" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ @@ -10591,11 +10540,6 @@ /obj/effect/baseturf_helper/black_mesa, /turf/closed/wall/r_wall, /area/awaymission/black_mesa/high_security_sec_point) -"nyS" = ( -/obj/effect/decal/cleanable/blood/footprints, -/obj/structure/cable, -/turf/open/floor/iron, -/area/awaymission/black_mesa/security_outpost) "nyU" = ( /obj/structure/closet/crate/large, /turf/open/floor/plating, @@ -10760,7 +10704,6 @@ /area/awaymission/black_mesa/hecu_zone_test_chambers) "nOK" = ( /obj/machinery/door/airlock/science, -/obj/structure/cable, /turf/open/floor/iron/dark, /area/awaymission/black_mesa/science_labs) "nPg" = ( @@ -11435,10 +11378,6 @@ /obj/machinery/light/cold, /turf/open/floor/iron/dark, /area/awaymission/black_mesa/resonant_chamber) -"pjt" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/awaymission/black_mesa/science_labs) "pjD" = ( /obj/structure/table, /obj/item/knife/plastic, @@ -12214,7 +12153,6 @@ name = "solid thing" }, /obj/item/storage/box/beakers/variety, -/obj/item/stock_parts/power_store/cell/high, /turf/open/floor/iron/dark, /area/awaymission/black_mesa/science_labs) "qLg" = ( @@ -12800,7 +12738,6 @@ "rLR" = ( /obj/machinery/light/cold/directional/east, /obj/structure/closet/crate/engineering/electrical, -/obj/item/wrench/bolter, /turf/open/floor/iron/textured_large, /area/awaymission/black_mesa/black_ops_bus) "rMt" = ( @@ -12913,7 +12850,6 @@ /obj/item/stack/sheet/glass{ amount = 30 }, -/obj/item/stock_parts/power_store/cell/high, /turf/open/floor/iron/textured_large, /area/awaymission/black_mesa/black_ops_eng_storage) "rVo" = ( @@ -13911,16 +13847,6 @@ /obj/effect/mob_spawn/corpse/human/scientist_zombie, /turf/open/floor/iron/dark/textured_large, /area/awaymission/black_mesa/black_ops_bus) -"tYH" = ( -/obj/machinery/power/apc/auto_name/directional/north{ - auto_name = 0 - }, -/obj/effect/mapping_helpers/apc/cell_10k, -/obj/machinery/power/terminal{ - dir = 1 - }, -/turf/open/floor/iron/textured_large, -/area/awaymission/black_mesa/black_ops_eng_storage) "tZd" = ( /obj/effect/mob_spawn/corpse/human/scientist_zombie, /turf/open/floor/iron/smooth, @@ -14021,12 +13947,6 @@ /obj/structure/table, /obj/machinery/light/cold, /obj/item/storage/toolbox/mechanical, -/obj/machinery/power/apc/auto_name/directional/south{ - auto_name = 0 - }, -/obj/machinery/power/terminal, -/obj/item/wrench/bolter, -/obj/structure/cable, /turf/open/floor/iron/dark, /area/awaymission/black_mesa/science_labs) "ump" = ( @@ -14040,11 +13960,6 @@ }, /turf/open/floor/iron/textured, /area/awaymission/black_mesa/black_ops_button) -"uoe" = ( -/obj/structure/closet/crate/large, -/obj/item/wrench/bolter, -/turf/open/floor/plating, -/area/awaymission/black_mesa/science_tunnel) "uot" = ( /obj/machinery/light/cold/directional/north, /obj/machinery/chem_master, @@ -14299,8 +14214,6 @@ /obj/structure/railing{ dir = 9 }, -/obj/machinery/power/smes/super/full, -/obj/structure/cable, /turf/open/floor/iron/textured_large, /area/awaymission/black_mesa/science_labs) "uOn" = ( @@ -14732,7 +14645,6 @@ /obj/structure/sign/departments/science/alt{ pixel_x = -31 }, -/obj/structure/cable, /turf/open/floor/iron/textured, /area/awaymission/black_mesa/science_labs) "vAB" = ( @@ -15954,11 +15866,6 @@ "xPM" = ( /turf/open/floor/iron/textured, /area/awaymission/black_mesa/black_ops_hall) -"xQD" = ( -/obj/machinery/power/terminal, -/obj/structure/cable, -/turf/open/floor/iron/textured, -/area/awaymission/black_mesa/science_labs) "xQH" = ( /obj/structure/table, /obj/structure/sign/warning/no_smoking/circle/directional/north, @@ -44284,7 +44191,7 @@ gdr gdr wAJ dsI -eEM +gdr ugW lXv lXv @@ -47502,7 +47409,7 @@ rTN aSV aHK asd -kOP +axn aVW aNo aNo @@ -48016,7 +47923,7 @@ arT aXH amW azp -mnN +ayQ aVW aGj aYJ @@ -48273,7 +48180,7 @@ aOc aOc aHd aAp -aOc +aSV abo aoy aaO @@ -48529,7 +48436,7 @@ axn aIp aQe aTL -nyS +aQe aTo aVW aGj @@ -49301,7 +49208,7 @@ tLu aLz aHK aFx -ipH +aSV aVW aNo arz @@ -52785,8 +52692,8 @@ uKX iar iar uKX -nzT -nzT +gdr +gdr nzT nzT nzT @@ -69745,7 +69652,7 @@ ozz lEm lEm ozz -uoe +lwG lwG hjV xEP @@ -69925,7 +69832,7 @@ arz aNo aNo qiU -tYH +nqs nqs nqs nqs @@ -73664,7 +73571,7 @@ arz arz aNo kyP -ndu +fNm wHR sJT vmK @@ -76179,13 +76086,13 @@ eKW iYD rbu qXZ -pjt +rfj nOK -pjt -jle -jle -jle -jle +rfj +rSl +rSl +rSl +rSl kfR rbu aNo @@ -76436,7 +76343,7 @@ eKW rbu rbu bEa -pjt +eoL rbu lgz fgR @@ -76947,10 +76854,10 @@ wbL maZ eKW eKW -gEm -jPw +eKW +khG vAi -gEm +eKW khG qNk eKW @@ -77204,7 +77111,7 @@ wbL maZ eKW eKW -gEm +eKW eKW eKW eKW @@ -77460,7 +77367,7 @@ rbu mYF ycb eKW -xQD +eKW uOe rbu rbu diff --git a/code/modules/bitrunning/bitrunoutfits.dm b/code/modules/bitrunning/bitrunoutfits.dm index 6deb10503aa075..7c7f2acc040a9b 100644 --- a/code/modules/bitrunning/bitrunoutfits.dm +++ b/code/modules/bitrunning/bitrunoutfits.dm @@ -4,6 +4,7 @@ shoes = /obj/item/clothing/shoes/sneakers/black belt = /obj/item/bitrunning_host_monitor id = /obj/item/card/id/advanced + back = /obj/item/storage/backpack /datum/outfit/bitrunning/cop name = "alcoholic cop" @@ -12,6 +13,7 @@ shoes = /obj/item/clothing/shoes/discoshoes suit = /obj/item/clothing/suit/discoblazer id = /obj/item/card/id/advanced + back = /obj/item/storage/backpack /datum/outfit/bitrunning/kim name = "Kimball" @@ -20,6 +22,7 @@ shoes = /obj/item/clothing/shoes/kim suit = /obj/item/clothing/suit/kimjacket id = /obj/item/card/id/advanced + back = /obj/item/storage/backpack /datum/outfit/bitrunning/mail name = "Mailman" @@ -27,3 +30,4 @@ uniform = /obj/item/clothing/under/misc/mailman shoes = /obj/item/clothing/shoes/sneakers/black id = /obj/item/card/id/advanced + back = /obj/item/storage/backpack diff --git a/code/modules/mob/living/silicon/ai/_preferences.dm b/code/modules/mob/living/silicon/ai/_preferences.dm index 10958b2adc4f55..fb41b742d695c8 100644 --- a/code/modules/mob/living/silicon/ai/_preferences.dm +++ b/code/modules/mob/living/silicon/ai/_preferences.dm @@ -103,6 +103,7 @@ GLOBAL_LIST_INIT(ai_core_display_screens, sort_list(list( "Triumvirate-M", "Triumvirate", "Weird", + "rat" ))) /// A form of resolve_ai_icon that is guaranteed to never sleep. diff --git a/icons/mob/silicon/ai.dmi b/icons/mob/silicon/ai.dmi index df9059fb09e6af97b2aaa6398c6550824f18d91f..92ca401c3bc6479b29cfd708565a30e2b77028e2 100644 GIT binary patch delta 19253 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 z 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 delta 15024 zcmYMa1y~f{7dO6iccaqXNHg(%lgaX2p zJTISIp!7yrzr~#@A}ASjvMt&sSYXIy|C*}qqxhs(pod(jUWaP0byElP#I!@Ap6F_% z{uf`60pR1=z?Amg<8_#(!{;g5MYRl`GIT8G8WhVN9mCV^cN$#0m!|6F-9|<4$dgo` zSATORTqq$Zp($%!>`gr`$`D<(n*KJ~Z%3wTO+%B9cQcfsB4<3R&ynx_r(oJ5V&T&> z@_^S*dSPj`;dgw~@HDyADD`&7{CBZ5Wj+z-D;R(=odM?sMEMVP8!pAr4dLl%|~i}DQ0ac-4NRuFeNpLIijp@L8b+m&98+u@j0E|KVeET;Rxu=;7!^-RoHuH(QQb% z8yF9ujPjMBasBM3%+*nz*=4Q3N5p;Pi#s-GH=pBMR>x*GU%bt0QENGjf1S7VM@7o= zhQvD9mm@F#51;YCb26_Sa_|IZB?NB0|GIXKPH|sH?iT2ua zX8xQ`x_^iR$u+T0KP5eDl_4?%)hedc7Bnyb4+0dtwp%wXs%;(RMY>}vl(g;a4N+$kypyKV|ZqqdLC@%o3}nZ-BtK1)|l ztT&YbUjLJSIW<>(=bW=A>H&H_@L?Iva;M?y{5R=Tz&|#>&IrG?{zw;-mV_G`A<1Z3 zpoXMAr0}okyR@Z>rb*@Z9)Yta3m76UJ*DD@3oR<-!~)C)2HjyYl(Wy8zoM4bhOk|P z2&J}7QvP8;%Zg@=IT(PD9ZS8K&I?^j;Aq9=tgox^$C?Y)F$siy6?;faOZjQU7WS?R zNX@=~9Z&O~iv5)J6f4Zb@-h>vP?`GD2AJlYW0+2kn+xNu+DO3Qjs+QSD?a%)7bZrz z9_*QY|8x?=|4k`JS4nPEWGdgMs75sBTStp)p89ziK=H>1$Anj-M5jH+=DQpcNyb#u z(ak|5m`45_moy@Re)H87~_a>l3i0 z8=sK`!mpy~pt7t`5a*W94yB(+a~M5(6g@f$@8!r%(3WXDYwW$4_2cJ&xkpQ;GGxa1?@Oa^ElV>Q z(|2>V&c5x=vkq}}R0ovAntQAnZX_v=sNtLF3ZpExqd7ZCIV<@&67F@a_&!09S;vpt z!&}!mE5rQm+xI!gr7zfdfYdoVf<%J9>q!eBW2#|^*4&>UYZZed8_e7hvxuMJiDdP#ib ztA0$N=9c-9AH8`bH3G^?6!ZZHc0^cqdMI+1FQJGYTZw9I05~-7+PRBvxWmmDg+`8~1tJpV z7zO6cF-CTmDR_CyiVv#@RUG6(tg3>2)$Q)}86E8#WCL$H4$1uhDIY(AgXkOt)`!hbSX z$u)*+COyPT83V)N$%%y;#Lo`iO?*?9hTcaA*C}lvUAjlQV2KLtp8dGi!>yOp@)TiU%z)xLgyRl(ya^emQ!Wxa@9fjSI?iNmYJM2Dq- zzxzQ!5qH57ZF~>|%4MNPAHlj^ll&a(*hsmr@fN?%SUEyp&f>#m+*KXK{hOW!`5hWj zcHz7CfGrQ(JTPu_j9GW|aqG%8I>*>|-6X2h>NQq@S@AgAPQ?&=po>4XYCl$MGd^wJoYd7^N&f4ygz!qJtn_G38I7fv)5)6)%=@y1Sfh{}op z);F*(4T|$7DN~|j%e;-PRH*h2Xul;^@CKoz^NVAM9x8BF7r$F12{+83hYCTHUNyGR z>R~5HDcBVe7Q~Hz8?4ylW&^lb(|qY_#)2$fRz!9T5tDhGqbT`UZc(7JjiSi|GRH1a zjYDC*8?;p?I;8o=T*6MU1NyG!ws{HQvm&)eAe+?uu0vB1u|OAJWu8}(>lH94F=qMw zHk!dVs%W$4__}RlSZ0%1-t6@9SnxVsS^?zr?Q^@^*%lQ}PT(EH06Y6@ej~A4`_6)i z3(afu=OqO6n-r+bqzBE-pTp_ELG+=2csc9Qq>LOKJk1#ey4`!e+{r=b*+2IKJ1~CM zjC)Q+oRfA%i`UOYQA1C&1ko{HBea7y_!m$878`U<5MV)=0`-Mp z*TWs;{EmOb?V;nhv8pe4)A!+FK<)~096>)n*bgn(J%{FR!EM>!xoD9UojpMiqP)b8 zwl|gCkbl z+4!;q3mOe<%Z1%_Cvq9&m^WWLEj7~T)RH!p1jPb_ zKB!>=z4+^BUQH-nSE?H@P7&hUSTqycf zn=rp}M;RvH*V3u{GLQ2#Uh2JhvzhZI8S2%596ZH+84(1)$EXa>wWVIKZ!eV>^tbLn zT+Nfla#3~u?4JKKy!Bm~JYILdIvY3?ZHx#G6vL_JVsJ8CAES^7sHNHCtsQ@|9%H$E zm!pHZ=)bxb-Fk2t=4QtfAcWH)IUTWP!Q+k)iVEh$h?Bc2#BDCmBJgSBx?-s}Uh?OTnYJTmk!3DyAtvs|m@( zCW%9!C1+zy7gcdp;j)|P_lXplsz2AOYc$g3)g}kX6oLmSP`5O`)Lg$DetYk!u+jf% zUnqpe&X_lMCb(IMbq@Qqbgu~wnGQI;)k}2v!1k|^Nq)SKpuTZxB^y9 zEjyW|Xs#$0w|aBIcjL`^zPR{z3Px2cFPXP5hI9<*9%fD7aJVd`-?5X)=@oFv91kg5 zkK*-cUQkJy@!p-@|B&}{j-nhBuJ7|h`|NQ* zmWCxgEPA^~fqZ%fV0VxN@Y67D6W^#{35RtmYT#Z- z9TC?F=VkVO2%|$NFCp9?;4wRJ=_ADL+qJVyvunSVXkU`Dts2zkz6G1lRlyW-0Z5Hl znrt|b&wdNqPzgdT4j4f{yjzgu$HhUZuBrLl*f?2;byH8TRo=!w$lkdyvLm}Rvg)XY z309w!=rg0;^GRQvfp{?}fzURSIxe+DeSK3Q+`ZWZzdlBwoL0YD7@ zf)<}H;%8_0t^LRVmOQ;GF})6T>{>47I~=P4@^3#`8a@e3yJ{^YC(5Fys8aX&aY9@v zzBHR9R*vLjW{*AHo|>5Hm&!6#cxjUNo}jy{PSk%v*@3GWcdk&z->0!S1dtfH;JeS7 z(%Kk|#JoB=lR$isUpnl#JyoZg?!nn&^Mo;^^I>M7q2qVjy zRA-easS7R6A?IOU67He@Oxs-dcbdWUwlrcsrCwe8>JXOz#l3`^cI%S&xTJPo!Q=L0 z$?vRBwe#KkCd;MVd&hx|kM6AuLbgkTeHuWzcVt=agmUG#=RhwFXoEPV%1=Nm@|~oO z>T7=5hl=-R#B#A!IbuiF*na6Qe$Cw^tb@8t&8H9{eAOPVFqc=D^!b4(^>hwVTz@<) z4j^dLC4KtQ1}GgxDiYtn&Za90XPi>JKfu?teqEABS2|o5%ZeNKen*>CM6@HQgspx- z`=bS$ZN4|=A{e0Rkg(1~ycW^(tDNu{O=OW!5Xq~(*PG9NJlf>#}o|<7=@cuSU%S!EcOEt9Y=z%ft%19?9*NYI{?cBVtU^lo_|1s5u}W-Vc0T6QI{*Q7xE&HJl;L$3D`1 z=`?cv;H=n;F}pZsvoH0z-PP$dY+a!%|33EQ$!RkPmGw9L(cw={H1=WXH&Ys1dc8(mt>e_#w%Fm= zVIR$1%YiS`4uRlU&q8VE%~x!PSW@WNX@=qXHJA&=H+m3}F7sg9ZKKl4taZXCA2X}? z#WBOvuM>Tk$Ywubc&jGWTOX31 zI+K%yarcdHOHg(E2?IQOq-VL zQR*b%9$s(3*24eqy8cgr(vR$WXvBsf3;vn*jVX`9%Qy9R%6tsE7zZ)n8k^Blz}Ej3 zkcMsC8=bv>LqnMX4d2l&X0&K992Vi120(@P_Ct<-YfZN?GJOp8EJiC$g%JdJ_B#4M z?ykP>Hh^`7{*ZsZyZ19iO*Ukc6_dH*zPrCVzkMS&TKLJ|LahCp>ofh73l{8`NpyVz z40PH8!s%VYYW*mddu92SzNfv|5m7Z;09x>iZ?^0rp5>EM4^(@5+ND8z8uGo)K8ykNYSywUbWt5_>S57cB-;jaForN%MXS#x5QsQ z)6j;57qS#~kw+>`P?<4WQR5qf6(bcCv~`Nv#+&~BS^ww@!WnKj-r;Pp%-?7QnDel7 zI>k5Qh2}Z~rL?DKr@Xc@4yx+0%v!Si*LbcAIZ-_L!pVJhuwj-2^875Cy0)g&LyFtZ z7ZrqL%r=Gw%D?bsSQB2(?3kn?O}^C4=?J7q*_`Sh zZCxYm2tZju|rQKlc5#UCzMvBX6y1Va=vZ-h|BhhY+%G@;go@fJ%b!bK$yf+=$#4;anbfx=mVok~!p))L_{VMl@CVq{)GXpNbd28^!4qF%EWU z^>iC%Rb{j?6W1b`%6~+Dn)(fy*>tadnL*^PMz&o1`!za+hL+uzinG-MD-N53$C5ZU z-}S@Inc5@iCgdS;TD)#48EJOxX$l>~9LM1-PYGu~vE1vBZW92Zb(4q57H4ZoRx%cL z8Hw(KXm;rO?lE#zxOV!0hE9^;F+WwYq*X%1jZppB)8*KQzO0oojE}diMA^`%UK~na zGpr4Ke8l4!+NQnZS_|gN3BZEwMa1N%QnRr+VJav5p0qDUI2GHQ=AC_R!!5Ru>D|M7 zsHQJ*Od{V%8aV$+Irg^vvVIr36JvRw@PTozuL?^@VU)ewxI!OrDPXt5&B$s<{sv;>te;P$LvEOUYJ%A9wP&e;IIN*zl#T3F{qQcFxR(iWCGwO(&)Ps_;=w$ zjH=L}-_>WCH%<$Q+k3PfaO`B((_?Qq7KR$MCt$Fo&?kg=0CswHU7#J5v9SEm7B z;Q_G$)!b^Ocs6o>57Y>YN#xX|EtANl#k!+vDu>JJ#a7w0>jq-z^2S3Pkkizd{Rz?;!CnC-9O2+ zRn$p9tV!?uR!}i33xx41O6ocj3l(cw(lVws;h?n>CBGk^rvE^O*A(vsu%Mxmb%f4E zS%y3+5BEWXD~N}BYHI2)_h4*TRTu>+Qzmc-8~C9}UHn;p7cc&KnCcwtC7}tOG>%M6 zp@7ahWA#VcB5vvr0+ANcEX8i&Ur+~MU>nFY(XqMcr~Yoko#Pt_=vR`hq(DnN{Cb$H zjZH28?j7@Diz_>6%oo=cSs|k8y2aleC%7^>;SeWA3vgV|0kksWrNFb1&bi-1kZxN5 zJ~NCbTso<7AZ;yQiW(_WTNNBm$bkuVj&yg>j63$;7$NboChoK@E9Pp%rGERTsU~l; z$*h@JfKht0`@skui+@yVU(c{P9gByA$pkxnlimc5y^1}MLs0Rr{wnSHQf*gB1+jwg zvKarMlrxi&PQ2N1?`pov9fCBBMK1!7SFh5jcPa|X)fz}dFEg~}dP{$E!{~JszF<7X zIy&MSOF*x*rQe2UgTbenpwO7{S(5CViie&$x@4G}FZ0GfTWHYSf#Df1Q;Lj+{QFqi zW>UkQ9{$yfSwT6^jw$2iuD?@U_A8dS7QM{>lw#ODuJ-?ESkrGQy817uGD6@0nwuq> z({yl-O(A^~8PgMn$=`oBc^0Df1gB)jJ|}(f5JY*`-Jpl)0UALqc+2oAq;L%vo~oA)c`L z!J<6OZfPSBhykRg^g{312EO(Y4I|+iWuWOAxN_s<3BV@3L;rV2ho#f`GG5LtnvAYz zafg=t0HNBF;K`5=c6kJq#E3h|xsZMZ)^0S!$cEWrq0e8kqpsQOVrSMYIuq~ThPuWRrd&>zmxcN2VrR>Bxm}kyJ;37 zGs_44z3j!{aI%Ufw?UsNQjY$~8O`bJfPd8=(E~+XlDYdklgFAq07#}16cyNHR`?L4S3!=|+yx&mT(T5k8*AZU7%fhPndOKlZ-0g^glp}!KW z3E_eF&4R+hz4JmrqkDfaH8nNs;8f4y?Gi!HGvcllo6qZ6hLh{8S?qC%Ed_?iBiGf^ zqd8ZzLz6=abp$-Z!UBnx<~hXFYF%t~|Ex<}M1IsNp*Ba3LiT$MZN zOCIB@$xpuaB>J(T*uX3F%;xC!Q;Cgg0}| z(zv>6NYqM*fnwTfRZk6WPYbC{g@F+@DUK?KTav?DEcJhGSGM~%V8l{SzJoYv6z@w5 z;Me3%74ymOR~8KSxAb^Ew*_mex9dxM-rpxG3FhCaKY~jg*k&0kx8A<&HrHlU`dnj> zUH}?sk}csbI<;TEb{5be$IGY~7ecvJ(9#^bpv*EEL&HCV0?a!(i-o|gC5q18*5u84 zIlWNC(xbJr@Ou!p8TG&=Fb^WD|M46cFl3$k6g-3D1iBn6I#Mb}D=^qqKlh+}Z!jX|)Ka!h2={uKqjOlmU27t-MAhZkeB zU{TZO$n%rRSV%0&hl73VmU(p^ihOb%wVVZ(r+$q&=W6wE^Ps?IYA%g& zB9$O!3p~GsYzu2s-5W+u0f5xOFLFvu#mtnA%@zd))AghR=>=zwtr1rPvc_1+#zy3;SnJ+^!Imi?lJF7+U}+VZW&qkgiYwM72?U$3}7F& zVI;o6v1{HD<3_}VZlmY?@vf@AvU7`V*Zft8?jo0__yY}?RuTb#l7dxc2=A%`)Q7^9 z8al_ml0Ls*22@X_BEU)T*FK0^Omd+byAzRpSRVh(h*~~y`uVsDzV)_9t74yi^TxaL zyPL5N(%YR!c8kr|TgC)28&6jPR-3(E=Z5SB1H<_F z%Wxumd<$w!$o*f^s%rN29}OIq3`&|yl`IM3DwAFK!1u~ta_&pRZ1{F8i)zki>)>4Rv4z=+fmT$x#%q#_L1l(9+=)!Jv z(G-Qo6MwFz5TAa+{6{RP5RM;_yhbTG#MP}A&&^Cqm=>KUmS%blF_j2jFnzLWoT5!w z6mSf@1a?eE)kPq^HwOjOkd8F(6`(@~@p^<^LXtg0papR#>d*-z+x~lp{xwT(G~Wc` zHZo=o|ISOfwSIgMHqx;@tw#ibkM&q|9rUI7?9HBRQl#DN2uR;X7zcSP^Wr?SL3r}o zf+bVjf%%@zFEq5xx6wwtPV!=8FJEqaIk!szpa3NSvVkuxjENb1W=RY;9|p1x{OR`va`#fQko5fLd+`Xr=QC8he2O&|=LM7Wmzyy?{X zB08}S8r(lz;ybw-01`d%nGtSN55+qL2J9WJD}qzS+6$$vjAUU(-O#g0gWivwYNNf! z(wI^Rw7xCi#P3+Vr!}7ud-WHPVhOeS2=ZOojC*fE8=^&+g6QF<#o6HhbpMgkr$el_ z{nu&gF6{o$K!cFFo;}GBvw0wfV2xn&62{4PofPcY-t@gbN+1-&i70~-@el{RXx@j! z$*JFHFJs@`NiBYe)k$tejE-wJ01ej+_1B5nu1&Imw?YTV?-do*1LGSjtam<1?7wfm zlF6m{+3RW$R)A6)~Tc@+sqXp2=(0VsMG<(B{Y=`04McG>|y1}m;*hh+X#tAjXAOhQ6 ziI$Ng(J$yrg7)mAOCPQdw z3U-<>11V0*(^siH+C=OZR(jIGqr+=z%Ni%cn0p{>AhRzw(&k3@lHUWwL4NZ#Tm6;wv?XoejgjKP zY(*2N+1)wq-ZPbnf29H_N?&{FQEb~v3I+)Y*K8;8hLvWO|LFs@wt<378uk0%H7c^Z zNxuhj~E^p=BM0w((cEaZu2KPI&w}Mir zaCd>ahgcnk&`$V^BtQ<{(2l?gpCATe?eELpyL|fi$rk81pLPkjdFj(2*aM3RF87uh zDYprTT{(n3gXG-O&`DiUTe1$H%R!^Q%HF(?*MskU7|!#7?_3L%{;kO|qoWz)juI;l zr=VMcbNqQvHuXImONWP&nKCX#nDk0=%0oo4!;kQ=@s+Vb@);?qL{ER-N(S)~miKG9 zt)~{!kv+hT2!0qE79lZV)b8Qo2nT438%`dEq>G-Oeofr$3K%Dcd)|Ye5tp9FJRzX)??af9w56mL%AG}MUL*bQ`P|rz*5R8x?6afE{W#&fpRG#7;tgGm+Bw&8Ud^-> z;x&aLzi}|Nb276Cl(hl$HZ~8&T5FN-Z_@#aYHVZ@V(}YO8 z9>Bx-0#{T2dnpCG_NS&gvL@9dJZ-6r1gYiAr*S8$xlX4h`-S&-HXogS>f`k~9jylh z!>(c{TR%KIF$nH&-Fn|HfqvY1#b;~hg9C%2{f~I++xv{RLsL2V(osMTAiq6tKnpv9Zf3z!!Dm?<2nYBdpiiG> z2E1js{g-X(NZpHf+U3h`1m?45|m`U7j{731AltoZbwQ+JxJ^&9m?89jt!l0T_#_zQuuDlSjoc4 zkC(=v7J$t}{V(%(j3Bv{s`~Q}z-yYwy5wnwLe*sP+&n*?kD#r7VGB8-y6*{9Q#%s~ zue|-Q@3waETm->-;l)grYyrzMpv5GVq?|%Ie&NvKo)ktQsP?2lb=XKnc)bkO7JHn- zZ6QjEKme9_X7CqOoSyc}ObW(dQts5ZTS7y&5C!5~_on^(ude0=mg-_>z>?M(Js4Kk zwwu_Ir>oxr8Tuhc$UxaT>y27)a2Pzzr;s1gg9RkyZl9GHJKwPLoNahB-5GZ`1eJ?O z6f+K`mp9YUAsp|QJuiBeu04Ei|E@<#4#Ugod&W@aFlT~t64ej%d7wQ{)R#a`U!XsL zM5&OZIVYP&J8%E_n-&kiqv)-`Q-jKbieTPn0u3r>wwt!(w;{ZnvjFeQn3Ayt)Lch`I+Jj z!;yxMezM=ccG zjZxy@=4U4*B*Tr+A;&PAjoFu6(}_Mi`^Y7|!3gE=`q1)v%C%(3(_+ZfCCH z-NABGTosN@?3$1C(E_x7JS#()Y5(^4#7rbqJU;_E>8k||IS%lPp(1mY$XwpE+h*I@ zmN*6|y0}1u52HYpX7IhcID*+kQnK;Pm9gV+2$tzw*CS%_BRjX>hO&? zu*64ez39cs=i1BaByNK zRG#PHe|u}nLC&QbLlT;J{-%q2&nImyR!5K%uBw_%?bZD;hKzP-rq*O@=}Y*;{JbwJ zWn4z`e+M-ou1FUv3$kX^806^SfSYQL>^Pi6;(S;rOcpZ+05!NQ{U{=Ofs_Y%SjC@C zBn1ioQ%p|A#y`6?K(^H*L7DsE>Bz9D5ReM{d8V#P9(MnhuVIC5+1yG(0?9iL<*7wb^a0Tafk2rXv&iK2=x|fzF`Z6)g0; ze@mMKSdu}bnN@>dvq9-s3_retZ$yFDJHpazhpDHY_byk7At4!Ske`u}QP&}Qb6H7& zDdO>c`gYLxl2BLd`#7^!=HBbOA0Ixc@!q0sBMa8l;HwBkN5H#5&fAw!fR!de;KaWZ zA}(#dLH^q$_8=UjLSKiegBG9wB0E_N$P*p$Zrvoxlmn+XqL}W%#P|RO64RD?W5*}Y ztmf^WD5T0625}sog7;uA@N`mvi<>afc%(fbhn$>D{p7PRXz53rlOE2otVE$_$K!{n zLPh0S0XNunt*I6ECq=h-On>Qn8J?-b8E#owSXf?R6gM!;U#x37`JI+E6d~&~egP{(tdX-f zh9nLi0JwS1?MGP>3k&cCW?qBr>(zbrm0-LG3u5jJO9svYoFEWdA-h-ljue8owOKHB zI^g~LEjKTEQ5NJVfd7UOIESjks1~xwm$xhBd+M~p%D47n`2GWuf8EBtsHEvC9p#UY zdzAmkq_x*j(2aErxTJlHZ#o#rokiVEOrv>BHc0;zN>wTfS1*vWLwR+ULyE zt9-Yc9b~;_MVxm1Zx*pbj0oGe)-v;-;1#c(0q3J<1^EiSUjwrQPRHC){@u&B?SI`` zqcp(zI7rU}bYd@nGLUAo((*B;;bwjJFY^C1A}lBPMth088ZMABKq_=26pS?T5^@q$q)BsU@fjuqo{Hrs$v9e! z3Ps0ghZ?YRQ_6??PdvFds37FyE~HBxIzMXmmdOrH?+k0;cvwOZaH%~O9o<@fN|B1_ z-TrU>Kn@7HZ!OG&wRlgeD|c#_^JNa}%CgiPu{gkoBK5Nve1#{->EzW^am@0d`a-a{JX?zo8=-wJlQh2hB6@ z@sLGG@5aFRuLePU%J68fw9}!f*)3tFUP0>~Zf&rw(ziU^=h2VT(t2V}kBrL^MHn1| zaz9{)hlhVZ{^pfvagXI^_b*dW%0||S^-+Ynmz>~fT&?jdq0{oobxDuuVXK4!;^NCU zaX{Zi?gx$flulbxQc`v{Ts}0!*jST|srPwq6U}T4{m`1i8FH0s9J2zca0J-kV67y{ zU`;0SH|5CINQW)joJ#pkfcx>hY4fiKo5PIqdLh0$9}2_|D{aP$|EsSo)S^u}_)WwO z>WRH0Y76$c`8JXi(*wnY@_m2;wyYLhLAfZUtEIMbnjsugP6zmDq#izMDju^jGPncw z>nxPEy1xF}taB|fZJwYRYsfAFIo}@eEPA8S-$^`UL&s77fg%qg!CR&{`rY@yKgOjd z^sAKv3%*x>Vx(bt?1y3#p>0haSy8|_%UGvmN;#clIkLqSfP{sgfg5HKtZa{N_6QhI zau6$G?u3dg^xS?`%kj=5(Yb>$ z!^3-H&{w!D6ohZaGi+?&e7p|z_gC!Owob#XS_fa(2+sp!rqD{qxeQaGKJd+L@XqG7 z;y5ON)N3T7b1{>eB!$fZh~e7t_^@!)FAHy>bY~Xfc!_A z5~Tb8&&4vq@@~M!6^*G|<>15gyTf$InI#>3B+az-d*ZFTqZ#Tnvm*rk?*K!;xh`t< zCQ-Z`6+GE8sD=Tl1H=ygd1)vkYfiI9tlXnnlahCVZnnKU2bWe_r8Hrc%V!MqlGQ)q zK?BbKvAOd-UoeWi{{!Q|-TmQhR*Of2*T^$aO=EA=7XR`3jFjuvy?4+`pL_c$9*M(5 z>(}L}2XKpv*+SAxU^9v&n%P5x;{!4fC-hNimlvP1EP}R_eU7lGrv9{MHSr&QCC~{` zz(+=G9;nYoz|T^-vF`<{e0LeulqWGjKn$>hR0L72pdxk0--u>jr1Xz?S~_}6UgU8( zz(=CS!t51G{E0JI4L-5s>frFaOsl}*oL=H1daxl+rkB$)%dpk~W}?w~P*XA&H#bT} zU0rk5GjTUiFj)k+D+lY>Ai%Lf$NZaUR{~gQbdfoOMXdX5UHijFu!6Rh<4Azu+}zyQ z;>T!CElS??7#8lEp+BRj%nIKGe_z|K{g^tFp*ibeNe<}jWu>a1xjnZxIm7zR-yAlH>ZrG1i-JJD2+uqr{| zR*t=)BzlVR7xRX<Ld*{D+sK-Sgic&;W} z3#+X3H=DHj8&Dbh??)6H1{>ym1wZMlE6_?37QjPnz@*HoCz4dn13w38=o9h225I(bHu>zz*9hK$*ryet% z-;$8_x>F2@4?BK{yfTXH@@|+O6 ztgx&LVyBkYV(acA<1 z=DX%~th{`Z3V7Uv(E*P!`VsSx+QCcKbCFqUxg*uTQ#++|JGdA@f&&81@>3oG}jl&lw?OR76Y1quS>gPbSp| zlGq+G5+H(>g!F&{Zz$$OBVow2yIP!Jb<-?)$%1@MtWPk4PSmmNs?h5_rOWEZ0+F62v=2SPm%mgR?_ z4^kEypxdSn5PwOSn-WRfg^n=v1ON1IL42|dpqgw(t{J^RQX*B=blgelU?n(Bi0w-I zLR$>~*%BYsV?PlLZl89Pvm@Sv0Pllc^$x@fMV~eFpl7HG;}1lz_TK;k(RByjqjNj{ z1J^E))JF=P`bejeIVirP7uiphVR$}GMToD;O%Q)Wc`E#>197q}*dD9Qc@3Q&0RH=i zI*Oap{R-9P7_azbwqct27X{=;ivC9(aFlnD+83uIzESk);<$vXr;ENq4(uZ$jIt}V zU-b$K@Y6mM>X{oG&w{1Oss0~!#0#ngLuG$$B*Re79|xzZny<>CfBMqm^BvTGtT4q+ z(A94yj`RDQjF21b9#5gABPv#PdiJIX=KZ z!XPOn6()<0vYy^jn7WI5uYEJJ&_tojmVu)XiA zKn^QbFbygP?+;T=0^z|-ft04N>qF<1ca4Vqc}<=HyMcZ*)H2*Zjyry!U*G1m2J2Ri zyDh*+vSo_IwGR>r#)ZHm5NA-D=ISZCE?LM<>;xmQp9QPN)WMI$$7AplA1vI5W-pP`B8Qmi~>9YD8Sb)F+35v!vj$A*zb7VB9DPbPI?geu8Q zglWAQ|79bhxkip#3Y~_t)uNUqoINDg@yoOj{6oVgv^_rKWFK_x4Z^o=sG-1{D zqm24cc8Rkeed)51mR6{i@r%Uy0w0cz%!3*iE23aYCtmJD4s^eCbo>j<-LT3*@0ZCK zNmXqK84ML%gea~?NNdVO!?HbyV+8v09JUY7y z{(LU)#eE~etP~gt&x|^N)b*`Ro((sc{QdH&Q8(k$MOXhAI!gcI6r8Q$YOw6^jr^D3 z;YXeEr>#4+yk5qK(d3fgterO=+@$lcm(MG2Bj3I~CwU!k4wviAk*)u>Yj1Tn$1cP2 zK9Pl8#fZdq;2G*STb-HS#`5owX~^6zb>U2G>h9))!xM_I7miHYR}@+Rpaovb$!L3J z9%gw%2sa;krIe2B-0Xje@Sd@mRU? zeCgP2DC#3Gav&|L#B;}LAt)`XMKvnTAr@_znaF7uL30D=GUPnkoWC}Nbb+)8Lph33 zRs2+rn2PG~&5`S`SAlY4>Lh8Td^ZU+fSiH?yLBicFX1E-Qy8uH-D704T%*^nlcUkA?zM+U&`@&gi2Iz0ev9l%$>)~C?y?_*@9UV7cV?yVTA{tBIsW<mQKa1(Viak^@Kknl_t>2HJy@$mfbDxJjRTXT~MYlRGTF2g;Z)M?*-xL(MiLdEu z+he_kbr)tw6t>=>n=k8rc`7?L|FcN~4;*EP;RGGS_y{v_U61O!+nztSa9)2_*OqAv zYNo5B#?#Yo>Gd|+Y`-VRKMx000Q6g^E$nK0(506X`3k0_oc#3q%NYU`Y#}dW`dnEOVny8)00=tFAxJO&be2CY(|`Mxfj)2Ce1xlwhFT93xVfW8m`6r- zS!xZ*g;CH1kgH%#?HoJEn3~djW`8Ok5FFx4?_g4+!~yyQnD6a%XC~o**$*cukXF0n zif3&v=O$*OW_h@GZ}VE%Da9I4PCYvv-#nta1vEx=Z;<%D9wkYURoVIey(?5|u|N@K zC6&?lEt$~=lqZ{tR5bpHX_S;KQiN@1`+geEOh0CnFtuOM2|rx0bKcHsRcG`!@#p1Z zV(T(jHpgdYsZ8KNsnBos$2`R{ETtxrWoM|q>DuiIi6k~P&Z9TOs&^As9>3t ztq%Eruo(-$k*pO0SK?4Qo`ts>H?HSfbhi^8T!Kx1mBa#?g%6nUq_=6bsW}Bxq3cS` z-P|@xFR`9aB=9Gi)v`vYyuvtVlggFDJwJc4M`inF3Wv?u>he^F`Dt&S=kZw0Yw9~= zyV+*1hEkwxzfu-dJ8Ei=c;2J8gwaXHhi2|n*`Zfkj@fhym-joRP)3 zz~)(GH2J5arOvhW@jN-8{qI7H3Fs&Uh`N+g4G722q{SYWdBMoJV%X2yKf*N8i88 zJ=l~L;Xi$QjjYU0@K|pYY?yiNeIS)edyIa}Rkxn}pqzXov<&kd%4CJyyW%xW8%4~r z+T{8kD^TNa7_Wj;esVVWRHz8+Sq4$gO&@L*}+ub(vUhzE;x3=!@cH$WW+*G9`{ zQQpcKmrBb)Ph^ga0z`TF(UN=_UX`=VpmK3RlU(rh@StZGz-wwwf&b(7N)L&rkcD`$ z`BTMq9EMwjg@!>AX%g_D8mO(SOM#A#PTFAEmD)r=fjvQ!(`gsrURPE54wmN&h&6;b zi3n^kN9VZpr~m*4FxZH*%8`iH_Cvuy<5uk9!3;X;Vh`@g?%ymLS} z*h7ZBekLTb{^5hZOIkF7lTgaWcI3}3|5F#EP_gbk$0Llrn$9d+$l0mh)x72^v~{n= z4i3QkEqfh&XZ!;GWPbcQrm1&9Iht&>M^NlrQg&cykF1GDh={kax@lzP>nin@LnQ_> z1PV4XwB7#rce^JrDf=IL#8qw5Xgj7_#>NgTeK~!AnVLPlG7~{m_>$NycBwO_dw3a| ztrC2c6aQU|llL{9Fl8XL*p5G988PSd*w`|p6V72Br{d|ul1u*9z0`>FtPP}OD#C>n z*EC-TrmkKyZ+o+HV1W!=NvRb(q;O0bu(Qv51=+i!19=MS=-RN8kUqD%bEnwpl3K3xrJu7{gM45WFeoJl#muUQYz|avt zXAUJ`?ya0H%2o5k(1T71pmcLU1I9M>e&`5OdTP%U@!h{ZWqo|dqq+P2(nQGkPS83T z&3J{u67gpM>^=W9gmt>N8+A@iH};-(bl{0sN4%U=@Y5L5vW_I`%H^tKAj!A4n^rt6 z0}2Dd)jXNPA}OGn>oi?jhN3t%kYZ6$ls0&{T zmkCO7a`ZgaI&^)!GZ3D~Hn)|jwN0dDR*kv5DW$T#%rYLZ2}4N7&E1E?@6u2O52-n- z);s2<#T)w1wk?E>ZR416A3hG>O7&P3{)yOr@~mLP$Sr`E`zkgV8HwBD)7T&?G4OjP zw-^v{#Z%PS+d>wlP~L_oKwM2c{%|Pp_W=7w{1yWr5tk$tdSGvkS(yvBv$u!4U`Hnf zklNB)GN>cJ!nK5E?#`5l6}gMMWL&>S(LC~9mAtsFE%Nu1&PIcmHm*XLo3lPxZlwX$ z1^9H=B)s{@dg8MQe0*A&D7xnn0h~tIO3w*6vfy;~VWy1MsmgdMXqS}op0#9HSSl|_ zNTqd(dFFUhHc;XKGz(={5F_ZgZ#3Y(xreLy3ByMXAqcrlF!Be+-fB2)i6{LngqffL zvm+*^<0z#*aGKyh7fZ=~jT=ZB#BsN~OgjvGY>nC4iqZ%1S{SdQPJb3AK>k5OVQ!fx zH-jDzG1m~xKz&j7w{O9Yba42fdx&QcFhgZH8r0A zV4>yVtumFHtmjAF)YPi?R#pJi?4@ABjN<0Dl8>S@Uc^HAsa685Oi>pSMw!*ZVBN}e zhEvA{&2Za@(+97~fZI!*$!ThGE&L1CwyDicOqFP;2*!kFf<{~_O(rk{OFf;T=aw=< z!`Ah8t;c*Fh?t9g8&bf*`m!G9waF49?>+)x=u2RoLWKiZDh5Ujn(2Vea2p)JoI_AT z`UodI6$rIa(kZ*;Mxbq}1$eX({7nO3O%P9TR4Tw;Y4}rR#XtkTp3Eo&RHC$!b!IsbQGl>D4nWxL57(KYjX&%!>bFNl5=H_7AQeY*e zuoW$SeS5R&)@`uq`7ix+sa_Z6QM{Z0qf={XvD)2L9G*sdalmXl)S<8Cs!-V9M3TKv zjbuT6CXKY@>({Ss@AxZ|k_fBo>OOJ&{LzdiW#Ud(o9ZN^8KFP)C=B-akNf=;0M(Z= zXsg~q&-t+AowtHbDGUI!RW`A3xEpnT_mY$W5VPX~VGPJW&7OFmCjJqlx9VR?EAt%& zgmrA3VZOywf9-G8n~J{Renekt@*w!xaK2*rtc-5iX0&ot?)HcOJ$okXB;?3X%N&9S zYz=4hPX92p0ifgKnmQU9c$(?{S93N8QG6pjeKemU+EYt84u}(F9)-2VJvPvw=EtfPoK`*Wyr10=_^*^L1|l~E(qUlW6%!{40JhMOGJ@mdyzgpoCHWRvLr8G zZ%Uc%8QTCrZ3<0WX5|Y8X4K=S-B4G1eOU^gcIX zWkpG+`v&}^sLLFk7xir#kY#M2tFqw(oP~qA?Hd=dficBE`TY238YyZi*a-qacOMxY zO|;+G*x1bxR|lfkQSN|bxDL$YShdgVZ$<}iOUtVlO_v{~FZ<)HS|iL!vLV=j+0#!4 z0BU@N3_z<+OgQxM>tTQt{1CNXMCErhV1-eJvA=)6VDl02T{eENwMrJWi$O-cQ0*4n z?jrj7>0pU=i9tyODBWf+4T8Fgf2R6tb+*=v3-{{k>abS0Lq_47gyay$V9Rnhz#J`` zDy)43ZkX|=hjSYv;Aw>VD^r&=*NY#FEU7dKN@$8zEe{_ia|=fsRg@Wcc5jUUXf86*0wNtp0gk|UMR9u?TGYoX`uIcIN(8)<{ZZt(!PEIR< zsi_@zQH2XQy%vZFJ1Z+*H&b%<#jng!$@{3o`5KJ6W&is=?BM+jvhhx+f)*Aax63+E z_U6p$PMtz_khYxOQVulecs>!OYl(M#OM2+{-W$lNEdJ)%^w>X**DXYf$-&7vENhSb z2|+&pw^E?y_{4<1ogF)=?<7!u1-$jU|lirhkkH3o{bdHY};3dU)_-hjSvk>)1}G#ag|7 z=4-}E-f^tZd9;{a)gVLvHZlkClDu*FBTkDq8Mv&g^rq*Iq-FXUj6N)8g)KJ{L7h(F zvd<_SdwTWjo#_mJxfYl&xA*}~eA2AvTf zkx%TVd>bSwm1~52E!CqOY-62 zq2zL69RmE|BOq1SArQRGExFX}D}kd2ueHrfK7h~>rH{Lk-ky;NbTM18>|zyW5q9%ROTu-$_C#g9UggU5GRkbV{TePHGL#!w@<~n#Y`YZ3oBh&0p1i&PI^bbzcqYAf_zu

Eza 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 literal 19778 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 Xq(BGvO7;~HIfdBUVvm(tpQHQ@TaX3A diff --git a/modular_nova/modules/blueshield/code/blueshield.dm b/modular_nova/modules/blueshield/code/blueshield.dm index f3c8060084b724..46f0cef28a6a0b 100644 --- a/modular_nova/modules/blueshield/code/blueshield.dm +++ b/modular_nova/modules/blueshield/code/blueshield.dm @@ -100,7 +100,7 @@ var/static/list/selectable_gun_types = list( "Takbok Revolver Set" = /obj/item/storage/toolbox/guncase/nova/pistol/trappiste_small_case/takbok, "Custom Hellfire Laser Rifle" = /obj/item/gun/energy/laser/hellgun/blueshield, - "Bogseo Submachinegun Gunset" = /obj/item/storage/toolbox/guncase/nova/xhihao_large_case/bogseo, + "Blueshield's CMG-2 Gunset" = /obj/item/storage/toolbox/guncase/nova/blueshield_cmg, ) return selectable_gun_types diff --git a/modular_nova/modules/events/code/event_spawner.dm b/modular_nova/modules/events/code/event_spawner.dm index e8f14abfd703db..b73219b69d27da 100644 --- a/modular_nova/modules/events/code/event_spawner.dm +++ b/modular_nova/modules/events/code/event_spawner.dm @@ -1,6 +1,7 @@ /obj/character_event_spawner icon = 'modular_nova/modules/cryosleep/icons/cryogenics.dmi' icon_state = "cryopod" + anchored = 1 var/list/species_whitelist var/list/gender_whitelist @@ -13,7 +14,7 @@ var/flavor_text = "" var/list/additional_equipment var/disappear_after_spawn - var/infinite = TRUE + var/infinite = FALSE var/used = FALSE /obj/character_event_spawner/attack_ghost(mob/user) diff --git a/modular_nova/modules/loadouts/loadout_items/donator/personal/donator_personal.dm b/modular_nova/modules/loadouts/loadout_items/donator/personal/donator_personal.dm index c522d63a971d41..2329c721c74ee7 100644 --- a/modular_nova/modules/loadouts/loadout_items/donator/personal/donator_personal.dm +++ b/modular_nova/modules/loadouts/loadout_items/donator/personal/donator_personal.dm @@ -1,77 +1,77 @@ /datum/loadout_item/toys/miafoxplush name = "Mia's fox plushie" item_path = /obj/item/toy/plush/nova/donator/fox/mia - ckeywhitelist = list("fuzlet") + //ckeywhitelist = list("fuzlet") /datum/loadout_item/toys/teasefoxplush name = "Teasable fox plushie" item_path = /obj/item/toy/plush/nova/donator/fox/kailyn - ckeywhitelist = list("ratraus") + //ckeywhitelist = list("ratraus") /datum/loadout_item/pocket_items/drawingtablet name = "Drawing Tablet" item_path = /obj/item/canvas/drawingtablet - donator_only = TRUE + //donator_only = TRUE /datum/loadout_item/pocket_items/stellar_bouquet name = "Stellar Bouquet" item_path = /obj/item/bouquet/stellar - ckeywhitelist = list("thedragmeme") + //ckeywhitelist = list("thedragmeme") /datum/loadout_item/under/jumpsuit/paddedunder name = "Feathered Serenity Suit" item_path = /obj/item/clothing/under/padded - ckeywhitelist = list("thedragmeme") + //ckeywhitelist = list("thedragmeme") /datum/loadout_item/under/jumpsuit/paddedunder/alt name = "Feathered Serenity Dress" item_path = /obj/item/clothing/under/padded/alt - ckeywhitelist = list("snailomi") + //ckeywhitelist = list("snailomi") /datum/loadout_item/neck/padded name = "Feathered Serenity Cloak" item_path = /obj/item/clothing/neck/padded - ckeywhitelist = list("thedragmeme", "SomeNetwork") + //ckeywhitelist = list("thedragmeme") /datum/loadout_item/neck/padded/alt name = "Feathered Serenity Cloak" item_path = /obj/item/clothing/neck/padded/alt - ckeywhitelist = list("snailomi") + //ckeywhitelist = list("snailomi") /datum/loadout_item/neck/padded/security name = "Vanguard Cloak" item_path = /obj/item/clothing/neck/padded/security - ckeywhitelist = list("actualvanguard") + //ckeywhitelist = list("actualvanguard") /datum/loadout_item/gloves/padded name = "Serenity Gloves" item_path = /obj/item/clothing/gloves/padded - ckeywhitelist = list("thedragmeme", "snailomi") + //ckeywhitelist = list("thedragmeme", "snailomi") /datum/loadout_item/shoes/padded name = "Serenity Boots" item_path = /obj/item/clothing/shoes/jackboots/padded - ckeywhitelist = list("thedragmeme") + //ckeywhitelist = list("thedragmeme") /datum/loadout_item/under/jumpsuit/long_skirtleneck name = "Tacticool Skirtleneck (Long)" item_path = /obj/item/clothing/under/syndicate/tacticool/skirt/long - ckeywhitelist = list("HollandaiseSauce", "Latinfishy", "Tf4") + //ckeywhitelist = list("HollandaiseSauce", "Latinfishy", "Tf4") /datum/loadout_item/suit/ryddid name = "The Ryddid" item_path = /obj/item/clothing/suit/jacket/ryddid - ckeywhitelist = list("grunnyyy") + //ckeywhitelist = list("grunnyyy") /datum/loadout_item/under/jumpsuit/draculass name = "Draculass Dress" item_path = /obj/item/clothing/under/costume/draculass - ckeywhitelist = list("grunnyyy", "joe_duhan") + //ckeywhitelist = list("grunnyyy", "joe_duhan") /datum/loadout_item/neck/grunnyyycloak name = "Black and Red cloak" item_path = /obj/item/clothing/neck/cloak/grunnyyy - ckeywhitelist = list("grunnyyy") + //ckeywhitelist = list("grunnyyy") /datum/loadout_item/gloves/hypnoring_coffee name = "Hypnodemon's Ring" @@ -86,65 +86,66 @@ /datum/loadout_item/shoes/rax_armadyne_boots name = "Tactical Boots" item_path = /obj/item/clothing/shoes/combat/rax - ckeywhitelist = list("raxraus") + restricted_roles = list(JOB_BLUESHIELD, JOB_NT_REP, JOB_CAPTAIN, JOB_VETERAN_ADVISOR, JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_CORRECTIONS_OFFICER) + //ckeywhitelist = list("raxraus") /datum/loadout_item/suit/rax_peacekeeper_jacket name = "Peacekeeper jacket" item_path = /obj/item/clothing/suit/armor/vest/warden/rax - ckeywhitelist = list("raxraus") + //ckeywhitelist = list("raxraus") restricted_roles = list(JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_CORRECTIONS_OFFICER) /datum/loadout_item/under/jumpsuit/rax_banded_uniform name = "Banded Uniform" item_path = /obj/item/clothing/under/rank/security/rax - ckeywhitelist = list("raxraus") + //ckeywhitelist = list("raxraus") restricted_roles = list(JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_CORRECTIONS_OFFICER) /datum/loadout_item/head/goldengoggles name = "Steampunk Goggles" item_path = /obj/item/clothing/glasses/welding/steampunk_goggles - ckeywhitelist = list("goldenalpharex") + //ckeywhitelist = list("goldenalpharex") /datum/loadout_item/under/jumpsuit/plasmaman_jax name = "XuraCorp Biohazard Underfitting" item_path = /obj/item/clothing/under/plasmaman/jax2 - ckeywhitelist = list("candlejax") + //ckeywhitelist = list("candlejax") restricted_roles = list(JOB_RESEARCH_DIRECTOR, JOB_SCIENTIST, JOB_SCIENCE_GUARD, JOB_VIROLOGIST, JOB_GENETICIST) /datum/loadout_item/mask/cmcp_mask name = "CMCP Mask" item_path = /obj/item/clothing/mask/gas/CMCP_mask - ckeywhitelist = list("candlejax") + //ckeywhitelist = list("candlejax") /datum/loadout_item/head/anahelm name = "Azulean's Enviro-Helmet" item_path = /obj/item/clothing/head/helmet/space/plasmaman/candlejax2 - ckeywhitelist = list("candlejax") + //ckeywhitelist = list("candlejax") /datum/loadout_item/under/jumpsuit/emissionsuit name = "Emission's Suit" item_path = /obj/item/clothing/under/plasmaman/candlejax - ckeywhitelist = list("candlejax") + //ckeywhitelist = list("candlejax") /datum/loadout_item/mask/divemask_koru name = "S.O.K.O. Gaiter" item_path = /obj/item/clothing/mask/gas/signalis_gaiter - ckeywhitelist = list("koruu", "foxyandiknowit", "candlejax", "shyelf", "opportunerover22") + //ckeywhitelist = list("koruu", "foxyandiknowit", "candlejax", "shyelf", "opportunerover22") /datum/loadout_item/under/jumpsuit/divesuit_koru name = "S.O.K.O. Bodysuit" item_path = /obj/item/clothing/under/bodysuit_koruu - ckeywhitelist = list("koruu", "foxyandiknowit", "candlejax", "shyelf", "opportunerover22") + //ckeywhitelist = list("koruu", "foxyandiknowit", "candlejax", "shyelf", "opportunerover22") /datum/loadout_item/under/jumpsuit/anasuit name = "Azulean's Enviro-Suit" item_path = /obj/item/clothing/under/plasmaman/candlejax2 - ckeywhitelist = list("candlejax") + //ckeywhitelist = list("candlejax") /datum/loadout_item/mask/composite_filtration name = "Composite Filtration Mask" item_path = /obj/item/clothing/mask/gas/psycho_malice - ckeywhitelist = list("snakebittenn", "chillylobster", "candlejax", "theooz", "alvcyktor") + //ckeywhitelist = list("snakebittenn", "chillylobster", "candlejax", "theooz", "alvcyktor") /datum/loadout_item/suit/jacket abstract_type = /datum/loadout_item/suit/jacket @@ -152,32 +153,32 @@ /datum/loadout_item/suit/jacket/cherno name = "Blue-Silvered Coat" item_path = /obj/item/clothing/suit/jacket/cherno - ckeywhitelist = list("cherno00") + //ckeywhitelist = list("cherno00") /datum/loadout_item/head/avipilot name = "Smuggler's Flying Cap" item_path = /obj/item/clothing/head/avipilot - ckeywhitelist = list("slippyjoe") + //ckeywhitelist = list("slippyjoe") /datum/loadout_item/shoes/britches_shoes name = "Britches' shoes" item_path = /obj/item/clothing/shoes/clown_shoes/britches - ckeywhitelist = list("bloodrite") + //ckeywhitelist = list("bloodrite") /datum/loadout_item/under/jumpsuit/britches_dress name = "Britches' dress" item_path = /obj/item/clothing/under/rank/civilian/clown/britches - ckeywhitelist = list("bloodrite") + //ckeywhitelist = list("bloodrite") /datum/loadout_item/mask/britches_mask name = "Britches' mask" item_path = /obj/item/clothing/mask/gas/britches - ckeywhitelist = list("bloodrite") + //ckeywhitelist = list("bloodrite") /datum/loadout_item/mask/luchador_mask name = "Mask of El Red Templar" item_path = /obj/item/clothing/mask/luchador/enzo - ckeywhitelist = list("enzoman") + //ckeywhitelist = list("enzoman") /datum/loadout_item/mask/nightlight_mask name = "FIR-36 Rebreather" @@ -190,7 +191,7 @@ /datum/loadout_item/mask/caligram_visage_mask name = "Caligram Visage Mask" item_path = /obj/item/clothing/mask/gas/caligram_visage_mask - ckeywhitelist = list("farsightednightlight") + //ckeywhitelist = list("farsightednightlight") /datum/loadout_item/head/caligram_cap_tan name = "Caligram Tan Softcap" @@ -228,89 +229,89 @@ /datum/loadout_item/suit/brasspriest name = "Brasspriest Coat" item_path = /obj/item/clothing/suit/jacket/brasspriest - ckeywhitelist = list("ChillyLobster") + //ckeywhitelist = list("ChillyLobster") /datum/loadout_item/suit/hydrogenrobes name = "Metallic-Hydrogen robes" item_path = /obj/item/clothing/suit/jacket/hydrogenrobes - ckeywhitelist = list("ChillyLobster") + //ckeywhitelist = list("ChillyLobster") /datum/loadout_item/suit/wetsuit_norm name = "Fitted Wetsuit" item_path = /obj/item/clothing/under/wetsuit_norm - ckeywhitelist = list("ChillyLobster") + //ckeywhitelist = list("ChillyLobster") /datum/loadout_item/mask/wolf_mask name = "Wolf mask" item_path = /obj/item/clothing/mask/animal/wolf - ckeywhitelist = list("theooz") + //ckeywhitelist = list("theooz") /datum/loadout_item/head/drake_skull name = "Skull of an ashdrake" item_path = /obj/item/clothing/head/drake_skull - ckeywhitelist = list("random516") + //ckeywhitelist = list("random516") /datum/loadout_item/gloves/blutigen_wraps name = "Blutigen Wraps" item_path = /obj/item/clothing/gloves/fingerless/blutigen_wraps - ckeywhitelist = list("random516") + //ckeywhitelist = list("random516") /datum/loadout_item/suit/blutigen_kimono name = "Blutigen Kimono" item_path = /obj/item/clothing/suit/blutigen_kimono - ckeywhitelist = list("random516") + //ckeywhitelist = list("random516") /datum/loadout_item/under/jumpsuit/blutigen_undergarment name = "Dragon Undergarment" item_path = /obj/item/clothing/under/custom/blutigen_undergarment - ckeywhitelist = list("random516") + //ckeywhitelist = list("random516") /datum/loadout_item/under/jumpsuit/captain_dress name = "Captain's Dress" item_path = /obj/item/clothing/under/rank/captain/dress - ckeywhitelist = list("netrakyram") + //ckeywhitelist = list("netrakyram") restricted_roles = list(JOB_CAPTAIN) /datum/loadout_item/under/jumpsuit/netra_dress name = "Black and Silver Armored Dress" item_path = /obj/item/clothing/under/rank/blueshield/netra - ckeywhitelist = list("netrakyram") + //ckeywhitelist = list("netrakyram") restricted_roles = list(JOB_CAPTAIN, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY) /datum/loadout_item/gloves/netra_gloves name = "Black and Silver Gloves" item_path = /obj/item/clothing/gloves/netra - ckeywhitelist = list("netrakyram") + //ckeywhitelist = list("netrakyram") /datum/loadout_item/shoes/metra_boots name = "Polished Jackboots" item_path = /obj/item/clothing/shoes/jackboots/netra - ckeywhitelist = list("netrakyram") + //ckeywhitelist = list("netrakyram") /datum/loadout_item/neck/kiaracloak name = "Kiara's cloak" item_path = /obj/item/clothing/neck/cloak/inferno - ckeywhitelist = list("inferno707") + //ckeywhitelist = list("inferno707") /datum/loadout_item/neck/kiaracollar name = "Kiara's collar" item_path = /obj/item/clothing/neck/inferno_collar - ckeywhitelist = list("inferno707") + //ckeywhitelist = list("inferno707") /datum/loadout_item/pocket_items/kiaramedal name = "Insignia of Steele" item_path = /obj/item/clothing/accessory/medal/steele - ckeywhitelist = list("inferno707") + //ckeywhitelist = list("inferno707") /datum/loadout_item/mask/hheart name = "The Hollow Heart" item_path = /obj/item/clothing/mask/hheart - ckeywhitelist = list("inferno707") + //ckeywhitelist = list("inferno707") /datum/loadout_item/toys/darksabre name = "Dark Sabre" item_path = /obj/item/toy/darksabre - ckeywhitelist = list("inferno707") + //ckeywhitelist = list("inferno707") /datum/loadout_item/pocket_items/darksabresheath name = "Dark Sabre Sheath" @@ -320,207 +321,207 @@ /datum/loadout_item/pocket_items/darkarmor name = "Dark Armor" item_path = /obj/item/clothing/suit/armor/vest/darkcarapace - ckeywhitelist = list("inferno707") + //ckeywhitelist = list("inferno707") /datum/loadout_item/neck/zuliecloak name = "Project: Zul-E" item_path = /obj/item/clothing/suit/hooded/cloak/zuliecloak - ckeywhitelist = list("asky") + //ckeywhitelist = list("asky") /datum/loadout_item/pocket_items/brightcosmos name = "Bright Cosmos cigar" item_path = /obj/item/holocigarette/cigar - ckeywhitelist = list("lyricalpaws") + //ckeywhitelist = list("lyricalpaws") /datum/loadout_item/under/jumpsuit/lannese name = "Lannese Dress" item_path = /obj/item/clothing/under/custom/lannese - ckeywhitelist = list("kathrinbailey") + //ckeywhitelist = list("kathrinbailey") /datum/loadout_item/under/jumpsuit/lannese/vambrace name = "Lannese Dress w/ Vambraces" item_path = /obj/item/clothing/under/custom/lannese/vambrace - ckeywhitelist = list("kathrinbailey") + //ckeywhitelist = list("kathrinbailey") /datum/loadout_item/suit/scraparmour name = "Scrap Armor" item_path = /obj/item/clothing/suit/scraparmour - ckeywhitelist = list("hackertdog") + //ckeywhitelist = list("hackertdog") /datum/loadout_item/under/jumpsuit/mechanic name = "Mechanic's Overalls" item_path = /obj/item/clothing/under/misc/nova/mechanic - ckeywhitelist = list("cypressb") + //ckeywhitelist = list("cypressb") /datum/loadout_item/under/jumpsuit/mikubikini name = "starlight singer bikini" item_path = /obj/item/clothing/under/mikubikini - ckeywhitelist = list("grandvegeta") + //ckeywhitelist = list("grandvegeta") /datum/loadout_item/suit/mikujacket name = "starlight singer jacket" item_path = /obj/item/clothing/suit/mikujacket - ckeywhitelist = list("grandvegeta") + //ckeywhitelist = list("grandvegeta") /datum/loadout_item/head/mikuhair name = "starlight singer hair" item_path = /obj/item/clothing/head/mikuhair - ckeywhitelist = list("grandvegeta") + //ckeywhitelist = list("grandvegeta") /datum/loadout_item/gloves/mikugloves name = "starlight singer gloves" item_path = /obj/item/clothing/gloves/mikugloves - ckeywhitelist = list("grandvegeta") + //ckeywhitelist = list("grandvegeta") /datum/loadout_item/shoes/mikulegging name = "starlight singer bikini" item_path = /obj/item/clothing/shoes/sneakers/mikuleggings - ckeywhitelist = list("grandvegeta") + //ckeywhitelist = list("grandvegeta") /datum/loadout_item/suit/delta_coat name = "Grey Winter Hoodie" item_path = /obj/item/clothing/suit/jacket/delta - ckeywhitelist = list("deltatri") + //ckeywhitelist = list("deltatri") /datum/loadout_item/head/hubertcc name = "CC Ensign's cap" item_path = /obj/item/clothing/head/nanotrasen_consultant/hubert - ckeywhitelist = list("hackertdog") + //ckeywhitelist = list("hackertdog") restricted_roles = list(JOB_NT_REP) /datum/loadout_item/suit/hubertcc name = "CC Ensign's armoured vest" item_path = /obj/item/clothing/suit/armor/vest/nanotrasen_consultant/hubert - ckeywhitelist = list("hackertdog") + //ckeywhitelist = list("hackertdog") restricted_roles = list(JOB_NT_REP) /datum/loadout_item/under/jumpsuit/hubertcc name = "CC Ensign's uniform" item_path = /obj/item/clothing/under/rank/nanotrasen_consultant/hubert - ckeywhitelist = list("hackertdog") + //ckeywhitelist = list("hackertdog") restricted_roles = list(JOB_NT_REP) /datum/loadout_item/head/frostyushanka name = "Blue Ushanka" item_path = /obj/item/clothing/head/costume/ushanka/frosty - ckeywhitelist = list("cherno00") + //ckeywhitelist = list("cherno00") /datum/loadout_item/neck/silvercross name = "Silver Cross" item_path = /obj/item/clothing/neck/cross - ckeywhitelist = list("m97screwsyourparents") + //ckeywhitelist = list("m97screwsyourparents") /datum/loadout_item/suit/occult_coat name = "Occult Collector's Coat" item_path = /obj/item/clothing/suit/hooded/occult - ckeywhitelist = list("gamerguy14948") + //ckeywhitelist = list("gamerguy14948") /datum/loadout_item/under/jumpsuit/occult_outfit name = "Occult Collector's Outfit" item_path = /obj/item/clothing/under/occult - ckeywhitelist = list("gamerguy14948") + //ckeywhitelist = list("gamerguy14948") /datum/loadout_item/belts/trinket_belt name = "Trinket Belt" item_path = /obj/item/storage/belt/fannypack/occult - ckeywhitelist = list("gamerguy14948") + //ckeywhitelist = list("gamerguy14948") /datum/loadout_item/toys/voodooplush name = "Voodoo Doll" item_path = /obj/item/toy/plush/nova/donator/voodoo - ckeywhitelist = list("gamerguy14948") + //ckeywhitelist = list("gamerguy14948") /datum/loadout_item/mask/octusvox name = "Sinister Visor" item_path = /obj/item/clothing/mask/breath/vox/octus - ckeywhitelist = list("octus") + //ckeywhitelist = list("octus") /datum/loadout_item/glasses/roseglasses name = "Rose-Colored Glasses" item_path = /obj/item/clothing/glasses/rosecolored - ckeywhitelist = list("1ceres", "irrigoimport", "zeskorion", "wizardlywoz", "duckymomo", "samarai1000", "funkyfetusstrikesback", "m97screwsyourparents", "lynxqueen", "kaynite", "mahalia", "sapphoqueer", "emmakisst", "ceasethebridge", "valorthix" ) + //ckeywhitelist = list("1ceres", "irrigoimport", "zeskorion", "wizardlywoz", "duckymomo", "samarai1000", "funkyfetusstrikesback", "m97screwsyourparents", "lynxqueen", "kaynite", "mahalia", "sapphoqueer", "emmakisst", "ceasethebridge", "valorthix" ) /datum/loadout_item/pocket_items/fuzzy_huglicense name = "License To Hug" item_path = /obj/item/card/fuzzy_license - ckeywhitelist = list("fuzlet") + //ckeywhitelist = list("fuzlet") /datum/loadout_item/suit/gorlex_harness name = "Engine Technician Harness" item_path = /obj/item/clothing/suit/jacket/gorlex_harness - ckeywhitelist = list("1ceres") + //ckeywhitelist = list("1ceres") /datum/loadout_item/pocket_items/korpstech_poster name = "Korpstech Poster" item_path = /obj/item/poster/korpstech - ckeywhitelist = list("1ceres") + //ckeywhitelist = list("1ceres") /datum/loadout_item/glasses/roseeyepatch name = "Rose-Colored Eyepatch" item_path = /obj/item/clothing/glasses/eyepatch/rosecolored - ckeywhitelist = list("kaynite") + //ckeywhitelist = list("kaynite") /datum/loadout_item/suit/tenrai_coat name = "Tenrai Coat" item_path = /obj/item/clothing/suit/toggle/labcoat/nova/tenrai - ckeywhitelist = list("cimika") + //ckeywhitelist = list("cimika") /datum/loadout_item/neck/fluffycloak name = "Fluffy Cloak" item_path = /obj/item/clothing/neck/cloak/fluffycloak - ckeywhitelist = list("realwinterfrost") + //ckeywhitelist = list("realwinterfrost") /datum/loadout_item/mask/larpswat name = "Foam Force SWAT Mask" item_path = /obj/item/clothing/mask/gas/larpswat - ckeywhitelist = list("erdinyobarboza") + //ckeywhitelist = list("erdinyobarboza") /datum/loadout_item/toys/zappplush name = "Lil' Zapp Plushie" item_path = /obj/item/toy/plush/nova/donator/zapp - donator_only = TRUE + //donator_only = TRUE /datum/loadout_item/pocket_items/tacticalbrush name = "Tactical Brush" item_path = /obj/item/hairbrush/tactical - ckeywhitelist = list("weredoggo") + //ckeywhitelist = list("weredoggo") /datum/loadout_item/neck/fishpendant name = "Fish Pendant" item_path = /obj/item/clothing/neck/fishpendant - ckeywhitelist = list("cimika") + //ckeywhitelist = list("cimika") /datum/loadout_item/toys/immovable_rod_plush name = "Immovable Rod Plushie" item_path = /obj/item/toy/plush/nova/donator/immovable_rod - ckeywhitelist = list("tobjv") + //ckeywhitelist = list("tobjv") /datum/loadout_item/toys/tesh_plush name = "Squish-Me-Tesh Plush" item_path = /obj/item/toy/plush/nova/donator/tesh - ckeywhitelist = list("tobjv") + //ckeywhitelist = list("tobjv") /datum/loadout_item/under/jumpsuit/redhosneck name = "Black and Red Turtleneck" item_path = /obj/item/clothing/under/rank/security/head_of_security/alt/roselia - ckeywhitelist = list("ultimarifox") + //ckeywhitelist = list("ultimarifox") restricted_roles = list(JOB_HEAD_OF_SECURITY) /datum/loadout_item/glasses/redgigagar name = "Red-tinted Giga HUD Gar Glasses" item_path = /obj/item/clothing/glasses/hud/security/sunglasses/gars/giga/roselia - ckeywhitelist = list("ultimarifox") + //ckeywhitelist = list("ultimarifox") restricted_roles = list(JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER) /datum/loadout_item/toys/roselia_plush name = "Obscene Sergal Plushie" item_path = /obj/item/toy/plush/nova/donator/roselia - ckeywhitelist = list("ultimarifox") + //ckeywhitelist = list("ultimarifox") /datum/loadout_item/accessory/mercbadge name = "Jade Badge" item_path = /obj/item/clothing/accessory/badge/holo/jade - ckeywhitelist = list("konstyantyn") + //ckeywhitelist = list("konstyantyn") /datum/loadout_item/toys/plushe_winrow name = "Dark and Brooding Lizard Plushie" @@ -533,32 +534,32 @@ /datum/loadout_item/suit/rainbowcoat name = "Rainbow Coat" item_path = /obj/item/clothing/suit/toggle/rainbowcoat - ckeywhitelist = list("dudewithatude") + //ckeywhitelist = list("dudewithatude") /datum/loadout_item/head/recruiter_cap name = "Recruiter's Cap" item_path = /obj/item/clothing/head/recruiter_cap - ckeywhitelist = list("m97screwsyourparents") + //ckeywhitelist = list("m97screwsyourparents") /datum/loadout_item/suit/recruiter_jacket name = "Recruiter's Jacket" item_path = /obj/item/clothing/suit/toggle/recruiter_jacket - ckeywhitelist = list("m97screwsyourparents") + //ckeywhitelist = list("m97screwsyourparents") /datum/loadout_item/under/jumpsuit/recruiter_uniform name = "Recruiter's Uniform" item_path = /obj/item/clothing/under/recruiter_uniform - ckeywhitelist = list("m97screwsyourparents") + //ckeywhitelist = list("m97screwsyourparents") /datum/loadout_item/pocket_items/hypno_watch name = "Pocket Watch" item_path = /obj/item/clothing/accessory/hypno_watch - ckeywhitelist = list("slippyjoe") + //ckeywhitelist = list("slippyjoe") /datum/loadout_item/under/jumpsuit/nt_idol name = "NT Idol's Skirt" item_path = /obj/item/clothing/under/nt_idol_skirt - ckeywhitelist = list("tetrako") + //ckeywhitelist = list("tetrako") restricted_roles = list(JOB_NT_REP) //Chunko Fops were donated by SlippyJoe, who requested they are usable by everyone @@ -566,157 +567,157 @@ /datum/loadout_item/toys/CFBonnie name = "Chunko Fop: Blue Bunny Plushie" item_path = /obj/item/toy/plush/nova/donator/chunko/bonnie - donator_only = TRUE + //donator_only = TRUE /datum/loadout_item/toys/CFAndrew name = "Chunko Fop: Green Bunny Plushie" item_path = /obj/item/toy/plush/nova/donator/chunko/andrew - donator_only = TRUE + //donator_only = TRUE /datum/loadout_item/toys/CFInessa name = "Chunko Fop: Medical Bear Plushie" item_path = /obj/item/toy/plush/nova/donator/chunko/inessa - donator_only = TRUE + //donator_only = TRUE /datum/loadout_item/toys/plushie_chiara name = "Commanding Fox Plushie" item_path = /obj/item/toy/plush/nova/donator/plushie_chiara - ckeywhitelist = list("srq", "superlagg") + //ckeywhitelist = list("srq", "superlagg") /datum/loadout_item/toys/plushie_dan name = "Comfy Fox Plushie" item_path = /obj/item/toy/plush/nova/donator/plushie_dan - ckeywhitelist = list("srq", "superlagg") + //ckeywhitelist = list("srq", "superlagg") /datum/loadout_item/under/jumpsuit/bubbly_clown name = "Bubbly Clown Dress" item_path = /obj/item/clothing/under/bubbly_clown/skirt restricted_roles = list(JOB_CLOWN) - ckeywhitelist = list("boisterousbeebz", "aether217") + //ckeywhitelist = list("boisterousbeebz", "aether217") /datum/loadout_item/pocket_items/marsoc_coin name = "MARSOC Challenge Coin" item_path = /obj/item/coin/donator/marsoc - ckeywhitelist = list("sweetsoulbrother") + //ckeywhitelist = list("sweetsoulbrother") /datum/loadout_item/toys/plushie_jeanne name = "Masked Roboticist Plushie" item_path = /obj/item/toy/plush/nova/donator/plushie_jeanne -// ckeywhitelist = list("klb100") // Asked it to be public. +// //ckeywhitelist = list("klb100") // Asked it to be public. /datum/loadout_item/under/jumpsuit/tactichill name = "Tactichill Jacket" item_path = /obj/item/clothing/under/tactichill - ckeywhitelist = list("kaynite") + //ckeywhitelist = list("kaynite") /datum/loadout_item/suit/techpriest name = "Techpriest Robes" item_path = /obj/item/clothing/suit/hooded/techpriest - ckeywhitelist = list("imthinkingarbys") + //ckeywhitelist = list("imthinkingarbys") /datum/loadout_item/toys/plushie_azyre name = "Handsome Chef Plushie" item_path = /obj/item/toy/plush/nova/donator/plushie_azyre - ckeywhitelist = list("dalaoazure") + //ckeywhitelist = list("dalaoazure") /datum/loadout_item/pocket_items/khicigs name = "Kitsuhana Singularity Cigarettes" item_path = /obj/item/storage/fancy/cigarettes/khi - ckeywhitelist = list("ultimarifox") + //ckeywhitelist = list("ultimarifox") /datum/loadout_item/shoes/dragheels name = "Fancy Heels (dragmeme)" item_path = /obj/item/clothing/shoes/fancy_heels/drag - ckeywhitelist = list("thedragmeme", "snailomi") + //ckeywhitelist = list("thedragmeme", "snailomi") /datum/loadout_item/under/jumpsuit/bimpcap name = "Formal Matte Black Captain Uniform" item_path = /obj/item/clothing/under/bimpcap restricted_roles = list(JOB_CAPTAIN) - ckeywhitelist = list("razurath") + //ckeywhitelist = list("razurath") /datum/loadout_item/toys/plushie_razurath name = "Science Shark Plushie" item_path = /obj/item/toy/plush/nova/donator/plushie_razurath - ckeywhitelist = list("razurath") + //ckeywhitelist = list("razurath") /datum/loadout_item/toys/plushie_razurath/second name = "Dwarf Shark Plushie" item_path = /obj/item/toy/plush/nova/donator/plushie_razurath/second - ckeywhitelist = list("razurath") + //ckeywhitelist = list("razurath") /datum/loadout_item/toys/plushie_elofy name = "Bumbling Wolfgirl Plushie" item_path = /obj/item/toy/plush/nova/donator/plushie_elofy - //ckeywhitelist = list("october23") // Asked it to be public. + ////ckeywhitelist = list("october23") // Asked it to be public. /datum/loadout_item/suit/elofy name = "Solar Admiral Coat" item_path = /obj/item/clothing/suit/armor/hos/elofy - ckeywhitelist = list("october23") + //ckeywhitelist = list("october23") restricted_roles = list(JOB_HEAD_OF_SECURITY) /datum/loadout_item/head/elofy name = "Solar Admiral Hat" item_path = /obj/item/clothing/head/hats/hos/elofy - ckeywhitelist = list("october23") + //ckeywhitelist = list("october23") restricted_roles = list(JOB_HEAD_OF_SECURITY) /datum/loadout_item/gloves/elofy name = "Solar Admiral Gloves" item_path = /obj/item/clothing/gloves/elofy - ckeywhitelist = list("october23") + //ckeywhitelist = list("october23") /datum/loadout_item/shoes/elofy name = "Solar Admiral Boots" item_path = /obj/item/clothing/shoes/jackboots/elofy - ckeywhitelist = list("october23") + //ckeywhitelist = list("october23") /datum/loadout_item/pocket_items/transponder name = "Broken Helian Transponder" item_path = /obj/item/donator/transponder - ckeywhitelist = list("glacii") + //ckeywhitelist = list("glacii") /datum/loadout_item/glasses/goldaviator name = "Purple and Gold Aviators" item_path = /obj/item/clothing/glasses/gold_aviators - ckeywhitelist = list("nikohyena") + //ckeywhitelist = list("nikohyena") /datum/loadout_item/under/jumpsuit/goldenkimono name = "Short-Sleeved Kimono" item_path = /obj/item/clothing/under/costume/nova/kimono/sigmar - ckeywhitelist = list("sigmaralkahest") + //ckeywhitelist = list("sigmaralkahest") /datum/loadout_item/suit/blackraincoat name = "Black Open-Faced Raincoat" item_path = /obj/item/clothing/suit/hooded/sigmarcoat - ckeywhitelist = list("sigmaralkahest") + //ckeywhitelist = list("sigmaralkahest") /datum/loadout_item/toys/plushy_syntax1112 name = "Lop Bunny Plushie" item_path = /obj/item/toy/plush/nova/donator/plushie_syntax1112 - ckeywhitelist = list("syntax1112") + //ckeywhitelist = list("syntax1112") /datum/loadout_item/gloves/hypnoring_nuke name = "Suspiciously Glossy Ring" item_path = /obj/item/clothing/gloves/ring/hypno/nuke - ckeywhitelist = list("sonicgotnuked") + //ckeywhitelist = list("sonicgotnuked") /datum/loadout_item/head/somerandomowl name = "Starry Witch Hat" item_path = /obj/item/clothing/head/costume/owlhat - ckeywhitelist = list("somerandomowl") + //ckeywhitelist = list("somerandomowl") /datum/loadout_item/head/razurathhat name = "Golden Nanotrasen Officer Cap" item_path = /obj/item/clothing/head/razurathhat - ckeywhitelist = list("razurath") + //ckeywhitelist = list("razurath") /datum/loadout_item/suit/razurathcoat name = "Golden Nanotrasen Officer Coat" item_path = /obj/item/clothing/suit/razurathcoat - ckeywhitelist = list("razurath") + //ckeywhitelist = list("razurath") /datum/loadout_item/pocket_items/masvedishcigar name = "Holocigar" @@ -726,88 +727,89 @@ /datum/loadout_item/suit/lt3_armor name = "Silver Jacket Mk II" item_path = /obj/item/clothing/suit/armor/skyy - ckeywhitelist = list("lt3") + //ckeywhitelist = list("lt3") restricted_roles = list(JOB_HEAD_OF_PERSONNEL, JOB_NT_REP) /datum/loadout_item/suit/lt3_jacket name = "Silver Jacket" item_path = /obj/item/clothing/suit/jacket/skyy - ckeywhitelist = list("lt3") + //ckeywhitelist = list("lt3") /datum/loadout_item/under/miscellaneous/lt3_jeans name = "Silver Jeans" item_path = /obj/item/clothing/under/pants/skyy - ckeywhitelist = list("lt3") + //ckeywhitelist = list("lt3") /datum/loadout_item/gloves/lt3_gloves name = "Charcoal Fingerless Gloves" item_path = /obj/item/clothing/gloves/skyy - ckeywhitelist = list("lt3") + //ckeywhitelist = list("lt3") /datum/loadout_item/toys/switchcomb name = "Switchblade Comb" item_path = /obj/item/hairbrush/switchblade - ckeywhitelist = list("stonetear") + //ckeywhitelist = list("stonetear") /datum/loadout_item/suit/colorblockhoodie name = "Color-Block Hoodie" item_path = /obj/item/clothing/suit/hooded/colorblockhoodie - ckeywhitelist = list("lolpopomg101") + //ckeywhitelist = list("lolpopomg101") /datum/loadout_item/inhand/officialcat name = "Official Cat Stamp" item_path = /obj/item/stamp/cat - ckeywhitelist = list("kathrinbailey") + //ckeywhitelist = list("kathrinbailey") /datum/loadout_item/inhand/sqn_box name = "A curious box of things." item_path = /obj/item/storage/box/donator/sqn - ckeywhitelist = list("sqnztb") + //ckeywhitelist = list("sqnztb") /datum/loadout_item/under/jumpsuit/noble_gambeson name = "Noble Gambeson" item_path = /obj/item/clothing/under/rank/civilian/chaplain/divine_archer/noble - ckeywhitelist = list("grasshand") + //ckeywhitelist = list("grasshand") /datum/loadout_item/shoes/noble_boots name = "Noble Boots" item_path = /obj/item/clothing/shoes/jackboots/noble - ckeywhitelist = list("grasshand") + //ckeywhitelist = list("grasshand") /datum/loadout_item/suit/nobility_dresscoat name = "Nobility Dresscoat" item_path = /obj/item/clothing/suit/toggle/labcoat/vic_dresscoat_donator - ckeywhitelist = list("nikotheguydude") + //ckeywhitelist = list("nikotheguydude") /datum/loadout_item/suit/anubite_headpiece name = "Anubite Headpiece" item_path = /obj/item/clothing/head/anubite - ckeywhitelist = list("vexcint") + //ckeywhitelist = list("vexcint") /datum/loadout_item/under/formal/dragon_maid name = "Dragon Maid Uniform" item_path = /obj/item/clothing/under/costume/dragon_maid - ckeywhitelist = list("sigmaralkahest") + //ckeywhitelist = list("sigmaralkahest") /datum/loadout_item/head/catear_headphone name = "Cat-Ear Headphones" item_path = /obj/item/instrument/piano_synth/headphones/catear_headphone - ckeywhitelist = list("dtfe") + //ckeywhitelist = list("dtfe") /datum/loadout_item/neck/trenchcoat - name = "Secure Trenchcoat" + name = "Graceful Trenchcoat" item_path = /obj/item/clothing/neck/trenchcoat - ckeywhitelist = list("Smol42") + //ckeywhitelist = list("Smol42", "Awers855") /datum/loadout_item/under/jumpsuit/old_qm_jumpskirt name = "Old Quartermaster's Jumpskirt" item_path = /obj/item/clothing/under/rank/cargo/qm/skirt/old - ckeywhitelist = list("jasohavents") + //ckeywhitelist = list("jasohavents") /datum/loadout_item/pocket_items/toaster_implant name = "Toaster Implant" item_path = /obj/item/implanter/toaster - ckeywhitelist = list("jasohavents") + restricted_roles = list(JOB_CLOWN) + //ckeywhitelist = list("jasohavents") /datum/loadout_item/under/miscellaneous/rem name = "M.I.A. Limiter" @@ -827,34 +829,34 @@ /datum/loadout_item/inhand/pet/mrfluff_mothroach name = "Mr. Fluff" item_path = /obj/item/clothing/head/mob_holder/pet/donator/centralsmith - ckeywhitelist = list("centralsmith") + //ckeywhitelist = list("centralsmith") /datum/loadout_item/under/jumpsuit/techpants name = "Techwear Pants" item_path = /obj/item/clothing/under/techpants - ckeywhitelist = list("alvcyktor", "snakebittenn") + //ckeywhitelist = list("alvcyktor", "snakebittenn") /datum/loadout_item/inhand/drop_pouch name = "Drop Pouch" item_path = /obj/item/storage/backpack/satchel/drop_pouch - ckeywhitelist = list("alvcyktor", "snakebittenn") + //ckeywhitelist = list("alvcyktor", "snakebittenn") /datum/loadout_item/inhand/melonseva name = "Sundowner SEVA" item_path = /obj/item/clothing/suit/hooded/seva/melon - ckeywhitelist = list("deadmonwonderland") + //ckeywhitelist = list("deadmonwonderland") restricted_roles = list(JOB_SHAFT_MINER) /datum/loadout_item/suit/desminus name = "Jómsvíking Coat" item_path = /obj/item/clothing/suit/toggle/desminus - ckeywhitelist = list("desminus", "junglerat", "deadmonwonderland") + //ckeywhitelist = list("desminus", "junglerat", "deadmonwonderland") /datum/loadout_item/suit/desminus2 name = "Elderwood Garment" item_path = /obj/item/clothing/suit/toggle/desminus2 - ckeywhitelist = list("desminus", "junglerat", "deadmonwonderland") + //ckeywhitelist = list("desminus", "junglerat", "deadmonwonderland") /datum/loadout_item/pocket_items/akarimod name = "Akari's MOD Refitter" @@ -864,22 +866,22 @@ /datum/loadout_item/pocket_items/mrsanderp_cookbook name = "Riva Family Cookbook" item_path = /obj/item/book/granter/crafting_recipe/mrsanderp_donator_cookbook - ckeywhitelist = list("mrsanderp") + //ckeywhitelist = list("mrsanderp") /datum/loadout_item/under/jumpsuit/half_leotard name = "One-Sleeved Leotard" item_path = /obj/item/clothing/under/pants/half_leotard_cosmiclaer - ckeywhitelist = list("cosmiclaer") + //ckeywhitelist = list("cosmiclaer") /datum/loadout_item/under/jumpsuit/shendyt name = "Shendyt" item_path = /obj/item/clothing/under/costume/shendyt - ckeywhitelist = list("hyperhazel") + //ckeywhitelist = list("hyperhazel") /datum/loadout_item/pocket_items/jumperbox name = "Jumper Conversation Kit Box" item_path = /obj/item/mod/skin_applier/jumper - ckeywhitelist = list("bonkaitheroris") + //ckeywhitelist = list("bonkaitheroris") /datum/loadout_item/pocket_items/starfruit_seed name = "Primidine Starfruit Seed" @@ -889,4 +891,4 @@ /datum/loadout_item/suit/butter name = "Butter Costume" item_path = /obj/item/clothing/suit/costume/butter - ckeywhitelist = list("drpmstr", "pyritechimera") + //ckeywhitelist = list("drpmstr", "pyritechimera") diff --git a/modular_nova/modules/mapping/code/areas/away_content.dm b/modular_nova/modules/mapping/code/areas/away_content.dm index d17fdef65a443e..ebda142eb1ffd5 100644 --- a/modular_nova/modules/mapping/code/areas/away_content.dm +++ b/modular_nova/modules/mapping/code/areas/away_content.dm @@ -5,6 +5,8 @@ /area/awaymission/black_mesa name = "Black Mesa Inside" + requires_power = FALSE + always_unpowered = FALSE /area/awaymission/black_mesa/entrance name = "Black Mesa Entrance" diff --git a/modular_nova/modules/mapping/code/lockers/cargodiselost/cargodiselockers.dm b/modular_nova/modules/mapping/code/lockers/cargodiselost/cargodiselockers.dm index 03aa2bd1c222e9..40820246fbc71a 100644 --- a/modular_nova/modules/mapping/code/lockers/cargodiselost/cargodiselockers.dm +++ b/modular_nova/modules/mapping/code/lockers/cargodiselost/cargodiselockers.dm @@ -11,6 +11,9 @@ /obj/structure/closet/freighterammo/PopulateContents() . = ..() + new /obj/item/ammo_box/magazine/c40sol_rifle(src) + new /obj/item/ammo_box/magazine/c40sol_rifle(src) + new /obj/item/ammo_box/magazine/c40sol_rifle(src) new /obj/item/ammo_box/magazine/lanca(src) new /obj/item/ammo_box/magazine/lanca(src) new /obj/item/ammo_box/magazine/lanca(src) @@ -25,7 +28,7 @@ /obj/structure/closet/secure_closet/personal/cabinet/freighterboss/PopulateContents() . = ..() - new /obj/item/gun/ballistic/automatic/sol_rifle/marksman(src) + new /obj/item/gun/ballistic/automatic/cfa_rifle(src) new /obj/item/storage/pouch/ammo(src) new /obj/item/clothing/suit/armor/bulletproof(src) new /obj/item/storage/belt/utility/syndicate(src) @@ -33,6 +36,7 @@ new /obj/item/clothing/gloves/combat(src) new /obj/item/storage/backpack/duffelbag/syndie(src) new /obj/item/radio(src) - new /obj/item/ammo_box/magazine/c40sol_rifle(src) - new /obj/item/ammo_box/magazine/c40sol_rifle(src) - new /obj/item/ammo_box/magazine/c40sol_rifle(src) + new /obj/item/wrench/bolter(src) + new /obj/item/ammo_box/magazine/cm68(src) + new /obj/item/ammo_box/magazine/cm68(src) + new /obj/item/ammo_box/magazine/cm68(src) diff --git a/modular_nova/modules/mapping/code/mob_spawns.dm b/modular_nova/modules/mapping/code/mob_spawns.dm index 1db6b46f0cabec..9d6078f15bdc61 100644 --- a/modular_nova/modules/mapping/code/mob_spawns.dm +++ b/modular_nova/modules/mapping/code/mob_spawns.dm @@ -384,6 +384,16 @@ //Lost Space Truckers: Six people stranded in deep space aboard a cargo freighter. They must survive their marooning and cooperate. +//HEADSETS// +/obj/item/radio/headset/headset_frontier_colonist/cargodise + name = "Freight Crew radio headset" + keyslot = /obj/item/encryptionkey/headset_mining + +/obj/item/radio/headset/headset_frontier_colonist/cargodise/qm + name = "Freight Chief radio headset" + keyslot2 = /obj/item/encryptionkey/headset_com + command = TRUE + /obj/effect/mob_spawn/ghost_role/human/lostcargo name = "freighter cryo crew pod" prompt_name = "a lost cargo tech" @@ -405,6 +415,7 @@ name = "Freighter Crew" uniform = /obj/item/clothing/under/rank/cargo/tech/nova/casualman shoes = /obj/item/clothing/shoes/workboots + ears = /obj/item/radio/headset/headset_frontier_colonist/cargodise back = /obj/item/storage/backpack id = /obj/item/card/id/away/freightcrew @@ -439,6 +450,7 @@ name = "Freighter Excavator" uniform = /obj/item/clothing/under/rank/cargo/tech/nova/gorka shoes = /obj/item/clothing/shoes/workboots/mining + ears = /obj/item/radio/headset/headset_frontier_colonist/cargodise back = /obj/item/storage/backpack backpack_contents = list(/obj/item/flashlight/seclite=1,\ /obj/item/knife/combat/survival=1, @@ -481,6 +493,7 @@ name = "Freighter Boss" uniform = /obj/item/clothing/under/rank/cargo/tech/nova/turtleneck shoes = /obj/item/clothing/shoes/workboots + ears = /obj/item/radio/headset/headset_frontier_colonist/cargodise/qm neck = /obj/item/clothing/neck/cloak/qm back = /obj/item/storage/backpack backpack_contents = list( diff --git a/modular_ss220/modules/access_upgrader/code/upgrader.dm b/modular_ss220/modules/access_upgrader/code/upgrader.dm new file mode 100644 index 00000000000000..860b3292f94f68 --- /dev/null +++ b/modular_ss220/modules/access_upgrader/code/upgrader.dm @@ -0,0 +1,45 @@ +/obj/item/circuitboard/computer/id_upgrader + name = "Generic ID Upgrade Machine circuit" + greyscale_colors = CIRCUIT_COLOR_GENERIC + build_path = /obj/machinery/computer/id_upgrader + +/obj/machinery/computer/id_upgrader + name = "ID Upgrade Machine" + desc = "An old computer, that can add access to the card." + icon = 'modular_ss220/modules/access_upgrader/icons/pass.dmi' + density = FALSE + icon_state = "guest" + icon_screen = "pass" + circuit = /obj/item/circuitboard/computer/id_upgrader + var/list/access_to_give = list(ACCESS_AWAY_GENERAL) + +/obj/machinery/computer/id_upgrader/attackby(obj/item/I, mob/user, params) + if(I.GetID()) + var/obj/item/card/id/D = I.GetID() + if(!access_to_give.len) + to_chat(user, "This machine appears to be configured incorrectly.") + return + var/did_upgrade = 0 + var/list/id_access = D.GetAccess() + for(var/this_access in access_to_give) + if(!(this_access in id_access)) + D.access |= this_access + did_upgrade = 1 + if(did_upgrade) + add_fingerprint(user) + to_chat(user, "An access type was added to your ID card.") + else + to_chat(user, "Your ID card already has all the access this machine can give.") + return + return ..() + +/obj/machinery/computer/id_upgrader/away_sec + name = "ID Upgrade Machine" + desc = "An old computer, that can add access a the card" + circuit = /obj/item/circuitboard/computer/id_upgrader/away_sec + access_to_give = list(ACCESS_AWAY_SEC) + +/obj/item/circuitboard/computer/id_upgrader/away_sec + name = "Old Security ID Upgrade Machine circuit" + greyscale_colors = CIRCUIT_COLOR_GENERIC + build_path = /obj/machinery/computer/id_upgrader/away_sec diff --git a/modular_ss220/modules/access_upgrader/icons/pass.dmi b/modular_ss220/modules/access_upgrader/icons/pass.dmi new file mode 100644 index 0000000000000000000000000000000000000000..ee18291693181bc5d62b1f10099a42774daafc8d GIT binary patch literal 583 zcmV-N0=WH&P)P)t-s|Ns9S z92`_sQ~*9rC@3fZ0RI30uswA3IXO81ApfYSr~m)}{{S<9009600Dyo1Mn*V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+(=$pS zoZ^zil2jm5DZMncxI~GIGbOXA7|1u|;!G<_%uR)`QB}n!73F8A<`Gm}kXT$yq=`8o z7v&}vXX8?@tl;YB0`?dHD`Y_z;`6dT0003RNkl_{MrWD>Gd$hH4P>KK;_uK81mt%QY&Ib87LW{?gCx*8pMYT@$c!m)^$;x$ zNaXo`1O`!X%bP+L>?cG4nGyzO{(@6QKc~K7zwy34M1aYq<3L3x~O2#QPh}1*OB2o#^akL9j9l$J6m-r(v{9!E3Jh zI~c7^0=*kz)p#iA3KMM_Fh@3s{RYv0q3N2gzq_|Jh~0@Rvrw%ss4 literal 0 HcmV?d00001 diff --git a/modular_ss220/modules/loadout_addiction/code/accessory.dm b/modular_ss220/modules/loadout_addiction/code/accessory.dm new file mode 100644 index 00000000000000..ca596242eb6b79 --- /dev/null +++ b/modular_ss220/modules/loadout_addiction/code/accessory.dm @@ -0,0 +1,3 @@ +/datum/loadout_item/accessory/armband_red + name = "Red Armband" + item_path = /obj/item/clothing/accessory/armband diff --git a/modular_ss220/modules/return_prs/black_mesa/code/drops.dm b/modular_ss220/modules/return_prs/black_mesa/code/drops.dm index 30ab8bf0cf0a27..d31aa776fd74b0 100644 --- a/modular_ss220/modules/return_prs/black_mesa/code/drops.dm +++ b/modular_ss220/modules/return_prs/black_mesa/code/drops.dm @@ -1,8 +1,8 @@ /obj/effect/spawner/random/hecu_smg name = "HECU SMG drops" spawn_all_loot = FALSE - loot = list(/obj/item/gun/ballistic/automatic/sol_smg = 15, - /obj/item/ammo_box/magazine/c35sol_pistol/stendo = 25, + loot = list(/obj/item/gun/ballistic/automatic/p90 = 15, + /obj/item/ammo_box/magazine/p90 = 25, /obj/item/clothing/mask/gas/hecu2 = 15, /obj/item/clothing/head/helmet = 15, /obj/item/clothing/suit/armor/vest = 15, diff --git a/modular_ss220/modules/return_prs/black_mesa/hev_suit/code/hev_suit.dm b/modular_ss220/modules/return_prs/black_mesa/hev_suit/code/hev_suit.dm index c9d5d5711dbecf..0149a40c34f054 100644 --- a/modular_ss220/modules/return_prs/black_mesa/hev_suit/code/hev_suit.dm +++ b/modular_ss220/modules/return_prs/black_mesa/hev_suit/code/hev_suit.dm @@ -34,7 +34,10 @@ desc = "The Mark IV HEV suit helmet." icon = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/icons/helmeq.dmi' worn_icon = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/icons/helmet.dmi' - icon_state = "hev" + worn_icon_muzzled = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/icons/helmet_m.dmi' + icon_state = "hev-IV" + base_icon_state = "hev" + inhand_icon_state = "syndicate-helm-orange" armor_type = /datum/armor/space_hev_suit obj_flags = NO_MAT_REDEMPTION resistance_flags = LAVA_PROOF|FIRE_PROOF|UNACIDABLE|ACID_PROOF|INDESTRUCTIBLE|FREEZE_PROOF @@ -46,6 +49,12 @@ slowdown = 0 max_heat_protection_temperature = 25000 min_cold_protection_temperature = 2 + var/has_flashlight = TRUE + +/obj/item/clothing/head/helmet/space/hev_suit/Initialize(mapload) + . = ..() + if(has_flashlight) + AddComponent(/datum/component/seclite_attachable, starting_light = new /obj/item/flashlight/seclite(src), light_icon_state = "IV", is_light_removable = FALSE) /datum/armor/space_hev_suit melee = 20 @@ -88,6 +97,7 @@ clothing_flags = STOPSPRESSUREDAMAGE|THICKMATERIAL|SNUG_FIT|LAVAPROTECT max_heat_protection_temperature = 25000 min_cold_protection_temperature = 2 + var/radio_key = /obj/item/encryptionkey ///Whether or not the suit is activated/activating. var/activated = FALSE @@ -190,6 +200,7 @@ /obj/item/clothing/suit/space/hev_suit/Initialize(mapload) . = ..() internal_radio = new(src) + internal_radio.keyslot = new radio_key internal_radio.subspace_transmission = TRUE internal_radio.canhear_range = 0 // anything greater will have the bot broadcast the channel as if it were saying it out loud. internal_radio.recalculateChannels() @@ -568,14 +579,6 @@ current_user.adjustStaminaLoss(-heal_amount) healing_current_cooldown = world.time + health_static_cooldown * 2 - if(new_oxyloss) - if(use_hev_power(HEV_POWERUSE_HEAL)) - current_user.adjustOxyLoss(-heal_amount) - healing_current_cooldown = world.time + health_static_cooldown - send_message("ADRENALINE ADMINISTERED", HEV_COLOR_BLUE) - send_hev_sound(morphine_sound) - return - if(new_bruteloss) if(use_hev_power(HEV_POWERUSE_HEAL)) current_user.adjustBruteLoss(-heal_amount) @@ -592,6 +595,14 @@ send_hev_sound(wound_sound) return + if(new_oxyloss) + if(use_hev_power(HEV_POWERUSE_HEAL)) + current_user.adjustOxyLoss(-heal_amount) + healing_current_cooldown = world.time + health_static_cooldown + send_message("ADRENALINE ADMINISTERED", HEV_COLOR_BLUE) + send_hev_sound(morphine_sound) + return + if(new_toxloss) if(use_hev_power(HEV_POWERUSE_HEAL)) current_user.adjustToxLoss(-heal_amount) @@ -693,7 +704,8 @@ if(current_internals_tank) REMOVE_TRAIT(current_internals_tank, TRAIT_NODROP, "hev_trait") if(current_user) - send_message("SYSTEMS DEACTIVATED", HEV_COLOR_RED) + if(activating||activated) + send_message("SYSTEMS DEACTIVATED", HEV_COLOR_RED) REMOVE_TRAIT(current_user, list(TRAIT_GUNFLIP,TRAIT_GUN_NATURAL), "hev_trait") UnregisterSignal(current_user, list( COMSIG_ATOM_ACID_ACT, @@ -718,6 +730,7 @@ icon = 'modular_ss220/modules/return_prs/black_mesa/icons/misc/hecucloth.dmi' worn_icon = 'modular_ss220/modules/return_prs/black_mesa/icons/misc/hecumob.dmi' worn_icon_digi = 'modular_ss220/modules/return_prs/black_mesa/icons/misc/hecumob_muzzled.dmi' + inhand_icon_state = "blueshift_helmet" icon_state = "hecu_helm" armor_type = /datum/armor/hev_suit_pcv flags_inv = HIDEHAIR @@ -731,6 +744,7 @@ visor_flags_inv = null visor_flags = null slowdown = 0 + has_flashlight = FALSE uses_advanced_reskins = TRUE unique_reskin = list( "Basic" = list( @@ -782,6 +796,7 @@ worn_icon = 'modular_ss220/modules/return_prs/black_mesa/icons/misc/hecumob.dmi' worn_icon_digi = 'modular_ss220/modules/return_prs/black_mesa/icons/misc/hecumob_digi.dmi' icon_state = "hecu_vest" + inhand_icon_state = "swat_suit" armor_type = /datum/armor/hev_suit_pcv flags_inv = null allowed = list(/obj/item/gun, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/energy/sword, /obj/item/restraints/handcuffs, /obj/item/tank/internals) @@ -790,6 +805,8 @@ resistance_flags = FIRE_PROOF|ACID_PROOF|FREEZE_PROOF clothing_flags = SNUG_FIT show_hud = FALSE + radio_key = /obj/item/encryptionkey/headset_faction + radio_channel = RADIO_CHANNEL_FACTION uses_advanced_reskins = TRUE unique_reskin = list( "Basic" = list( @@ -836,6 +853,7 @@ blood_toxins_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/blood_toxins.ogg' biohazard_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/biohazard_detected.ogg' chemical_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/chemical_detected.ogg' + radiation_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/radiation_detected.ogg' minor_fracture_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/minor_fracture.ogg' major_fracture_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/major_fracture.ogg' diff --git a/modular_ss220/modules/return_prs/black_mesa/hev_suit/icons/helmeq.dmi b/modular_ss220/modules/return_prs/black_mesa/hev_suit/icons/helmeq.dmi index 39081d3cde41f08773de638a76adcfdee4074ecc..8399331b08f73b37914dcd4f3de6edff9e380c39 100644 GIT binary patch delta 1248 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 MI)>V{nhwwZ3ow^2AOHXW literal 0 HcmV?d00001 diff --git a/modular_ss220/modules/return_prs/novaya_ert/code/voskhod.dm b/modular_ss220/modules/return_prs/novaya_ert/code/voskhod.dm new file mode 100644 index 00000000000000..ff21bb4d30c1b3 --- /dev/null +++ b/modular_ss220/modules/return_prs/novaya_ert/code/voskhod.dm @@ -0,0 +1,172 @@ +#define NRI_POWERUSE_HIT 100 +#define NRI_POWERUSE_HEAL 150 + +#define NRI_COOLDOWN_HEAL (10 SECONDS) +#define NRI_COOLDOWN_RADS (20 SECONDS) +#define NRI_COOLDOWN_ACID (20 SECONDS) + +#define NRI_HEAL_AMOUNT 10 +#define NRI_BLOOD_REPLENISHMENT 20 + +/obj/item/clothing/suit/space/hev_suit/nri + name = "\improper VOSKHOD powered combat armor" + desc = "A hybrid set of space-resistant armor built on a modified mass-produced Nomex-Aerogel flight suit, polyurea coated durathread-lined light plasteel plates hinder mobility as little as possible while the onboard life support system aids the user in combat. The power cell is what makes the armor work without hassle, a sticker in the power supply unit warns anyone reading to responsibly manage battery levels." + icon = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/icons/hevsuiteq.dmi' + worn_icon = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/icons/hevsuit.dmi' + worn_icon_digi = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/icons/hevsuit_digi.dmi' + worn_icon_teshari = 'modular_ss220/modules/return_prs/novaya_ert/icons/tesha.dmi' + icon_state = "nri_soldier" + armor_type = /datum/armor/hev_suit_nri + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDESEXTOY|HIDETAIL + allowed = list(/obj/item/gun, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/energy/sword, /obj/item/restraints/handcuffs, /obj/item/tank/internals) + cell = /obj/item/stock_parts/power_store/cell/bluespace + actions_types = list(/datum/action/item_action/hev_toggle/nri, /datum/action/item_action/hev_toggle_notifs/nri, /datum/action/item_action/toggle_spacesuit) + resistance_flags = FIRE_PROOF|UNACIDABLE|ACID_PROOF|FREEZE_PROOF + clothing_flags = STOPSPRESSUREDAMAGE|SNUG_FIT + clothing_traits = list(TRAIT_BRAWLING_KNOCKDOWN_BLOCKED) + + activation_song = null //No nice song. + radio_key = /obj/item/encryptionkey/headset_cent + radio_channel = RADIO_CHANNEL_CENTCOM + + armor_unpowered = /datum/armor/hev_suit_nri + armor_powered = /datum/armor/hev_suit_nri/powered + heal_amount = NRI_HEAL_AMOUNT + blood_replenishment = NRI_BLOOD_REPLENISHMENT + health_static_cooldown = NRI_COOLDOWN_HEAL + rads_static_cooldown = NRI_COOLDOWN_RADS + acid_static_cooldown = NRI_COOLDOWN_ACID + suit_name = "VOSKHOD" + first_use = FALSE //No nice song. + + logon_sound = null + armor_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/02_powerarmor_on.ogg' + atmospherics_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/03_atmospherics_on.ogg' + vitalsigns_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/04_vitalsigns_on.ogg' + automedic_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/05_automedic_on.ogg' + weaponselect_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/06_weaponselect_on.ogg' + munitions_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/07_munitionview_on.ogg' + communications_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/08_communications_on.ogg' + safe_day_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/09_safe_day.ogg' + + batt_50_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/power_level_is_fifty.ogg' + batt_40_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/power_level_is_fourty.ogg' + batt_30_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/power_level_is_thirty.ogg' + batt_20_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/power_level_is_twenty.ogg' + batt_10_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/power_level_is_ten.ogg' + + near_death_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/near_death.ogg' + health_critical_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/health_critical.ogg' + health_dropping_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/health_dropping2.ogg' + + blood_loss_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/blood_loss.ogg' + blood_toxins_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/blood_toxins.ogg' + biohazard_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/biohazard_detected.ogg' + chemical_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/chemical_detected.ogg' + radiation_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/radiation_detected.ogg' + + minor_fracture_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/minor_fracture.ogg' + major_fracture_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/major_fracture.ogg' + minor_lacerations_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/minor_lacerations.ogg' + major_lacerations_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/major_lacerations.ogg' + + morphine_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/morphine_shot.ogg' + wound_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/wound_sterilized.ogg' + antitoxin_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/antitoxin_shot.ogg' + antidote_sound = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/sound/pcv/antidote_shot.ogg' + + + +/datum/armor/hev_suit_nri + melee = 25 + bullet = 25 + laser = 25 + energy = 25 + bomb = 25 + bio = 25 + fire = 30 + acid = 30 + wound = 30 + consume = 10 + +/datum/armor/hev_suit_nri/powered + melee = 40 + bullet = 50 + laser = 30 + energy = 40 + bomb = 60 + bio = 75 + fire = 50 + acid = 50 + wound = 50 + consume = 40 + +/obj/item/clothing/head/helmet/space/hev_suit/nri + name = "\improper VOSKHOD powered combat armor helmet" + desc = "A composite graphene-plasteel helmet with a ballistic nylon inner padding, complete with a deployable airtight polycarbonate visor and respirator system. 'НРИ - Оборонная Коллегия' is imprinted on the back." + icon = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/icons/helmeq.dmi' + worn_icon = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/icons/helmet.dmi' + worn_icon_muzzled = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/icons/helmet_m.dmi' + worn_icon_teshari = 'modular_ss220/modules/return_prs/black_mesa/hev_suit/icons/helmet_m.dmi' + icon_state = "nri_soldier" + armor_type = /datum/armor/hev_suit_nri + flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT + obj_flags = null + supports_variations_flags = CLOTHING_SNOUTED_VARIATION + resistance_flags = FIRE_PROOF|UNACIDABLE|ACID_PROOF|FREEZE_PROOF + clothing_flags = STOPSPRESSUREDAMAGE|SNUG_FIT|BLOCK_GAS_SMOKE_EFFECT|HEADINTERNALS + clothing_traits = list(TRAIT_HEAD_INJURY_BLOCKED) + flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH | PEPPERPROOF + flash_protect = FLASH_PROTECTION_WELDER + visor_flags_inv = HIDEMASK|HIDEEYES|HIDEFACE|HIDEFACIALHAIR + visor_flags = STOPSPRESSUREDAMAGE + slowdown = 0 + has_flashlight = FALSE + +/obj/item/clothing/head/helmet/space/hev_suit/nri/captain + name = "\improper VOSKHOD-2 powered combat armor helmet" + desc = "A black composite polyurea coated graphene-plastitanium helmet with durathread inner padding, complete with a deployable airtight tinted plasmaglass visor and a kevlar-lined respirator system. 'НРИ - Оборонная Коллегия' is imprinted on the back." + icon_state = "nri_captain" + +/obj/item/clothing/head/helmet/space/hev_suit/nri/medic + name = "\improper VOSKHOD-KH powered combat armor helmet" + desc = "A combat medic's composite graphene-titanium helmet with bio-resistant padding, complete with a deployable airtight polycarbonate visor and optimized respirator system. 'НРИ - Оборонная Коллегия' is imprinted on the back." + icon_state = "nri_medic" + +/obj/item/clothing/head/helmet/space/hev_suit/nri/engineer + name = "\improper VOSKHOD-IN powered combat armor helmet" + desc = "A composite tungsten-plasteel helmet with a lead-lined ballistic nylon inner padding, complete with a deployable airtight polycarbonate visor and respirator system. 'НРИ - Оборонная Коллегия' is imprinted on the back." + icon_state = "nri_engineer" + +/datum/action/item_action/hev_toggle/nri + name = "Toggle VOSKHOD Suit" + button_icon = 'modular_ss220/modules/return_prs/novaya_ert/icons/toggles.dmi' + button_icon_state = "system_off" + +/datum/action/item_action/hev_toggle_notifs/nri + name = "Toggle VOSKHOD Suit Notifications" + button_icon = 'modular_ss220/modules/return_prs/novaya_ert/icons/toggles.dmi' + button_icon_state = "sound_VOICE_AND_TEXT" + +/obj/item/clothing/suit/space/hev_suit/nri/captain + name = "\improper VOSKHOD-2 powered combat armor" + desc = "A unique hybrid set of space-resistant armor made for high-ranking NRI operatives, built on a proprietary durathread padded, Akulan made Larr'Takh silk utility uniform. Polyurea coated hexagraphene-lined plastitanium plates hinder mobility as little as possible while the onboard life support system aids the user in combat. The power cell is what makes the armor work without hassle, a sticker in the power supply unit warns anyone reading to responsibly manage battery levels." + icon_state = "nri_captain" + +/obj/item/clothing/suit/space/hev_suit/nri/medic + name = "\improper VOSKHOD-KH powered combat armor" + desc = "A hybrid set of space-resistant armor built on a modified mass-produced Dipolyester-Aerogel surgeon field jumpsuit, polyurea coated titanium plates hinder mobility as little as possible while the onboard life support system aids the user in combat and provides additional medical functions. The power cell is what makes the armor work without hassle, a sticker in the power supply unit warns anyone reading to responsibly manage battery levels." + icon_state = "nri_medic" + +/obj/item/clothing/suit/space/hev_suit/nri/engineer + name = "\improper VOSKHOD-IN powered combat armor" + desc = "A hybrid set of space-resistant armor built on a modified Nanotrasen heavy-duty engineering undersuit, polyurea coated lead-lined light plasteel plates hinder mobility as little as possible and offer additional radiation protection while the onboard life support system aids the user in combat. The power cell is what makes the armor work without hassle, a sticker in the power supply unit warns anyone reading to responsibly manage battery levels." + icon_state = "nri_engineer" + +#undef NRI_POWERUSE_HIT +#undef NRI_POWERUSE_HEAL +#undef NRI_COOLDOWN_HEAL +#undef NRI_COOLDOWN_RADS +#undef NRI_COOLDOWN_ACID +#undef NRI_HEAL_AMOUNT +#undef NRI_BLOOD_REPLENISHMENT diff --git a/modular_ss220/modules/return_prs/novaya_ert/icons/tesha.dmi b/modular_ss220/modules/return_prs/novaya_ert/icons/tesha.dmi new file mode 100644 index 0000000000000000000000000000000000000000..9e950d6c171fa268dd2e896a1289a12d8b67d9c4 GIT binary patch literal 1836 zcmV+{2h;e8P)C0000;P)t-sz`(!= z2NM<+FDfc3D?3Vme}7d~RZnef4h{|g000CU3>ZHaP--@el47NDGG7`CGXVjAMjH?k z8hC|;Jw{Cv8bwKfow~ZZLmuHz00001bW%=J06^y0W&i*Hih5L7bVOxyV{&P5bZKvH z004NLQ&wLfPl<~&C9|j)q?L;^ttc@!6~s0~Ra=~&laiTQM3mapy!6bx zR3a7Urlw>j<5H=t;OgfB_8$O+5<{}8RW08D00sO>L_t(|ob6lDlH({0G*(OyPGXF` zlmGwIYuUSZ_dv^2J2f>g=pj>;#;Apaf@EeGx^(H%rAwDC|CcaA0>|YxjyL%}{bQIQ zVPtrWcSwxh6t|nF;dY~wn}oX&xYH#_Vgw}d8Kz0R6#_U-9FAt4SxHQcQO1-;ah4!O zNgjbD(V>qBFak6RLbzjz#+Z1Nj6sv5AtmJwKKv&T>ZdW-3QBbR2n~*Y;2ysuAvgry5#>IRq&9-0=@#IH5N@e82k>D2mozqU6YL_@q??P5BKH z?(k$2*APTP&?avB1E?t+*@P9&RWpMy&~X@}ZNqpU#ukBbP(>I9)h3P@0mm@jLudyY z*4AtTdlEyKJ{f_8NND32fd#U^%?U);8O$6?L{`(C-8Ht z{yp5KOP4NPx^%ggJUJ(9bDp1>YRHd6JO*IsX#js0hI&w-Q%v%BJ|Fa04#A=R z>8O~WIQVl|XFJqOn#rLhqxzp`RQP-eauSc2q1*G0^m<4hI6t7v_)#O6wMDD{Np3D`WuA-uy$>1VpyhSLDqx- zhddrh8w?V@MUWswGHr9@Y05$mz5v8VZ~|CAaCpv50-FCLklQL|_)xOsb`>^0h~#o{$8C%-&D zdZ4_IHY96vCa2dKkw*Of01}N?9b2OI%6H3hj{dLr2h2O%Lzb&7A9^_1p#O@JEcaV% zgRpJ-8G?Gn;9@}U4|M6$rAwDCKQFHZ^5S?|Ua!~kefp32UrS;5x~|KD4`&LP;AwEp z1AM-?q*KUh1Xu6S2n~)3ShsjD*H=3>PqLCRX*ySEa?a&z^lm7?IySjUwDy2C2>1mC zIAHNEFqCB}9s$EST&z7{4FWQzNHhXb_#8#t*Mg{AoQIe7Xb+(NU7Jw=9IIoOFxvQF zg+aNxKTv2{VBMkP)T-^*zZM*4kgoLgaG9j6UVmUMGO;Cqak?(0EUU5$49gj$3%kHj z?D{}iWocK}i>$>i5D*4hhNWPW7i5~!>JI=vn^mY^UFmHJ!s{deM=Ftg;mj#fnG?gu9 zCgjPsl=a2=n}vWq++U31J(4|Y4E?v6(xYVjzE62BO-?#1i^lv!P{QCGsHEi1(;xf44 z2MavdYO;@y4?0G6Bd|NCu4rrI&;vi`Kvb>nzzQ%Y)JZVGE)#bWs=D`^Yk0p=|2h1Q z@;s$VY}jKo0{C`@rI@j8s1P`C(IagAxw&#UI z6w|>Rh~?R8-S=8I)*sl;^1O{71ng=!HS&NoF#<4fuN$Q9tUs`y)o~j)4Ho6P)wYrN z8X$HF<5v-7)3i;9vD)en)Zq_-CT^SD(%7z?fbN#+SgJ7R8-Y~W{}=4lf)py+HdOQA zo9RCpyv@gS8*itDG?&#Ksc_q=6EXG1^`8t7XO(W0z1sZ&whNIdtL1^}ygok`fx^RK zzOzrOHTe<^(@WgybFX-|^4hJ=zuq7C>ivN)_6N*=SN8|Z%N(}Hc?@0ST6dqp#ekpa a5Bvk6aY+{pI~I@t0000e((r_tNR&e!m0S7h!U^;7* z-3l;q000AJNklYPxWMg}+cx1egh1-QNkDP`Wc%-OWqITzq(_8_A|#8T5%(!aYB zTvyO>S5$y1Q2`)#e~$hTFHt~!bv|P2rUHDAQ2p_k2zK#f1x?dz6i|u}ekwq1PG{u) z==)y4KNaxfapOPD`}LSE5!DY#() z=yxo_^i(o|e}I=N_=t^yop|FX6>MX(2Rre`zf`a}MMC~LD z&j&{Tug?cY|F6#niodtwPV@Ix+-d&aiaX8UTXCoPe|szLG=Fc!o#yYYxYPW-6?gmo ze*IcnaJTR8HUF>S8wKV5e^BRxwSr>*KMvY_uvSp)|3`#8AFLG=`+p`7=YzF^kI?-8 zM!`qW1o-Gt;%Gk5{QqVTKJ$M-@c1Rz=|J)SgMwp-?H@Fz9nA-t|JU&;{?7+h<^yY} z{=Nc%f9&t=1d6|}Kp^}38U&)hHxp?7-WsaEHxp?7-WsaEuR|Ap83|1cJY>LLmA33IwvhuR$RC`x*qIzptV|^7mB~NdCTx0?FT3 zQLu_(7@xy9eX1!~#`p)thk-x;M8QbKpHKeOD>7cIcyiFsO2$j^_Z0}Fs9~=)e{YMw XtALZ?{t!de00000NkvXXu0mjf-?8(n delta 816 zcmV-01JC@V3GD}v7Y;xO0{{R3(&~ad0000yktH`C5&#hoO;<<+6+u%ZtN;K20d!JM zQvg8b*k%9#0G*M2gMWzAP+44(nj4>=N3_bcG+auR6>w740N~zYVeZu{{O#r1aWR>!v);R-Kn*8>(gf@R4g}6Bg;eC@k0XB#7dx;PHCZrhgDK5wQ4`4yZ1#45ls;*iB$rq5zARI|%1P)&Zp`ts()H8Ao7R<~a)R z__>2{_$U{kY)o`*FeF_v3=U@5cpy-;dw%|JU#v{&ioCtrl-click to [folded ? "extend" : "collapse"] the stock.") + +/obj/item/gun/ballistic/automatic/cmg/item_ctrl_click(mob/user) + if((!user.is_holding(src)) || (item_flags & IN_STORAGE)) + return CLICK_ACTION_BLOCKING + toggle_stock(user) + +/obj/item/gun/ballistic/automatic/cmg/proc/toggle_stock(mob/user, var/forced) + if(!user && forced) // for the possible case of having every shipped CMG be pre-folded + folded = !folded + update_fold_stats() + return + balloon_alert(user, "[folded ? "extending" : "collapsing"] stock...") + if(!do_after(user, toggle_time)) + balloon_alert(user, "interrupted!") + return + folded = !folded + update_fold_stats() + balloon_alert(user, "stock [folded ? "collapsed" : "extended"]") + playsound(src.loc, folding_sound, 30, 1) + +/obj/item/gun/ballistic/automatic/cmg/proc/update_fold_stats() + if(folded) + spread = folded_spread + if(suppressed) + w_class = WEIGHT_CLASS_BULKY + else + w_class = WEIGHT_CLASS_NORMAL + else + spread = unfolded_spread + if(suppressed) + w_class = WEIGHT_CLASS_HUGE + else + w_class = WEIGHT_CLASS_BULKY + update_icon() + +/obj/item/gun/ballistic/automatic/cmg/update_overlays() + . = ..() + . += "[icon_state]-stock[folded ? "_in" : "_out"]" + +/obj/item/gun/ballistic/automatic/cmg/Initialize(mapload) + . = ..() + AddComponent(/datum/component/automatic_fire, 0.4 SECONDS) + +/obj/item/gun/ballistic/automatic/cmg/add_seclight_point() + AddComponent(/datum/component/seclite_attachable, \ + light_overlay_icon = 'icons/obj/weapons/guns/flashlights.dmi', \ + light_overlay = "flight", \ + overlay_x = 24, \ + overlay_y = 10) + +/obj/item/gun/ballistic/automatic/cmg/give_manufacturer_examine() + AddElement(/datum/element/manufacturer_examine, COMPANY_NANOTRASEN) + +/obj/item/gun/ballistic/automatic/cmg/add_bayonet_point() + AddComponent(/datum/component/bayonet_attachable, offset_x = 26, offset_y = 10) + +/obj/item/ammo_box/magazine/multi_sprite/cmg + name = "9x25mm lethal PDW magazine" + icon = 'modular_ss220/modules/return_prs/sec_haul/icons/mags.dmi' + icon_state = "g11_lethal" + ammo_type = /obj/item/ammo_casing/c9mm + caliber = CALIBER_9MM + max_ammo = 24 + multiple_sprites = AMMO_BOX_FULL_EMPTY + +/obj/item/ammo_box/magazine/multi_sprite/cmg/empty + name = "9x25mm PDW magazine" + icon_state = "g11" + start_empty = 1 + +/obj/item/ammo_box/magazine/multi_sprite/cmg/hp + name = "9x25mm hollow-point PDW magazine" + icon_state = "g11_hollowpoint" + ammo_type = /obj/item/ammo_casing/c9mm/hp + +/obj/item/ammo_box/magazine/multi_sprite/cmg/ap + name = "9x25mm armor-piercing PDW magazine" + icon_state = "g11_ap" + ammo_type = /obj/item/ammo_casing/c9mm/ap + +/obj/item/ammo_box/magazine/multi_sprite/cmg/fire + name = "9x25mm incendiary PDW magazine" + icon_state = "g11_incendiary" + ammo_type = /obj/item/ammo_casing/c9mm/fire + +/obj/item/ammo_box/magazine/multi_sprite/cmg/ihdf + name = "9x25mm IHDF PDW magazine" + icon_state = "g11_ihdf" + ammo_type = /obj/item/ammo_casing/c9mm/ihdf + +/obj/item/ammo_box/magazine/multi_sprite/cmg/rubber + name = "9x25mm rubber PDW magazine" + icon_state = "g11_rubber" + ammo_type = /obj/item/ammo_casing/c9mm/rubber + +/obj/item/gun/ballistic/automatic/cmg/nomag + spawnwithmagazine = FALSE + +/obj/item/suppressor/nanotrasen + name = "NT-S suppressor" + desc = "A Nanotrasen brand small-arms suppressor, including a large NT logo stamped on the side." + +/obj/item/storage/toolbox/guncase/nova/blueshield_cmg + name = "Blueshield's CMG-2 guncase" + +/obj/item/storage/toolbox/guncase/nova/blueshield_cmg/PopulateContents() + new /obj/item/gun/ballistic/automatic/cmg/nomag(src) + new /obj/item/ammo_box/magazine/multi_sprite/cmg/rubber(src) + new /obj/item/ammo_box/magazine/multi_sprite/cmg/rubber(src) + new /obj/item/ammo_box/magazine/multi_sprite/cmg(src) + new /obj/item/ammo_box/magazine/multi_sprite/cmg(src) + new /obj/item/suppressor/nanotrasen(src) + + diff --git a/modular_ss220/modules/return_prs/sec_haul/icons/guns.dmi b/modular_ss220/modules/return_prs/sec_haul/icons/guns.dmi new file mode 100644 index 0000000000000000000000000000000000000000..dee10514a2f624458927a36a1e31606967fca9dc GIT binary patch literal 1432 zcmZWodooL4?FUt`tz3aS|TaDc7HE9;itPyIWhe%#LXG^F1d5u1g2#k1w zglveQ{io;o^;Z?%KygU{#d07ge?n7&iezmsT?K14H^x4vhniApHiL`Mj zQrU_(Kgm#84~QrAoZuVm2kZlZ0@JsVLlQ+|KeGXx>7CG*Dgr3k19yz`FM(0v^!gL? z_%F@3wqqp-hGb(#;AZFG`>-zCAp(|Xz&bO7|KKj^THUA${+3#ajvV|PA<7=tMJLkz&BZ{w0HJM9D;viYi-Y-K_dvOcGz?hF_tc+KSYckI<{ZZSHPtCC4^uD+c0CEB53te!Ydw@(9r) z5Q*6Sd$GsW)b3x8tT67bg;Z8r66@bz!9708R&1 z?dnBNW9v0%3B!YF^JVM;MKo7ti|Z>o93@yVnv-YcNgi#}XL_fDNweE8mR;JO^rYH! z>5?F=bzx3O>2D<+ri$Eys~#avu{y*;Mfms_>pXlF=W+y^Xj)Nv(=T>Xo%s`CB6xp0 zXWJQY6wP34LUGp@vhBCb7i!C9uLk8S#*gN#c}m6x80WIU^GslULhF`U@?yq%tMFMl zovb@%q`3*KN3UIc1e$9>uCC$OHUrLIscHe#1LOX6A$lg$^}p;$!vHZSuK3a@_Ft203TFmMB* z*u+l%Dy5?Y?^~<8{yo5*BsNNd`Ep0}Hdl&j`((JY_4tvzYq2JpPs`E(QXHHCnq6AP_jdrKP2>Z>dngAx^6iejyo> zDKm?eX1^PjRT*mG@Hw}|otNbmGP<=*uL#@Ep@P3(sibWCWJCYr?O6l zLrYJ&gbJetnQ2KKsZ@~M{&m)yRZ-mxQM~4D>h1qgd+uwZhBlhwY#QR?YPjpL1TMb+ zrRl^Kn()VDO3%5PkqLx-=KR_cl{wq0qoR+2u~HwZ@G!U+8SAiQE}(aCL@{WB)bvFh b1R9~Y4-apgOmfyS`G*H(<%q1e@JaX^&G)ch literal 0 HcmV?d00001 diff --git a/modular_ss220/modules/return_prs/sec_haul/icons/mags.dmi b/modular_ss220/modules/return_prs/sec_haul/icons/mags.dmi new file mode 100644 index 0000000000000000000000000000000000000000..7849871a87acdd0b84211e049485a376fa193e8b GIT binary patch literal 894 zcmeAS@N?(olHy`uVBq!ia0vp^3qY8I8A$FCoGuTf5(0ceTn`*L5Ez~xBuHP96xq+Whle) z<;$B6-H@Mj$Reft=#`=eCTuNp{5EJXgcZ6jQey)e-glk|4ie28U-i(tw=v zRUr{2E~&-IMVSR9nfZAP3>9;xPIlxvWFX*r{iLST?yxnxN|kjlweD?NqL#~)8FcB& zqqn`=67HTjlV`W*yp4of>hniIVLJP#eNp_oU~Z~<*`0S9Gq-SPwH=-(q*}WAkWAZw z=APtBX^~Ey7wS4R7ccp^XY%JgX=a;V9~O2oTWl!sVc8tRyjOF#F`hnLS{IdIn*06| z*IC<~B=l?C0wDlKx zt3TuDy|=CN&p&_od9(cfE%6n9f4*SeT3-FIo0<9l=Z3I-zF!*~f!y8fZvVcEZ)0I+ z11ev?C+Xq+`|iOfzl*1BzOj4nhwh_FHFckW)`395e4gF>&+Nj#%b#_>@qJVI?_KeF z(+lN&KDzxl|1({({uR)K__bk^H}EfGZq?_z0_5uR@%)3d{r5zBpL=f^Ar?Halk}2b^L^*xhXUXBzPY>aUH|dqAAjDs&bOZHm-=UA z^>*=pHFoXi&&Pe)`N-kz-MAl*4jkyVyKZanAy2>N`+*bPcHs~&oYEEpsyY2s=-b{W zKxMDLO4-?0LhNAJ;UBaAw|>n2*V4D&|2p<<_r8sP*X8E`xz~ZQ&A`xhMtq`Y*0EU` QvkO67Pgg&ebxsLQ0LCD*BLDyZ literal 0 HcmV?d00001 From 9959b89ad671c1b2298d3dd028d0cbbf4cd0c466 Mon Sep 17 00:00:00 2001 From: Arceniu <129214736+Arceniu@users.noreply.github.com> Date: Thu, 5 Dec 2024 21:16:21 +0300 Subject: [PATCH 02/15] add: tgstation.dme update --- tgstation.dme | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tgstation.dme b/tgstation.dme index 9dc8aedb0f7ff1..bed6ed1ed5019e 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -8752,6 +8752,7 @@ #include "modular_nova\modules\xenoarchartifacts\obj\particle_battery.dm" #include "modular_nova\modules\xenoarchartifacts\obj\wave_scanner.dm" #include "modular_ss220\master_files_skyrat\code\modules\client\preferences\emote_panel.dm" +#include "modular_ss220\modules\access_upgrader\code\upgrader.dm" #include "modular_ss220\modules\auto_cryo\autocryo.dm" #include "modular_ss220\modules\auto_cryo\autocryo_config.dm" #include "modular_ss220\modules\cyrillic_key_fixes\code\client_procs.dm" @@ -8762,6 +8763,7 @@ #include "modular_ss220\modules\discord\new_player.dm" #include "modular_ss220\modules\discord\verb.dm" #include "modular_ss220\modules\events\round_event.dm" +#include "modular_ss220\modules\loadout_addiction\code\accessory.dm" #include "modular_ss220\modules\new_world_topics\world_topic.dm" #include "modular_ss220\modules\paradise_keybindings\code\keybinding\admin.dm" #include "modular_ss220\modules\paradise_keybindings\code\keybinding\artificial_intelligence.dm" @@ -8839,6 +8841,8 @@ #include "modular_ss220\modules\return_prs\gunsgalore\code\guns\ppsh.dm" #include "modular_ss220\modules\return_prs\gunsgalore\code\guns\scar.dm" #include "modular_ss220\modules\return_prs\gunsgalore\code\guns\stg.dm" +#include "modular_ss220\modules\return_prs\novaya_ert\code\voskhod.dm" +#include "modular_ss220\modules\return_prs\sec_haul\code\cmg.dm" #include "modular_ss220\modules\shutdown\shutdown_config.dm" #include "modular_ss220\modules\translations\code\customer_ru.dm" #include "modular_ss220\modules\tts\code\_tts_defines.dm" From 37e62a0a771be2cda0bd6382a0b024ffb311a238 Mon Sep 17 00:00:00 2001 From: Arceniu <129214736+Arceniu@users.noreply.github.com> Date: Thu, 5 Dec 2024 21:40:40 +0300 Subject: [PATCH 03/15] bugfix: offs changed sound file dislocation --- modular_ss220/modules/return_prs/sec_haul/code/cmg.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_ss220/modules/return_prs/sec_haul/code/cmg.dm b/modular_ss220/modules/return_prs/sec_haul/code/cmg.dm index d4510bc416374d..7ecc469e55386a 100644 --- a/modular_ss220/modules/return_prs/sec_haul/code/cmg.dm +++ b/modular_ss220/modules/return_prs/sec_haul/code/cmg.dm @@ -26,7 +26,7 @@ // IHDF: 30 * 0.5 = 15 stam /// what sound do we play when finished adjusting the stock? - var/folding_sound = 'sound/weapons/batonextend.ogg' + var/folding_sound = 'sound/items/weapons/batonextend.ogg' /// is our stock collapsed? var/folded = FALSE /// how long does it take to extend/collapse the stock From 4ea930780c6ba0a5bdc9a799adf0b9ca87c5f009 Mon Sep 17 00:00:00 2001 From: Arceniu <129214736+Arceniu@users.noreply.github.com> Date: Thu, 5 Dec 2024 22:08:29 +0300 Subject: [PATCH 04/15] bugfix: computer --- .../modules/access_upgrader/icons/pass.dmi | Bin 583 -> 607 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/modular_ss220/modules/access_upgrader/icons/pass.dmi b/modular_ss220/modules/access_upgrader/icons/pass.dmi index ee18291693181bc5d62b1f10099a42774daafc8d..b8cdd06d1a14e94227b33fbeed7a6fc9fcd6825b 100644 GIT binary patch delta 498 zcmV_ARr(B{{R300AF8U z{{S<90000rYXAQLfPer-Mn*^g0RR90Gcz+*Tp%_80003EbW%=J06^y0W&i*HkdcXb ze-l=pnwMIXnH-;;T8T@ovVyCh3pfw}!!}Mj-#b380003aNklP|XM>^n&AzC?H$Iz>IuZ@H(

NN z<16|I18m90&^H*yYWyk9VYfAV*Yg6bW;Ic7WqswA(sSarlKf{5`|BXB>9a; o3WEw%pn^XkNIi=bMNxi{FT!RYm6D8ubN~PV07*qoM6N<$f|66mA^-pY delta 474 zcmcc5a-5~UGr-TCmrII^fq{Y7)59eQNIQTq2Q!eIyS?!Zkn#@j332`Z|G$ikOh`xw zgPpI2h6V$}e+GsPwk2OJEiD-o{;ycE0;upmgK-0p{Lj$Pz~JWQ=E1;VY;4R>^q67h z|M>WL1qB6=Cethv#Tbx%j3q&ST)_+u&u*jvc`XxrD(fEytzYxt)pMqA5)9fYj^d9# zZ?Xfblk#+N42fucJLO_glYxM%u;QAWRZ32$|JP^gcSs~oolxSIK8xAd=I&wMl*J*B z-e2Hnc~Z`wW2W$4Yy!{BW|a$8^BWQsPxNROd==2;^?35Lj)g6-;Ph-Ku{Y{2j5CGU z(w-b<$>`JIwXHwIQc;;`Y}Uri8etRJE!W6fae_JNn_$gZ)|Rir3mNCxH62dktSwi| z-tpx(cl*wSBfq83ur573dG3ohsg4_rxQ}1{n6f-^i}%6obw8~o*7`E-l}@@^q49!C zxb|Mi1F1E6tXf+?`dlhL$Cw_aH1UT--26(ft9(iSik1uVl)hGQm)zuStQh)1pr*ft z`$xND3&YQCy@CerW*vXoF4ix6Icwei-P=t&?sjT#4p@KIN$KPHpRCKjDvN!KISPyr O1_n=8KbLh*2~7Z Date: Thu, 5 Dec 2024 22:26:47 +0300 Subject: [PATCH 05/15] fix: vendor rename update --- _maps/RandomRuins/SpaceRuins/nova/cargodiselost.dmm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_maps/RandomRuins/SpaceRuins/nova/cargodiselost.dmm b/_maps/RandomRuins/SpaceRuins/nova/cargodiselost.dmm index 2dbef429d2cfb3..279f49de98cdf5 100644 --- a/_maps/RandomRuins/SpaceRuins/nova/cargodiselost.dmm +++ b/_maps/RandomRuins/SpaceRuins/nova/cargodiselost.dmm @@ -2308,7 +2308,7 @@ /turf/open/floor/catwalk_floor/iron_dark, /area/ruin/space/has_grav/cargodise_freighter/primaryhall) "Iy" = ( -/obj/machinery/vending/medical/syndicate_access/cybersun{ +/obj/machinery/vending/medical/syndicate/cybersun{ req_access = null }, /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ @@ -2735,7 +2735,7 @@ /turf/open/floor/iron/dark, /area/ruin/space/has_grav/cargodise_freighter/mining) "Ox" = ( -/obj/machinery/vending/boozeomat/all_access, +/obj/machinery/vending/boozeomat, /turf/open/floor/iron/kitchen, /area/ruin/space/has_grav/cargodise_freighter/kitchen) "Oy" = ( From 98b3d979b8f0f760302a1a9e694ec9e53ca59baf Mon Sep 17 00:00:00 2001 From: Arceniu <129214736+Arceniu@users.noreply.github.com> Date: Sat, 7 Dec 2024 18:54:24 +0300 Subject: [PATCH 06/15] bugfix: cmg cant change to no burst mode --- modular_ss220/modules/return_prs/sec_haul/code/cmg.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/modular_ss220/modules/return_prs/sec_haul/code/cmg.dm b/modular_ss220/modules/return_prs/sec_haul/code/cmg.dm index 7ecc469e55386a..9b1857ec0543b8 100644 --- a/modular_ss220/modules/return_prs/sec_haul/code/cmg.dm +++ b/modular_ss220/modules/return_prs/sec_haul/code/cmg.dm @@ -10,7 +10,6 @@ accepted_magazine_type = /obj/item/ammo_box/magazine/multi_sprite/cmg fire_delay = 2 burst_size = 2 - actions_types = list() pin = /obj/item/firing_pin/implant/mindshield mag_display = TRUE mag_display_ammo = TRUE From 90c5652b2dcb29390166a4233816681e0cfe714d Mon Sep 17 00:00:00 2001 From: Arceniu <129214736+Arceniu@users.noreply.github.com> Date: Sat, 7 Dec 2024 19:15:03 +0300 Subject: [PATCH 07/15] fix cmg sprite --- .../return_prs/sec_haul/icons/guns.dmi | Bin 1432 -> 1387 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/modular_ss220/modules/return_prs/sec_haul/icons/guns.dmi b/modular_ss220/modules/return_prs/sec_haul/icons/guns.dmi index dee10514a2f624458927a36a1e31606967fca9dc..634d78f1527427a860969c7d9e8a6f6b5df00088 100644 GIT binary patch delta 1163 zcmbQi{hDjShx#;67srr_IdAVC^j1!nIrj1RrDl=NNoA7X5_TJIT5#!=BZnx9v%ix! z|E6{>Cr!C3t-st=E4076h93!U0cIioEO2wK^F}TX7mcnnl*EZ$; zj4LU!rLXpM-seBz^Jw;mGk-p%r7^wVBg6m#9Y+GH?i`uRSpR?W!Y?~c%GUo5zGIoU z>-yrF%_n`Xc?1>6cucDMR^R>Ut>AK?Kt?El(Gmc&Ny7c*x+ln`Z1)A@7#$Oap-kg?Vv-V=* z`ltVkS>qQU4o;sJA6KVS@9BGVw#01HGUwptnajR*Zj8LV?!@2DCC{EMo1*~Zue1HPe7QPlWvze> zkbm~YhUGB_ucsfDzcwFe%bK69M}L_g<>%kG{{569)fMm8d{4i3b@os5Gk5EEzchXu zb8&|GJO1PsOt+Kfv4rxf{C?FRz47SQBG!28=-rd9lxceY{If3VrN4@))tk)Pwb#@v z_@?kn+pzUkJ{DVbV4M3rxi2L`A+x)zt=_!6_-ga7$6>AdqP0`C8@-P1+ve?AwQJ+8 zPnYwmTSBaz>jT%uBnYpMPrkQfZuEo8kL#1(M%+0e_Wk-+`PZ#8XYNbSnOMH9?CN}v zS1K!3*-yN3@L%HXr>pm!lBzy(?_Jp1xzfMaFYSAMFl^{!Q;S z!#{*-{fheajJx*B$DF?|ul8(yS{Cz4FmcC}?@p}Sj^^mRa@gb#iUoz6>d`T`pS`~{ zf6}_JnEI1zn(FY>YXK<0J*VsDt$dLUlzo2r zytuMubID5gmWM(2Jh&!Eosp=%8KU*e_xP37-{Mx5{f$}2vN67>ORv8r}DeY#GI1OoNy)K*%|*?;cxeX6CseOhcX;^zRCGnSMP4E-#2;lO{u9@BrO?X zYLI9L^(3mQ0yjVY=@57@UlQj9^Dp(yNw^W zn>XC;T*p_NQg@GIhn?2BuQjp$^= zNjl=Q&rA;=CRvemtH@bwf>Fc2F>>~{VysXmNcH>laZlt>&yF{ zdloNj{3yIXKB7X;^LYI!X~}aE@B5A=uS}lq-e$Zk^yI^N9m|#L@!i>i zL2o(!zD@ipQ~vRl=`-G2Gg;;L>Rqdk>z1y3`ft;x;Jq_WcDf(at~B1gw!q(o{oTSt zwt{cPzD4EvS8HX@5wyO2^OlA6xAU$pBfq@^oau?A3K-*uj$Hwhkx@hs&-lZ4PHq(sm-Ch=S(em4@s+%{puimo{UzPVD-}28U&HQM)?tkz5Bs|mQ3}TO@ z%Er)a@|kgE-be?-0YM~nZi-qe)nx{4qtQJI=%4m z)9Kl#!=+!%(F^(DtFc}3{hwpMe?M)Q{NwsGzb%$qqM?`1!h%G9YenY!%B>lOABO%|^-QH@WZQo|hZiC3WanCACgi(`;n z2VwsCFwO4Y*W-JpzK+g~ug|Ww^K@4%pXV2`bJ?=sPmy~coQW1qf9Z?)C{ QElZF^p00i_>zopr0Otc&vH$=8 From 88a91255d16cbe25104ba81f8992ae80bdf01fb7 Mon Sep 17 00:00:00 2001 From: Arceniu <129214736+Arceniu@users.noreply.github.com> Date: Sat, 7 Dec 2024 21:03:15 +0300 Subject: [PATCH 08/15] qol: bs hellfire spawns with mindshield pin --- modular_nova/modules/blueshield/code/blueshield.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modular_nova/modules/blueshield/code/blueshield.dm b/modular_nova/modules/blueshield/code/blueshield.dm index 46f0cef28a6a0b..2dd06d0146c2f0 100644 --- a/modular_nova/modules/blueshield/code/blueshield.dm +++ b/modular_nova/modules/blueshield/code/blueshield.dm @@ -88,12 +88,13 @@ name ="modified hellfire laser gun" desc = "A lightly overtuned version of NT's Hellfire Laser rifle, scratches showing its age and the fact it has definitely been owned before. This one is more energy efficient without sacrificing damage." icon_state = "hellgun" + pin = /obj/item/firing_pin/implant/mindshield ammo_type = list(/obj/item/ammo_casing/energy/laser/hellfire/blueshield) /obj/item/choice_beacon/blueshield name = "gunset beacon" desc = "A single use beacon to deliver a gunset of your choice. Please only call this in your office" - company_source = "Sol Defense Contracting" + company_source = "Sol and Nanotrasen collaboration in defense" company_message = span_bold("Supply Pod incoming, please stand by.") /obj/item/choice_beacon/blueshield/generate_display_names() From 95a48f73cf070136b906e6d2ba11a4a14c0952db Mon Sep 17 00:00:00 2001 From: Arceniu <129214736+Arceniu@users.noreply.github.com> Date: Thu, 19 Dec 2024 15:12:55 +0300 Subject: [PATCH 09/15] add: microfusion --- code/game/machinery/recharger.dm | 1 + code/modules/mod/modules/modules_security.dm | 2 +- .../modules/gunhud/code/gun_hud_component.dm | 37 + .../microfusion/code/_microfusion_defines.dm | 31 + .../microfusion/code/cargo_stuff.dm | 126 +++ .../return_prs/microfusion/code/gun_types.dm | 81 ++ .../microfusion/code/microfusion_cell.dm | 239 ++++++ .../code/microfusion_cell_attachments.dm | 110 +++ .../microfusion/code/microfusion_designs.dm | 431 ++++++++++ .../code/microfusion_energy_master.dm | 778 ++++++++++++++++++ .../code/microfusion_gun_attachments.dm | 572 +++++++++++++ .../microfusion/code/microfusion_techweb.dm | 118 +++ .../microfusion/code/phase_emitter.dm | 257 ++++++ .../microfusion/code/projectiles.dm | 103 +++ .../microfusion/icons/guns_lefthand.dmi | Bin 0 -> 840 bytes .../microfusion/icons/guns_righthand.dmi | Bin 0 -> 814 bytes .../microfusion/icons/microfusion_cells.dmi | Bin 0 -> 2060 bytes .../icons/microfusion_gun40x32.dmi | Bin 0 -> 5942 bytes .../icons/microfusion_gun_attachments.dmi | Bin 0 -> 5234 bytes .../microfusion/icons/projectiles.dmi | Bin 0 -> 416 bytes .../return_prs/microfusion/sound/burn.ogg | Bin 0 -> 34599 bytes .../microfusion/sound/incinerate.ogg | Bin 0 -> 29379 bytes .../return_prs/microfusion/sound/laser_1.ogg | Bin 0 -> 14749 bytes .../microfusion/sound/mag_insert.ogg | Bin 0 -> 9407 bytes .../return_prs/microfusion/sound/melt.ogg | Bin 0 -> 26683 bytes .../return_prs/microfusion/sound/overheat.ogg | Bin 0 -> 64084 bytes .../return_prs/microfusion/sound/vaporize.ogg | Bin 0 -> 35624 bytes tgstation.dme | 11 + .../tgui/interfaces/MicrofusionGunControl.jsx | 302 +++++++ 29 files changed, 3198 insertions(+), 1 deletion(-) create mode 100644 modular_ss220/modules/return_prs/microfusion/code/_microfusion_defines.dm create mode 100644 modular_ss220/modules/return_prs/microfusion/code/cargo_stuff.dm create mode 100644 modular_ss220/modules/return_prs/microfusion/code/gun_types.dm create mode 100644 modular_ss220/modules/return_prs/microfusion/code/microfusion_cell.dm create mode 100644 modular_ss220/modules/return_prs/microfusion/code/microfusion_cell_attachments.dm create mode 100644 modular_ss220/modules/return_prs/microfusion/code/microfusion_designs.dm create mode 100644 modular_ss220/modules/return_prs/microfusion/code/microfusion_energy_master.dm create mode 100644 modular_ss220/modules/return_prs/microfusion/code/microfusion_gun_attachments.dm create mode 100644 modular_ss220/modules/return_prs/microfusion/code/microfusion_techweb.dm create mode 100644 modular_ss220/modules/return_prs/microfusion/code/phase_emitter.dm create mode 100644 modular_ss220/modules/return_prs/microfusion/code/projectiles.dm create mode 100644 modular_ss220/modules/return_prs/microfusion/icons/guns_lefthand.dmi create mode 100644 modular_ss220/modules/return_prs/microfusion/icons/guns_righthand.dmi create mode 100644 modular_ss220/modules/return_prs/microfusion/icons/microfusion_cells.dmi create mode 100644 modular_ss220/modules/return_prs/microfusion/icons/microfusion_gun40x32.dmi create mode 100644 modular_ss220/modules/return_prs/microfusion/icons/microfusion_gun_attachments.dmi create mode 100644 modular_ss220/modules/return_prs/microfusion/icons/projectiles.dmi create mode 100644 modular_ss220/modules/return_prs/microfusion/sound/burn.ogg create mode 100644 modular_ss220/modules/return_prs/microfusion/sound/incinerate.ogg create mode 100644 modular_ss220/modules/return_prs/microfusion/sound/laser_1.ogg create mode 100644 modular_ss220/modules/return_prs/microfusion/sound/mag_insert.ogg create mode 100644 modular_ss220/modules/return_prs/microfusion/sound/melt.ogg create mode 100644 modular_ss220/modules/return_prs/microfusion/sound/overheat.ogg create mode 100644 modular_ss220/modules/return_prs/microfusion/sound/vaporize.ogg create mode 100644 tgui/packages/tgui/interfaces/MicrofusionGunControl.jsx diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 7454f185511505..12daa2d466ab39 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -13,6 +13,7 @@ var/finished_recharging = FALSE var/static/list/allowed_devices = typecacheof(list( + /obj/item/gun/microfusion, /obj/item/gun/energy, /obj/item/melee/baton/security, /obj/item/ammo_box/magazine/recharge, diff --git a/code/modules/mod/modules/modules_security.dm b/code/modules/mod/modules/modules_security.dm index 8edcaff7715f00..2e148c4b0ba93e 100644 --- a/code/modules/mod/modules/modules_security.dm +++ b/code/modules/mod/modules/modules_security.dm @@ -19,7 +19,7 @@ /obj/item/mod/module/magnetic_harness/Initialize(mapload) . = ..() if(!guns_typecache) - guns_typecache = typecacheof(list(/obj/item/gun/ballistic, /obj/item/gun/energy, /obj/item/gun/grenadelauncher, /obj/item/gun/chem, /obj/item/gun/syringe)) + guns_typecache = typecacheof(list(/obj/item/gun/ballistic, /obj/item/gun/energy, /obj/item/gun/grenadelauncher, /obj/item/gun/chem, /obj/item/gun/syringe, /obj/item/gun/microfusion)) /obj/item/mod/module/magnetic_harness/on_install() var/obj/item/clothing/suit = mod.get_part_from_slot(ITEM_SLOT_OCLOTHING) diff --git a/modular_nova/modules/gunhud/code/gun_hud_component.dm b/modular_nova/modules/gunhud/code/gun_hud_component.dm index 129e1967a0e016..03318be697b7ae 100644 --- a/modular_nova/modules/gunhud/code/gun_hud_component.dm +++ b/modular_nova/modules/gunhud/code/gun_hud_component.dm @@ -166,6 +166,43 @@ oth_h = "h9" hud.set_hud(backing_color, oth_o, oth_t, oth_h, indicator) + else if(istype(parent, /obj/item/gun/microfusion)) + var/obj/item/gun/microfusion/parent_gun = parent + if(!parent_gun.phase_emitter) + hud.icon_state = "microfusion_counter_no_emitter" + hud.maptext = null + return + if(parent_gun.phase_emitter.damaged) + hud.icon_state = "microfusion_counter_damaged" + hud.maptext = null + return + if(!parent_gun.cell) + hud.icon_state = "microfusion_counter_no_emitter" + hud.maptext = null + return + if(!parent_gun.cell.charge) + hud.icon_state = "microfusion_counter_no_emitter" + hud.maptext = null + return + var/phase_emitter_state = parent_gun.phase_emitter.get_heat_icon_state() + hud.icon_state = "microfusion_counter_[phase_emitter_state]" + hud.cut_overlays() + hud.maptext_x = -12 + var/obj/item/ammo_casing/energy/shot = parent_gun.microfusion_lens + var/battery_percent = FLOOR(clamp(parent_gun.cell.charge / parent_gun.cell.maxcharge, 0, 1) * 100, 1) + var/shot_cost_percent = FLOOR(clamp(shot.e_cost / parent_gun.cell.maxcharge, 0, 1) * 100, 1) + if(battery_percent > 99 || shot_cost_percent > 99) + hud.maptext_x = -12 + else + hud.maptext_x = -8 + if(!parent_gun.can_shoot()) + hud.icon_state = "microfusion_counter_no_emitter" + return + if(battery_percent <= 25) + hud.maptext = span_maptext("

[battery_percent]%
[shot_cost_percent]%
") + return + hud.maptext = span_maptext("
[battery_percent]%
[shot_cost_percent]%
") + /obj/item/gun/ballistic/Initialize(mapload) . = ..() AddComponent(/datum/component/ammo_hud) diff --git a/modular_ss220/modules/return_prs/microfusion/code/_microfusion_defines.dm b/modular_ss220/modules/return_prs/microfusion/code/_microfusion_defines.dm new file mode 100644 index 00000000000000..6b98dd2d43103e --- /dev/null +++ b/modular_ss220/modules/return_prs/microfusion/code/_microfusion_defines.dm @@ -0,0 +1,31 @@ +/// Returned when the phase emtiter process is successful. +#define SHOT_SUCCESS "success" +/// Returned when a gun is fired but there is no phase emitter. +#define SHOT_FAILURE_NO_EMITTER "no phase emitter!" + +// Slot defines for the gun. +/// The gun barrel slot. +#define GUN_SLOT_BARREL "barrel" +/// The gun underbarrel slot. +#define GUN_SLOT_UNDERBARREL "underbarrel" +/// The gun rail slot. +#define GUN_SLOT_RAIL "rail" +/// Unique slots, can hold as many as you want. +#define GUN_SLOT_UNIQUE "unique" +/// Camo slot. Because why would you put four overlapping camos on your gun? +#define GUN_SLOT_CAMO "camo" + +/// Techweb defines +#define TECHWEB_NODE_BASIC_MICROFUSION "basic_microfusion" +#define TECHWEB_NODE_ENHANCED_MICROFUSION "enhanced_microfusion" +#define TECHWEB_NODE_ADVANCED_MICROFUSION "advanced_microfusion" +#define TECHWEB_NODE_BLUESPACE_MICROFUSION "bluespace_microfusion" +#define TECHWEB_NODE_QUANTUM_MICROFUSION "quantum_microfusion" +#define TECHWEB_NODE_ILLEGAL_MICROFUSION "illegal_microfusion" +#define TECHWEB_NODE_CLOWN_MICROFUSION "clown_microfusion" + +/// Gun defines (spare, if off's delete original) +/* +#define COMPANY_MICRON "It has [span_cyan("Micron Control Sys.")] cut into it." + +*/ \ No newline at end of file diff --git a/modular_ss220/modules/return_prs/microfusion/code/cargo_stuff.dm b/modular_ss220/modules/return_prs/microfusion/code/cargo_stuff.dm new file mode 100644 index 00000000000000..33e4e136981ff5 --- /dev/null +++ b/modular_ss220/modules/return_prs/microfusion/code/cargo_stuff.dm @@ -0,0 +1,126 @@ +/datum/supply_pack/security/armory/mcr01adv + name = "MCR-01 advanced Microfusion Crate" + desc = "Micron Control Systems Incorporated supplied MCR-01 Microfusion weapons platform. Comes with 4 advanced guns!" + cost = CARGO_CRATE_VALUE * 20 + contains = list( + /obj/item/gun/microfusion/mcr01/advanced, + /obj/item/gun/microfusion/mcr01/advanced, + /obj/item/gun/microfusion/mcr01/advanced, + /obj/item/gun/microfusion/mcr01/advanced, + ) + crate_name = "MCR-01 Microfusion Crate" + +/datum/supply_pack/goody/mcr01basic + name = "MCR-01 Microfusion Single-Pack" + desc = "Micron Control Systems Incorporated supplied MCR-01 Microfusion weapons platform. Comes with 1 basic gun!" + cost = CARGO_CRATE_VALUE * 6 + access_view = ACCESS_WEAPONS + contains = list( + /obj/item/gun/microfusion/mcr01, + ) + +/datum/supply_pack/goody/mcr01surplus + name = "MCR-01 Microfusion? Single-Pack" + desc = "Micron Contral Sistems Incarparated supplies MCR-001 Microfysion weapons platform. Comes with 1 Er#*or# gun!" + cost = CARGO_CRATE_VALUE * 4 + contraband = TRUE + contains = list( + /obj/item/gun/microfusion/mcr01/surplus, + ) + + +/datum/supply_pack/security/microadvanced + name = "Assorted Microfusion Advanced Upgrade Crate" + desc = "Micron Control Systems Incorporated supplied Microfusion cells and emitters!" + cost = CARGO_CRATE_VALUE * 5 + contains = list( + /obj/item/microfusion_phase_emitter/advanced, + /obj/item/microfusion_phase_emitter/advanced, + /obj/item/stock_parts/power_store/cell/microfusion/advanced, + /obj/item/stock_parts/power_store/cell/microfusion/advanced, + ) + crate_name = "Microfusion Upgrade Crate (Advanced)" + +/datum/supply_pack/security/microbluespace + name = "Assorted Microfusion Bluespace Upgrade Crate" + desc = "Micron Control Systems Incorporated supplied Microfusion cells and emitters!" + cost = CARGO_CRATE_VALUE * 30 + contains = list( + /obj/item/microfusion_phase_emitter/bluespace, + /obj/item/microfusion_phase_emitter/bluespace, + /obj/item/stock_parts/power_store/cell/microfusion/bluespace, + /obj/item/stock_parts/power_store/cell/microfusion/bluespace, + ) + crate_name = "Microfusion Upgrade Crate (Bluespace)" + +/datum/supply_pack/security/mcr01_attachments_a + name = "MCR-01 Military Attachments Crate Type A" + desc = "Micron Control Systems Incorporated supplied MCR-01 Military spec attachments! This crate comes with two utilitarian repeater loadout." + cost = CARGO_CRATE_VALUE * 14 + contains = list( + /obj/item/microfusion_gun_attachment/grip, + /obj/item/microfusion_gun_attachment/grip, + /obj/item/microfusion_gun_attachment/rail, + /obj/item/microfusion_gun_attachment/rail, + /obj/item/microfusion_gun_attachment/barrel/repeater, + /obj/item/microfusion_gun_attachment/barrel/repeater, + ) + crate_name = "MCR-01 Military Attachments Crate Type A" + +/datum/supply_pack/security/mcr01_attachments_cell + name = "MCR-01 Military Cell Attachments Crate" + desc = "Micron Control Systems Incorporated supplied MCR-01 Military cell attachments! This crate comes with three overcapacity and stabiliser attachment." + cost = CARGO_CRATE_VALUE * 20 + contains = list( + /obj/item/microfusion_cell_attachment/overcapacity, + /obj/item/microfusion_cell_attachment/overcapacity, + /obj/item/microfusion_cell_attachment/overcapacity, + /obj/item/microfusion_cell_attachment/stabiliser, + /obj/item/microfusion_cell_attachment/stabiliser, + /obj/item/microfusion_cell_attachment/stabiliser, + ) + crate_name = "MCR-01 Military Cell Attachments Crate" + +/datum/supply_pack/security/mcr01_attachments_protocell + name = "MCR-01 Military Prototype Cell Attachment Crate" + desc = "Micron Control Systems Incorporated supplied MCR-01 Prototype Military cell attachments! This crate comes with one prototype self charge attachment." + cost = CARGO_CRATE_VALUE * 40 + contains = list( + /obj/item/microfusion_cell_attachment/selfcharging, + ) + crate_name = "MCR-01 Military Prototype Cell Attachments Crate" + +/datum/supply_pack/security/mcr01_attachments_type_b + name = "MCR-01 Military Attachments Crate Type B" + desc = "Micron Control Systems Incorporated supplied MCR-01 Military spec attachments! This crate comes in a mixed specialist loadout." + cost = CARGO_CRATE_VALUE * 16 + contains = list( + /obj/item/microfusion_gun_attachment/grip, + /obj/item/microfusion_gun_attachment/grip, + /obj/item/microfusion_gun_attachment/grip, + /obj/item/microfusion_gun_attachment/barrel/scatter, + /obj/item/microfusion_gun_attachment/barrel/scatter, + /obj/item/microfusion_gun_attachment/barrel/scatter, + /obj/item/microfusion_gun_attachment/scope, + /obj/item/microfusion_gun_attachment/barrel/lance, + ) + crate_name = "MCR-01 Military Attachments Crate Type B" + + +/datum/supply_pack/security/mcr01_attachments_h + name = "HCR-01 Military Attachments Crate Type H" + desc = "Honkicron Clownery Systems Inhonkorated supplied HCR-01 Clownery spec attachments! This crate oddly smells of bananas." + cost = CARGO_CRATE_VALUE * 20 + contraband = TRUE + contains = list( + /obj/item/microfusion_gun_attachment/barrel/honk, + /obj/item/microfusion_gun_attachment/barrel/honk, + /obj/item/microfusion_gun_attachment/barrel/honk, + /obj/item/microfusion_gun_attachment/camo/honk, + /obj/item/microfusion_gun_attachment/camo/honk, + /obj/item/microfusion_gun_attachment/camo/honk, + /obj/item/food/pie/cream, + /obj/item/food/pie/cream, + /obj/item/food/pie/cream, + ) + crate_name = "MCR-01 Military Attachments Crate Type H" diff --git a/modular_ss220/modules/return_prs/microfusion/code/gun_types.dm b/modular_ss220/modules/return_prs/microfusion/code/gun_types.dm new file mode 100644 index 00000000000000..e110efef8f4158 --- /dev/null +++ b/modular_ss220/modules/return_prs/microfusion/code/gun_types.dm @@ -0,0 +1,81 @@ +/obj/item/gun/microfusion/mcr01 + name = "MCR-01" + desc = "An advanced, modular energy weapon produced by Micron Control Systems. These cutting edge weapons differ from traditional beam weaponry in producing individual bolts, as well as being customizable to the user's preferences." + icon_state = "mcr01" + inhand_icon_state = "mcr01" + shaded_charge = TRUE + +/obj/item/gun/microfusion/mcr01/give_manufacturer_examine() + AddElement(/datum/element/manufacturer_examine, COMPANY_MICRON) + +/obj/item/gun/microfusion/mcr01/surplus + name = "MCR-01?" + cell_type = /obj/item/stock_parts/power_store/cell/microfusion/makeshift + phase_emitter_type = /obj/item/microfusion_phase_emitter/makeshift + +/obj/item/gun/microfusion/mcr01/enhanced + name = "enhanced MCR-01" + cell_type = /obj/item/stock_parts/power_store/cell/microfusion/enhanced + phase_emitter_type = /obj/item/microfusion_phase_emitter/enhanced + +/obj/item/gun/microfusion/mcr01/advanced + name = "advanced MCR-01" + cell_type = /obj/item/stock_parts/power_store/cell/microfusion/advanced + phase_emitter_type = /obj/item/microfusion_phase_emitter/advanced + + +/obj/item/gun/microfusion/mcr01/bluespace + name = "elite MCR-01" + cell_type = /obj/item/stock_parts/power_store/cell/microfusion/bluespace + phase_emitter_type = /obj/item/microfusion_phase_emitter/bluespace + +/obj/item/gun/microfusion/mcr01/nanocarbon + name = "Nanocarbon Destroyer" + desc = "The pinnacle of the Nanocarbon weapon line. This weapon is the ultimate in power and performance. It is capable of firing a wide variety of beams, including a wide range of energy types, and is capable of firing a wide variety of frequencies." + icon_state = "mcr01" + inhand_icon_state = "mcr01" + shaded_charge = TRUE + phase_emitter_type = /obj/item/microfusion_phase_emitter/nanocarbon + cell_type = /obj/item/stock_parts/power_store/cell/microfusion/nanocarbon + attachments = list( + /obj/item/microfusion_gun_attachment/barrel/pulse, + /obj/item/microfusion_gun_attachment/grip, + /obj/item/microfusion_gun_attachment/rail, + /obj/item/microfusion_gun_attachment/camo, + ) + +//For syndicate uplink. +/obj/item/gun/microfusion/mcr01/syndie + name = "SCR-01" + desc = "A Syndicate brand copy of the MCR-01. It comes with a proprietary suppressor and some tactical attachments." + cell_type = /obj/item/stock_parts/power_store/cell/microfusion/advanced + phase_emitter_type = /obj/item/microfusion_phase_emitter/advanced + attachments = list( + /obj/item/microfusion_gun_attachment/barrel/suppressor, + /obj/item/microfusion_gun_attachment/grip, + /obj/item/microfusion_gun_attachment/rail, + /obj/item/microfusion_gun_attachment/camo/syndicate, + ) + + +/obj/item/storage/box/ammo_box/microfusion/advanced + name = "advanced microfusion cell container" + desc = "A box filled with microfusion cells." + +/obj/item/storage/box/ammo_box/microfusion/advanced/PopulateContents() + new /obj/item/stock_parts/power_store/cell/microfusion/advanced(src) + new /obj/item/stock_parts/power_store/cell/microfusion/advanced(src) + new /obj/item/stock_parts/power_store/cell/microfusion/advanced(src) + +/* +* MICROFUSION SPAWNERS +*/ + +/obj/effect/spawner/armory_spawn/microfusion + guns = list( + /obj/item/gun/microfusion/mcr01, + /obj/item/gun/microfusion/mcr01, + /obj/item/gun/microfusion/mcr01, + /obj/item/gun/microfusion/mcr01, + ) + diff --git a/modular_ss220/modules/return_prs/microfusion/code/microfusion_cell.dm b/modular_ss220/modules/return_prs/microfusion/code/microfusion_cell.dm new file mode 100644 index 00000000000000..90f1ca05162bf9 --- /dev/null +++ b/modular_ss220/modules/return_prs/microfusion/code/microfusion_cell.dm @@ -0,0 +1,239 @@ +/* +MICROFUSION CELL SYSTEM + +Microfusion cells are small battery units that house controlled nuclear fusion within, and that fusion is converted into useable energy. + +They cannot be charged as standard, and require upgrades to do so. + +These are basically advanced cells. +*/ + +/// The amount of cell charge drained during a drain failure. +#define MICROFUSION_CELL_DRAIN_FAILURE STANDARD_CELL_CHARGE * 0.5 +/// The heavy EMP range for when a cell suffers an EMP failure. +#define MICROFUSION_CELL_EMP_HEAVY_FAILURE 2 +/// The light EMP range for when a cell suffers an EMP failure. +#define MICROFUSION_CELL_EMP_LIGHT_FAILURE 4 +/// The radiation range for when a cell suffers a radiation failure. +#define MICROFUSION_CELL_RADIATION_RANGE_FAILURE 1 + +/// The lower most time for a microfusion cell meltdown. +#define MICROFUSION_CELL_FAILURE_LOWER (10 SECONDS) +/// The upper most time for a microfusion cell meltdown. +#define MICROFUSION_CELL_FAILURE_UPPER (15 SECONDS) + + + +/obj/item/stock_parts/power_store/cell/microfusion //Just a standard cell. + name = "microfusion cell" + desc = "A standard-issue microfusion cell, produced by Micron Control Systems. For safety reasons, they cannot be charged unless they are inside of a compatible Micron Control Systems firearm." + icon = 'modular_ss220/modules/return_prs/microfusion/icons/microfusion_cells.dmi' + charging_icon = "mf_in" //This is stored in cell.dmi in the aesthetics module + icon_state = "microfusion" + w_class = WEIGHT_CLASS_NORMAL + maxcharge = STANDARD_CELL_CHARGE //12 shots + chargerate = 0 //MF cells should be unable to recharge if they are not currently inside of an MCR + microfusion_readout = TRUE + empty = TRUE //MF cells should start empty + charge_light_type = "microfusion" + + /// A hard referenced list of upgrades currently attached to the weapon. + var/list/attachments = list() + /// Are we melting down? For icon stuffs. + var/meltdown = FALSE + /// How many upgrades can you have on this cell? + var/max_attachments = 1 + /// Hard ref to the parent gun. + var/obj/item/gun/microfusion/parent_gun + /// Do we play an alarm when empty? + var/empty_alarm = TRUE + /// What sound do we play when empty? + var/empty_alarm_sound = 'sound/items/weapons/gun/general/empty_alarm.ogg' + /// Do we have the self charging upgrade? + var/self_charging = FALSE + /// The probability of the cell failing, either through being makeshift or being used in something it shouldn't + var/fail_prob = 10 + +/obj/item/stock_parts/power_store/cell + /// Is this cell stabilised? (used in microfusion guns) + var/stabilised = FALSE + /// Do we show the microfusion readout instead of KJ? + var/microfusion_readout = FALSE + +/obj/item/stock_parts/cell/microfusion/Initialize(mapload) + . = ..() + START_PROCESSING(SSobj, src) + +/obj/item/stock_parts/power_store/cell/microfusion/Destroy() + if(attachments.len) + for(var/obj/item/iterating_item as anything in attachments) + iterating_item.forceMove(get_turf(src)) + attachments = null + parent_gun = null + STOP_PROCESSING(SSobj, src) + return ..() + +/obj/item/stock_parts/power_store/cell/microfusion/attackby(obj/item/attacking_item, mob/living/user, params) + if(istype(attacking_item, /obj/item/microfusion_cell_attachment)) + add_attachment(attacking_item, user) + return + return ..() + +/obj/item/stock_parts/power_store/cell/microfusion/attack_self(mob/user) + if(charge) + cell_removal_discharge() + return ..() + +/obj/item/stock_parts/power_store/cell/microfusion/emp_act(severity) + . = ..() + var/prob_percent = charge / 100 * severity + if(prob(prob_percent) && !meltdown && !stabilised) + process_instability() + +/obj/item/stock_parts/power_store/cell/microfusion/use(amount, force = FALSE) + if(!parent_gun) // If an MCR cell is used in anything that's not an MCR, you might have problems + if(prob(fail_prob)) + process_instability() + if(charge >= amount) + var/check_if_empty = charge - amount + if(check_if_empty < amount && empty_alarm && !self_charging) + playsound(src, empty_alarm_sound, 50) + return ..() + +/obj/item/stock_parts/power_store/cell/microfusion/proc/process_instability() + var/seconds_to_explode = rand(MICROFUSION_CELL_FAILURE_LOWER, MICROFUSION_CELL_FAILURE_UPPER) + meltdown = TRUE + say("Malfunction in [seconds_to_explode / 10] seconds!") + playsound(src, 'sound/machines/warning-buzzer.ogg', 30, FALSE, FALSE) + add_filter("rad_glow", 2, list("type" = "outline", "color" = "#ff5e0049", "size" = 2)) + addtimer(CALLBACK(src, PROC_REF(process_failure)), seconds_to_explode) + +/obj/item/stock_parts/power_store/cell/microfusion/proc/process_failure() + remove_filter("rad_glow") + playsound(src, 'sound/effects/spray.ogg', 70) + switch(rand(1, 4)) + if(1) // Charge drain + charge = clamp(charge - MICROFUSION_CELL_DRAIN_FAILURE, 0, maxcharge) + if(2) // Explosion + explode() + if(3) // Emp pulse + empulse(get_turf(src), 2, 4, FALSE) // 2 Heavy, 4 Light + if(4) // Deathly radiation pulse + radiation_pulse(src, 2, RAD_MEDIUM_INSULATION, 30) + meltdown = FALSE + +/obj/item/stock_parts/power_store/cell/microfusion/update_overlays() + . = ..() + for(var/obj/item/microfusion_cell_attachment/microfusion_cell_attachment as anything in attachments) + . += microfusion_cell_attachment.attachment_overlay_icon_state + +/obj/item/stock_parts/power_store/cell/microfusion/screwdriver_act(mob/living/user, obj/item/tool) + if(!attachments.len) + balloon_alert(user, "no attachments!") + return + remove_attachments() + playsound(src, 'sound/items/tools/screwdriver.ogg', 70, TRUE) + balloon_alert(user, "attachments removed") + +/obj/item/stock_parts/power_store/cell/microfusion/process(seconds_per_tick) + for(var/obj/item/microfusion_cell_attachment/microfusion_cell_attachment as anything in attachments) + microfusion_cell_attachment.process_attachment(src, seconds_per_tick) + +/obj/item/stock_parts/power_store/cell/microfusion/examine(mob/user) + . = ..() + . += span_notice("It can hold [max_attachments] attachment(s).") + . += span_warning("Inserting this into anything other than a microfusion rifle might be a terrible idea.") + if(attachments.len) + for(var/obj/item/microfusion_cell_attachment/microfusion_cell_attachment as anything in attachments) + . += span_notice("It has a [microfusion_cell_attachment.name] installed.") + . += span_notice("Use a screwdriver to remove the attachments.") + . += span_notice("Using this in hand will discharge the cell, if there is any inside of it preventing insertion into microfusion guns.") + +/obj/item/stock_parts/power_store/cell/microfusion/proc/add_attachment(obj/item/microfusion_cell_attachment/microfusion_cell_attachment, mob/living/user, obj/item/gun/microfusion/microfusion_gun) + if(attachments.len >= max_attachments) + balloon_alert(user, "can't attach more!") + return FALSE + if(is_type_in_list(microfusion_cell_attachment, attachments)) + balloon_alert(user, "already installed!") + return FALSE + attachments += microfusion_cell_attachment + microfusion_cell_attachment.forceMove(src) + microfusion_cell_attachment.add_attachment(src) + balloon_alert(user, "installed attachment") + playsound(src, 'sound/effects/structure_stress/pop2.ogg', 70, TRUE) + update_appearance() + return TRUE + +/obj/item/stock_parts/power_store/cell/microfusion/proc/remove_attachments() + for(var/obj/item/microfusion_cell_attachment/microfusion_cell_attachment in attachments) + microfusion_cell_attachment.remove_attachment(src) + microfusion_cell_attachment.forceMove(get_turf(src)) + attachments -= microfusion_cell_attachment + update_appearance() + +/obj/item/stock_parts/power_store/cell/microfusion/proc/inserted_into_weapon() + chargerate = STANDARD_CELL_CHARGE * 0.2 + +/obj/item/stock_parts/power_store/cell/microfusion/proc/cell_removal_discharge() + chargerate = 0 + charge = 0 + do_sparks(4, FALSE, src) + update_appearance() + +/datum/crafting_recipe/makeshift/microfusion_cell + name = "Makeshift Microfusion Cell" + tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER, TOOL_WELDER) + result = /obj/item/stock_parts/power_store/cell/microfusion/makeshift + reqs = list( + /obj/item/trash/can = 1, + /obj/item/stack/sheet/iron = 1, + /obj/item/stack/cable_coil = 1, + ) + time = 12 SECONDS + category = CAT_MISC + +//WHY WOULD YOU MAKE THIS? +/obj/item/stock_parts/power_store/cell/microfusion/makeshift + name = "makeshift microfusion cell" + desc = "An... Apparatus, comprised of an everyday aluminum can with several civilian-grade batteries tightly packed together and plugged in. This vaguely resembles a microfusion cell, if you tilt your head to a precise fifty degree angle. While the effects on enemy combatants may be dubious, it will certainly do incredible damage to the gun's warranty. What the hell were you thinking when you came up with this?" + icon_state = "microfusion_makeshift" + maxcharge = STANDARD_CELL_CHARGE * 0.5 + max_attachments = 0 + +/obj/item/stock_parts/power_store/cell/microfusion/makeshift/use(amount, force = FALSE) + if(prob(fail_prob)) + process_instability() + return ..() + +/obj/item/stock_parts/power_store/cell/microfusion/enhanced + name = "enhanced microfusion cell" + desc = "A second generation microfusion cell, weighing about the same as the standard-issue cell and having the same space for attachments; however, it has a higher capacity." + icon_state = "microfusion_enhanced" + maxcharge = STANDARD_CELL_CHARGE * 1.4 + +/obj/item/stock_parts/power_store/cell/microfusion/advanced + name = "advanced microfusion cell" + desc = "A third generation microfusion cell, boasting a much higher shot count. Additionally, these come with support for up to three modifications to the cell itself." + icon_state = "microfusion_advanced" + maxcharge = STANDARD_CELL_CHARGE * 1.5 + max_attachments = 3 + +/obj/item/stock_parts/power_store/cell/microfusion/bluespace + name = "bluespace microfusion cell" + desc = "A fourth generation microfusion cell, employing bluespace technology to store power in a medium that's bigger on the inside. This has the highest capacity of any man-portable cell, and has flexibility for four different attachments to the cell itself." + icon_state = "microfusion_bluespace" + maxcharge = STANDARD_CELL_CHARGE * 1.6 + max_attachments = 4 + +/obj/item/stock_parts/power_store/cell/microfusion/nanocarbon + name = "nanocarbon fusion cell" + desc = "This cell combines both top-of-the-line nanotech and advanced microfusion power to brute force the most common issue of Nanotrasen Asset Protection operatives, ammunition, through sheer volume. Intended for use with Nanotrasen-brand capacitor arrays only. Warranty void if dropped in toilet." + icon_state = "microfusion_nanocarbon" + maxcharge = STANDARD_CELL_CHARGE * 60 // Wanted to put 69 here to fit with the 420 but eh this werks too + max_attachments = 420 + + +#undef MICROFUSION_CELL_DRAIN_FAILURE + +#undef MICROFUSION_CELL_FAILURE_LOWER +#undef MICROFUSION_CELL_FAILURE_UPPER diff --git a/modular_ss220/modules/return_prs/microfusion/code/microfusion_cell_attachments.dm b/modular_ss220/modules/return_prs/microfusion/code/microfusion_cell_attachments.dm new file mode 100644 index 00000000000000..33aeeb25c6b723 --- /dev/null +++ b/modular_ss220/modules/return_prs/microfusion/code/microfusion_cell_attachments.dm @@ -0,0 +1,110 @@ +/* +MICROFUSION CELL UPGRADE ATTACHMENTS + +For adding unique abilities to microfusion cells. These cannot directly interact with the gun. +*/ + +/obj/item/microfusion_cell_attachment + name = "microfusion cell attachment" + desc = "broken" + icon = 'modular_ss220/modules/return_prs/microfusion/icons/microfusion_cells.dmi' + w_class = WEIGHT_CLASS_NORMAL + /// The overlay that will be automatically added, must be in the cells icon. + var/attachment_overlay_icon_state + /// Does this attachment process with the cell? + var/processing_attachment = FALSE + + +/obj/item/microfusion_cell_attachment/proc/add_attachment(obj/item/stock_parts/power_store/cell/microfusion/microfusion_cell) + SHOULD_CALL_PARENT(TRUE) + START_PROCESSING(SSobj, microfusion_cell) + return + +/obj/item/microfusion_cell_attachment/proc/process_attachment(obj/item/stock_parts/power_store/cell/microfusion/microfusion_cell, seconds_per_tick) + return PROCESS_KILL + +/obj/item/microfusion_cell_attachment/proc/remove_attachment(obj/item/stock_parts/power_store/cell/microfusion/microfusion_cell) + SHOULD_CALL_PARENT(TRUE) + STOP_PROCESSING(SSobj, microfusion_cell) + return + +/* +OVERCAPACITY ATTACHMENT + +Increases the cell capacity by a set percentage. +*/ +/obj/item/microfusion_cell_attachment/overcapacity + name = "overcapacity microfusion cell attachment" + desc = "An attachment which increases the capacity of the microfusion cell it's attached to. These are an additional, smaller capacitor, using a system to automatically switch from the cell to the capacitor as it's depleted, maximizing the weapon's charge." + icon_state = "attachment_overcapacity" + attachment_overlay_icon_state = "microfusion_overcapacity" + /// How much the attachment increases the cell's capacity by, as a percentage + var/capacity_increase = 20 + /// The initial capacity of the cell before this upgrade is added! + var/initial_charge_capacity = 0 + +/obj/item/microfusion_cell_attachment/overcapacity/add_attachment(obj/item/stock_parts/power_store/cell/microfusion/microfusion_cell) + . = ..() + initial_charge_capacity = microfusion_cell.maxcharge + var/capacity_to_add = microfusion_cell.maxcharge / 100 * capacity_increase + microfusion_cell.maxcharge += capacity_to_add + +/obj/item/microfusion_cell_attachment/overcapacity/remove_attachment(obj/item/stock_parts/power_store/cell/microfusion/microfusion_cell) + . = ..() + microfusion_cell.charge = min(microfusion_cell.charge, initial_charge_capacity) + microfusion_cell.maxcharge = initial_charge_capacity + initial_charge_capacity = 0 + +/* +STABILISER ATTACHMENT + +The cell is stable and will not emit sparks when firing. +*/ + +/obj/item/microfusion_cell_attachment/stabiliser + name = "stabilising microfusion cell attachment" + desc = "A stabilizer system attachment combining a grounding system with additional containment coils for self-charging purposes, this gives additional safety to the cell it's attached to; preventing both sparks and leakage." + icon_state = "attachment_stabiliser" + attachment_overlay_icon_state = "microfusion_stabiliser" + +/obj/item/microfusion_cell_attachment/stabiliser/add_attachment(obj/item/stock_parts/power_store/cell/microfusion/microfusion_cell) + . = ..() + microfusion_cell.stabilised = TRUE + +/obj/item/microfusion_cell_attachment/stabiliser/remove_attachment(obj/item/stock_parts/power_store/cell/microfusion/microfusion_cell) + . = ..() + microfusion_cell.stabilised = FALSE + +/* +SELFCHARGE ATTACHMENT + +The cell will charge itself. +If the cell isn't stabilised by a stabiliser, it may emit a radiation pulse. +*/ +/obj/item/microfusion_cell_attachment/selfcharging + name = "self-charging microfusion cell attachment" + desc = "While microfusion cells are normally shipped without their fuel source, this attachment comes with fifteen grams of hydrogen fuel; allowing the cell to sustain a small, yet active reaction to self-charge. These can keep going for weeks to months in ideal conditions, making them more than enough for most campaigns." + icon_state = "attachment_selfcharge" + attachment_overlay_icon_state = "microfusion_selfcharge" + /// The amount of charge this cell will passively gain! + var/self_charge_amount = STANDARD_CELL_CHARGE*(0.02) + +/obj/item/microfusion_cell_attachment/selfcharging/examine(mob/user) + . = ..() + . += span_warning("WARNING: May cause radiation burns and weapon instability if not stabilized with recommended attachment!") + +/obj/item/microfusion_cell_attachment/selfcharging/add_attachment(obj/item/stock_parts/power_store/cell/microfusion/microfusion_cell) + . = ..() + microfusion_cell.self_charging = TRUE + +/obj/item/microfusion_cell_attachment/selfcharging/remove_attachment(obj/item/stock_parts/power_store/cell/microfusion/microfusion_cell) + . = ..() + microfusion_cell.self_charging = FALSE + +/obj/item/microfusion_cell_attachment/selfcharging/process_attachment(obj/item/stock_parts/power_store/cell/microfusion/microfusion_cell, seconds_per_tick) + if(microfusion_cell.charge < microfusion_cell.maxcharge) + microfusion_cell.charge = clamp(microfusion_cell.charge + (self_charge_amount * seconds_per_tick), 0, microfusion_cell.maxcharge) + if(microfusion_cell.parent_gun) + microfusion_cell.parent_gun.update_appearance() + if(!microfusion_cell.stabilised && SPT_PROB(1, seconds_per_tick)) + radiation_pulse(src, 1, RAD_MEDIUM_INSULATION) \ No newline at end of file diff --git a/modular_ss220/modules/return_prs/microfusion/code/microfusion_designs.dm b/modular_ss220/modules/return_prs/microfusion/code/microfusion_designs.dm new file mode 100644 index 00000000000000..8caa3ee2ba8ac8 --- /dev/null +++ b/modular_ss220/modules/return_prs/microfusion/code/microfusion_designs.dm @@ -0,0 +1,431 @@ +#define RND_CATEGORY_MICROFUSION_WEAPONS "/Weaponry (Microfusion)" +#define RND_MICROFUSION_CELLS "/Cells" +#define RND_MICROFUSION_CELL_ATTACHMENTS "/Cell Attachments" +#define RND_MICROFUSION_EMITTERS "/Phase Emitters" +// god forgive me +#define RND_MICROFUSION_ATTACHMENT "/Attachments" +#define RND_MICROFUSION_ATTACHMENT_BARREL " (Barrel)" +#define RND_MICROFUSION_ATTACHMENT_UNDERBARREL " (Underbarrel)" +#define RND_MICROFUSION_ATTACHMENT_RAIL " (Rail)" +#define RND_MICROFUSION_ATTACHMENT_UNIQUE " (Cosmetic)" + +// BASE FOR MCR DESIGNS +/datum/design/microfusion + name = "Microfusion Part" + build_type = PROTOLATHE | AWAY_LATHE + departmental_flags = DEPARTMENT_BITFLAG_SECURITY + construction_time = 10 SECONDS //dunno if this is for mechfabs or what but I'll keep this anyway + category = list( + RND_CATEGORY_MICROFUSION_WEAPONS, + ) + +// EMITTERS + +/datum/design/microfusion/phase_emitter + name = "Placeholder Microfusion Phase Emitter" + desc = "You shouldn't see this. Still, odd how there's no basic phase emitter design, despite how redundant it'd be." + category = list( + RND_CATEGORY_MICROFUSION_WEAPONS + RND_MICROFUSION_EMITTERS, + ) + +/datum/design/microfusion/phase_emitter/enhanced + name = "Enhanced Microfusion Phase Emitter" + desc = "The core of a microfusion projection weapon, produces the laser." + id = "enhanced_microfusion_phase_emitter" + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/microfusion_phase_emitter/enhanced + +/datum/design/microfusion/phase_emitter/advanced + name = "Advanced Microfusion Phase Emitter" + id = "advanced_microfusion_phase_emitter" + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/microfusion_phase_emitter/advanced + +/datum/design/microfusion/phase_emitter/bluespace + name = "Bluespace Microfusion Phase Emitter" + id = "bluespace_microfusion_phase_emitter" + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/diamond = HALF_SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/microfusion_phase_emitter/bluespace + +// CELLS + +/datum/design/microfusion/cell + name = "Microfusion Cell" + desc = "A microfusion cell. There's a basic type defined next to this, right?" + category = list( + RND_CATEGORY_MICROFUSION_WEAPONS + RND_MICROFUSION_CELLS, + ) + +/datum/design/microfusion/cell/basic + name = "Basic Microfusion Cell" + desc = "A basic microfusion cell with a capacity of 1200 MF and and 1 attachment point." + id = "basic_microfusion_cell" + build_type = PROTOLATHE | AWAY_LATHE | AUTOLATHE + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2, + ) + build_path = /obj/item/stock_parts/power_store/cell/microfusion + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_MICROFUSION_WEAPONS + RND_MICROFUSION_CELLS, + ) + +/datum/design/microfusion/cell/enhanced + name = "Enhanced Microfusion Cell" + desc = "An enhanced microfusion cell with a capacity of 1500 MF and 1 attachment point." + id = "enhanced_microfusion_cell" + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2, + /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 2, + ) + build_path = /obj/item/stock_parts/power_store/cell/microfusion/enhanced + +/datum/design/microfusion/cell/advanced + name = "Advanced Microfusion Cell" + desc = "An advanced microfusion cell with a capacity of 1700 MF and 3 attachment points." + id = "advanced_microfusion_cell" + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/gold = SMALL_MATERIAL_AMOUNT * 3, + /datum/material/silver = SMALL_MATERIAL_AMOUNT * 3, + /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3, + /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 3, + ) + build_path = /obj/item/stock_parts/power_store/cell/microfusion/advanced + +/datum/design/microfusion/cell/bluespace + name = "Bluespace Microfusion Cell" + desc = "A bluespace microfusion cell with a capacity of 2000 MF and 3 attachment points." + id = "bluespace_microfusion_cell" + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/gold = SMALL_MATERIAL_AMOUNT * 3, + /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3, + /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 3, + /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 3, + /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 3, + /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 3, + ) + build_path = /obj/item/stock_parts/power_store/cell/microfusion/bluespace + +// CELL UPGRADES +/datum/design/microfusion/cell_attachment + name = "Placeholder Cell Attachment" + desc = "You shouldn't be seeing this." + category = list( + RND_CATEGORY_MICROFUSION_WEAPONS + RND_MICROFUSION_CELL_ATTACHMENTS, + ) + +/datum/design/microfusion/cell_attachment/stabilising + name = "Stabilising Microfusion Cell Attachment" + desc = "Stabilises the internal fusion reaction of microfusion cells, preventing sparks during firing and occasional radiation pulses when used in tandem with a self-charging attachment." + id = "microfusion_cell_attachment_stabiliser" + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/microfusion_cell_attachment/stabiliser + +/datum/design/microfusion/cell_attachment/overcapacity + name = "Overcapacity Microfusion Cell Attachment" + desc = "An attachment for microfusion cells that increases MF capacity." + id = "microfusion_cell_attachment_overcapacity" + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/gold = SHEET_MATERIAL_AMOUNT * 4, + ) + build_path = /obj/item/microfusion_cell_attachment/overcapacity + +/datum/design/microfusion/cell_attachment/selfcharging + name = "Self-Charging Microfusion Cell Attachment" + desc = "Contains a small amount of infinitely decaying nuclear material, causing the fusion reaction to be self sustaining. WARNING: May cause radiation burns if not stabilised." + id = "microfusion_cell_attachment_selfcharging" + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/diamond = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/uranium = SHEET_MATERIAL_AMOUNT * 3, + /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 3, + /datum/material/bluespace = SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/microfusion_cell_attachment/selfcharging + +/datum/design/microfusion/attachment + name = "Placeholder MCR Attachment" + desc = "You *really* shouldn't be seeing this. Now in different attachment flavors! The Req line will hate you." + category = list( + RND_CATEGORY_MICROFUSION_WEAPONS + RND_MICROFUSION_ATTACHMENT, + ) + +// RAIL MODS + +/datum/design/microfusion/attachment/rail_slot/rail + name = "Microfusion Weapon Rail" + desc = "A carrying handle/rail system for any additional attachments, such as a seclite and/or bayonet." + id = "microfusion_gun_attachment_rail" + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/microfusion_gun_attachment/rail + +/datum/design/microfusion/attachment/rail_slot/scope + name = "Microfusion Weapon Scope" + desc = "A scope. For microfusion weapon platforms, probably." + id = "microfusion_gun_attachment_scope" + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/microfusion_gun_attachment/scope + +// UNDERBARREL MODS + +/datum/design/microfusion/attachment/underbarrel + name = "Placeholder Microfusion Underbarrel Slot Attachment" + category = list( + RND_CATEGORY_MICROFUSION_WEAPONS + RND_MICROFUSION_ATTACHMENT + RND_MICROFUSION_ATTACHMENT_UNDERBARREL, + ) + +/datum/design/microfusion/attachment/underbarrel/grip + name = "Microfusion Weapon Grip" + desc = "A grip. For microfusion weapon platforms, ostensibly." + id = "microfusion_gun_attachment_grip" + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/microfusion_gun_attachment/grip + +/datum/design/microfusion/attachment/underbarrel/heatsink + name = "Phase Emitter Heatsink" + desc = "A heatsink attachment for your microfusion weapon. Massively increases cooling potential." + id = "microfusion_gun_attachment_heatsink" + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/microfusion_gun_attachment/heatsink + +// BARREL MODS (there's a lot) + +/datum/design/microfusion/attachment/barrel + name = "Placeholder Microfusion Barrel Slot Attachment" + category = list( + RND_CATEGORY_MICROFUSION_WEAPONS + RND_MICROFUSION_ATTACHMENT + RND_MICROFUSION_ATTACHMENT_BARREL, + ) + +/datum/design/microfusion/attachment/barrel/suppressor + name = "Suppressor Lens Attachment" + desc = "An experimental barrel attachment that dampens the soundwave of the emitter, suppressing the report. Does not make the lasers themselves more stealthy, as they are lasers." + id = "microfusion_gun_attachment_suppressor" + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/microfusion_gun_attachment/barrel/suppressor + +/datum/design/microfusion/attachment/barrel/honk + name = "Bananium Phase Emitter \"Upgrade\"" + desc = "Makes your lasers into the greatest clowning tool ever made. HONK!" + id = "microfusion_gun_attachment_honk" + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/bananium = HALF_SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/microfusion_gun_attachment/barrel/honk + +/datum/design/microfusion/attachment/barrel/lance + name = "Lance Induction Carriage" + desc = "Turns the gun into a designated marksman rifle." + id = "microfusion_gun_attachment_lance" + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/diamond = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/microfusion_gun_attachment/barrel/lance + +// EMITTER UPGRADES (they're still barrel upgrades, though) + +/datum/design/microfusion/attachment/barrel/scatter + name = "Diffuser Microfusion Lens Attachment" + desc = "Splits the microfusion laser beam entering the lens." + id = "microfusion_gun_attachment_scatter" + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/diamond = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/microfusion_gun_attachment/barrel/scatter + + +/datum/design/microfusion/attachment/barrel/scatter/max + name = "Crystalline Diffuser Microfusion Lens Attachment" + desc = "Splits the microfusion laser beam entering the lens even more." + id = "microfusion_gun_attachment_scattermax" + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/diamond = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/microfusion_gun_attachment/barrel/scatter/max + +/datum/design/microfusion/attachment/barrel/superheat + name = "Superheating Phase Emitter Upgrade" + desc = "Superheats the beam, causing targets to ignite." + id = "microfusion_gun_attachment_superheat" + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/diamond = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/microfusion_gun_attachment/barrel/superheat + +/datum/design/microfusion/attachment/barrel/hellfire + name = "Hellfire Phase Emitter Upgrade" + desc = "Overheats the beam, causing nastier wounds and higher damage." + id = "microfusion_gun_attachment_hellfire" + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/diamond = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/microfusion_gun_attachment/barrel/hellfire + +/datum/design/microfusion/attachment/barrel/repeater + name = "Repeating Phase Emitter Upgrade" + desc = "Upgrades the central phase emitter to repeat twice." + id = "microfusion_gun_attachment_repeater" + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/diamond = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/microfusion_gun_attachment/barrel/repeater + + +/datum/design/microfusion/attachment/barrel/repeater/penetrator + name = "Focused Repeating Phase Emitter Upgrade" + desc = "Upgrades the central phase emitter to repeat twice and penetrate armor." + id = "microfusion_gun_attachment_penetrator" + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 5, + /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/microfusion_gun_attachment/barrel/repeater/penetrator + +/datum/design/microfusion/attachment/barrel/xray + name = "Phase Inverter Emitter Array" + desc = "Experimental technology that inverts the central phase emitter causing the wave frequency to shift into X-rays that pierce solid objects. CAUTION: Phase emitter heats up very quickly." + id = "microfusion_gun_attachment_xray" + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/diamond = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/microfusion_gun_attachment/barrel/xray + +// COSMETICS + +/datum/design/microfusion/attachment/unique + name = "Placeholder Microfusion Unique/Cosmetic Attachment" + category = list( + RND_CATEGORY_MICROFUSION_WEAPONS + RND_MICROFUSION_ATTACHMENT + RND_MICROFUSION_ATTACHMENT_UNIQUE, + ) + +/datum/design/microfusion/attachment/unique/rgb + name = "Phase Emitter Spectrograph" + desc = "An attachment hooked up to the phase emitter, allowing the user to adjust the color of the beam outputted. This has seen widespread use by various factions capable of getting their hands on microfusion weapons, whether as a calling card or simply for entertainment." + id = "microfusion_gun_attachment_rgb" + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/microfusion_gun_attachment/rgb + +/datum/design/microfusion/attachment/unique/camo_black + name = "Black Camo Microfusion Frame" + desc = "A frame modification for the MCR-10, changing the color of the gun to black." + id = "microfusion_gun_attachment_black_camo" + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/microfusion_gun_attachment/camo + +/datum/design/microfusion/attachment/unique/camo_nanotrasen + name = "Nanotrasen Camo Microfusion Frame" + desc = "A frame modification for the MCR-01, changing the color of the gun to blue." + id = "microfusion_gun_attachment_nt_camo" + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/microfusion_gun_attachment/camo/nanotrasen + +/datum/design/microfusion/attachment/unique/camo_syndicate + name = "Blood Red Camo Microfusion Frame" + desc = "A frame modification for the MCR-01, changing the color of the gun to a slick blood red." + id = "microfusion_gun_attachment_syndi_camo" + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/microfusion_gun_attachment/camo/syndicate + +/datum/design/microfusion/attachment/unique/camo_bananium + name = "Bananium Microfusion Frame" + desc = "A frame modification for the MCR-01, plating the gun in bananium." + id = "microfusion_gun_attachment_honk_camo" + materials = list( + /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, + /datum/material/bananium = HALF_SHEET_MATERIAL_AMOUNT, + ) + build_path = /obj/item/microfusion_gun_attachment/camo/honk diff --git a/modular_ss220/modules/return_prs/microfusion/code/microfusion_energy_master.dm b/modular_ss220/modules/return_prs/microfusion/code/microfusion_energy_master.dm new file mode 100644 index 00000000000000..d5b40bf1536840 --- /dev/null +++ b/modular_ss220/modules/return_prs/microfusion/code/microfusion_energy_master.dm @@ -0,0 +1,778 @@ +#define DUALWIELD_PENALTY_EXTRA_MULTIPLIER 1.4 + +// Master file for cell loadable energy guns. PROCS ONLY YOU MONKEYS! +// This file is a copy/paste of _energy.dm with extensive modification. + +/obj/item/gun/microfusion + name = "prototype detatchable cell energy projection aparatus" + desc = "The coders have obviously failed to realise this is broken." + icon = 'modular_ss220/modules/return_prs/microfusion/icons/microfusion_gun40x32.dmi' + icon_state = "mcr01" + inhand_icon_state = "mcr01" + lefthand_file = 'modular_ss220/modules/return_prs/microfusion/icons/guns_lefthand.dmi' + righthand_file = 'modular_ss220/modules/return_prs/microfusion/icons/guns_righthand.dmi' + weapon_weight = WEAPON_HEAVY + w_class = WEIGHT_CLASS_BULKY + obj_flags = UNIQUE_RENAME + ammo_x_offset = 2 + + /// What type of power cell this uses + var/obj/item/stock_parts/power_store/cell/microfusion/cell + /// The cell we will spawn with + var/cell_type = /obj/item/stock_parts/power_store/cell/microfusion + /// The cell type we check when inserting a cell + var/base_cell_type = /obj/item/stock_parts/power_store/cell/microfusion + /// If the weapon has custom icons for individual ammo types it can switch between. ie disabler beams, taser, laser/lethals, ect. + var/modifystate = FALSE + /// How many charge sections do we have? + var/charge_sections = 4 + /// if this gun uses a stateful charge bar for more detail + var/shaded_charge = FALSE + /// Should we give an overlay to empty guns? + var/display_empty = TRUE + /// whether the gun's cell drains the cyborg user's cell to recharge + var/dead_cell = FALSE + + // MICROFUSION SPECIFIC VARS + + /// The microfusion lens used for generating the beams. + var/obj/item/ammo_casing/energy/laser/microfusion/microfusion_lens + /// The time it takes for someone to (tactically) reload this gun. In deciseconds. + var/tactical_reload_time = 4 SECONDS + /// The time it takes for someone to normally reload this gun. In deciseconds. + var/normal_reload_time = 2 SECONDS + /// The sound played when you insert a cell. + var/sound_cell_insert = 'modular_ss220/modules/return_prs/microfusion/sound/mag_insert.ogg' + /// Should the insertion sound played vary? + var/sound_cell_insert_vary = TRUE + /// The volume at which we will play the insertion sound. + var/sound_cell_insert_volume = 50 + /// The sound played when you remove a cell. + var/sound_cell_remove = 'modular_ss220/modules/return_prs/microfusion/sound/mag_insert.ogg' + /// Should the removal sound played vary? + var/sound_cell_remove_vary = TRUE + /// The volume at which we will play the removal sound. + var/sound_cell_remove_volume = 50 + /// A list of attached upgrades + var/list/attachments = list() + /// The starting phase emitter in this weapon. + var/phase_emitter_type = /obj/item/microfusion_phase_emitter + /// The base emitter type that we check when putting a new emitter in. + var/base_phase_emitter_type = /obj/item/microfusion_phase_emitter + /// The phase emitter that this gun currently has. + var/obj/item/microfusion_phase_emitter/phase_emitter + /// The amount of heat produced per shot + var/heat_per_shot = 100 + /// The heat dissipation bonus granted by the weapon. + var/heat_dissipation_bonus = 0 + /// What slots does this gun have? + var/attachment_slots = list(GUN_SLOT_BARREL, GUN_SLOT_UNDERBARREL, GUN_SLOT_RAIL, GUN_SLOT_UNIQUE, GUN_SLOT_CAMO) + /// Our base firedelay. + var/base_fire_delay = 0 + /// Do we use more power because of attachments? + var/extra_power_usage = 0 + /// Spread from attachments. + var/attachment_spread = 0 + /// Recoil from attachments. + var/attachment_recoil = 0 + +/obj/item/gun/microfusion/emp_act(severity) + . = ..() + if(!(. & EMP_PROTECT_CONTENTS)) + cell.use(round(cell.charge / severity)) + chambered = null //we empty the chamber + recharge_newshot() //and try to charge a new shot + update_appearance() + +/obj/item/gun/microfusion/get_cell() + return cell + +/obj/item/gun/microfusion/Initialize(mapload) + . = ..() + if(cell_type) + cell = new cell_type(src) + else + cell = new(src) + cell.parent_gun = src + cell.chargerate = STANDARD_CELL_CHARGE * 0.2 + if(!dead_cell) + cell.give(cell.maxcharge) + if(phase_emitter_type) + phase_emitter = new phase_emitter_type(src) + else + phase_emitter = new(src) + phase_emitter.parent_gun = src + update_microfusion_lens() + recharge_newshot(TRUE) + AddElement(/datum/element/update_icon_updates_onmob) + update_appearance() + AddComponent(/datum/component/ammo_hud) + RegisterSignal(src, COMSIG_ITEM_RECHARGED, PROC_REF(instant_recharge)) + base_fire_delay = fire_delay + START_PROCESSING(SSobj, src) + for(var/type in attachments) + attachments -= type + var/obj/item/microfusion_gun_attachment/attachment = new type(src) + add_attachment(attachment) + +/obj/item/gun/microfusion/give_gun_safeties() + AddComponent(/datum/component/gun_safety) + +/obj/item/gun/microfusion/add_weapon_description() + AddElement(/datum/element/weapon_description, attached_proc = PROC_REF(add_notes_energy)) + +/obj/item/gun/microfusion/add_seclight_point() + return + +/obj/item/gun/microfusion/Destroy() + if(microfusion_lens) + QDEL_NULL(microfusion_lens) + if(cell) + cell.parent_gun = null + QDEL_NULL(cell) + if(attachments.len) + for(var/obj/item/iterating_item in attachments) + qdel(iterating_item) + attachments = null + if(phase_emitter) + QDEL_NULL(phase_emitter) + STOP_PROCESSING(SSobj, src) + return ..() + +/obj/item/gun/microfusion/Exited(atom/movable/gone, direction) + . = ..() + if(gone == cell) + cell = null + update_appearance() + else if(gone == phase_emitter) + phase_emitter = null + update_appearance() + +/obj/item/gun/microfusion/can_shoot() + return !QDELETED(cell) ? (cell.charge >= microfusion_lens.e_cost) : FALSE + +/obj/item/gun/microfusion/recharge_newshot() + if (!microfusion_lens || !cell || !phase_emitter) + return + chambered = microfusion_lens + if(!chambered.loaded_projectile) + chambered.newshot() + +/obj/item/gun/microfusion/handle_chamber() + if(chambered && !chambered.loaded_projectile && cell) //if loaded_projectile is null, i.e the shot has been fired... + var/obj/item/ammo_casing/energy/shot = chambered + cell.use(shot.e_cost + extra_power_usage)//... drain the cell + chambered = null //either way, released the prepared shot + recharge_newshot() //try to charge a new shot + +/obj/item/gun/microfusion/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0) + if(!chambered && can_shoot()) + process_chamber() // If the gun was drained and then recharged, load a new shot. + return ..() + +/obj/item/gun/microfusion/process(seconds_per_tick) + for(var/obj/item/microfusion_gun_attachment/attached as anything in attachments) + attached.process_attachment(src, seconds_per_tick) + +/obj/item/gun/microfusion/update_icon_state() + var/skip_inhand = initial(inhand_icon_state) //only build if we aren't using a preset inhand icon + var/skip_worn_icon = initial(worn_icon_state) //only build if we aren't using a preset worn icon + + if(skip_inhand && skip_worn_icon) //if we don't have either, don't do the math. + return ..() + + var/ratio = get_charge_ratio() + var/temp_icon_to_use = initial(icon_state) + if(modifystate) + temp_icon_to_use += "[microfusion_lens.select_name]" + + temp_icon_to_use += "[ratio]" + if(!skip_inhand) + inhand_icon_state = temp_icon_to_use + if(!skip_worn_icon) + worn_icon_state = temp_icon_to_use + return ..() + +/obj/item/gun/microfusion/update_overlays() + . = ..() + SEND_SIGNAL(src, COMSIG_UPDATE_AMMO_HUD) //update the ammo hud since it's heavily dependent on the gun's state + if(!phase_emitter) + . += "[icon_state]_phase_emitter_missing" + else if(phase_emitter.damaged) + . += "[icon_state]_phase_emitter_damaged" + else if(cell) + var/ratio = get_charge_ratio() + if(ratio == 0 && display_empty) + . += "[icon_state]_empty" + else if(shaded_charge) + . += "[icon_state]_charge[ratio]_[phase_emitter.icon_state]" + else + . += "[icon_state]_phase_emitter_missing" + + + for(var/obj/item/microfusion_gun_attachment/microfusion_gun_attachment in attachments) + . += "[icon_state]_[microfusion_gun_attachment.attachment_overlay_icon_state]" + + +/obj/item/gun/microfusion/ignition_effect(atom/to_ignite, mob/living/user) + if(!can_shoot() || !microfusion_lens) + shoot_with_empty_chamber() + . = "" + else + var/obj/projectile/energy/loaded_projectile = microfusion_lens.loaded_projectile + if(!loaded_projectile) + . = "" + else if(!loaded_projectile.damage || loaded_projectile.damage_type == STAMINA) + user.visible_message(span_danger("[user] tries to light [to_ignite.loc == user ? "[user.p_their()] [to_ignite.name]" : to_ignite] with [src], but it doesn't do anything. Dumbass.")) + playsound(user, microfusion_lens.fire_sound, 50, TRUE) + playsound(user, loaded_projectile.hitsound, 50, TRUE) + cell.use(microfusion_lens.e_cost) + . = "" + else if(loaded_projectile.damage_type != BURN) + user.visible_message(span_danger("[user] tries to light [to_ignite.loc == user ? "[user.p_their()] [to_ignite.name]" : to_ignite] with [src], but only succeeds in utterly destroying it. Dumbass.")) + playsound(user, microfusion_lens.fire_sound, 50, TRUE) + playsound(user, loaded_projectile.hitsound, 50, TRUE) + cell.use(microfusion_lens.e_cost) + qdel(to_ignite) + . = "" + else + playsound(user, microfusion_lens.fire_sound, 50, TRUE) + playsound(user, loaded_projectile.hitsound, 50, TRUE) + cell.use(microfusion_lens.e_cost) + . = span_danger("[user] casually lights [to_ignite.loc == user ? "[user.p_their()] [to_ignite.name]" : to_ignite] with [src]. Damn.") + +/obj/item/gun/microfusion/attackby(obj/item/attacking_item, mob/user, params) + . = ..() + if (.) + return + if(istype(attacking_item, base_cell_type)) + insert_cell(user, attacking_item) + if(istype(attacking_item, /obj/item/microfusion_gun_attachment)) + add_attachment(attacking_item, user) + if(istype(attacking_item, base_phase_emitter_type)) + insert_emitter(attacking_item, user) + +/obj/item/gun/microfusion/process_chamber(empty_chamber, from_firing, chamber_next_round) + . = ..() + if(!cell?.stabilised && prob(40)) + do_sparks(2, FALSE, src) //Microfusion guns create sparks! + +/obj/item/gun/microfusion/attack_hand(mob/user, list/modifiers) + if(loc == user && user.is_holding(src) && cell) + eject_cell(user) + return + return ..() + +/obj/item/gun/microfusion/crowbar_act(mob/living/user, obj/item/tool) + if(!phase_emitter) + balloon_alert(user, "no phase emitter!") + return + playsound(src, 'sound/items/tools/crowbar.ogg', 70, TRUE) + remove_emitter() + +/obj/item/gun/microfusion/click_alt(mob/user) + var/obj/item/microfusion_gun_attachment/to_remove = input(user, "Please select what part you'd like to remove.", "Remove attachment") as null|obj in sort_names(attachments) + if(!to_remove) + return CLICK_ACTION_BLOCKING + remove_attachment(to_remove, user) + return CLICK_ACTION_SUCCESS + +/obj/item/gun/microfusion/proc/remove_all_attachments() + if(attachments.len) + for(var/obj/item/microfusion_gun_attachment/attachment in attachments) + attachment.remove_attachment(src) + attachment.forceMove(get_turf(src)) + attachments -= attachment + update_appearance() + +/obj/item/gun/microfusion/examine(mob/user) + . = ..() + if(attachments.len) + for(var/obj/item/microfusion_gun_attachment/microfusion_gun_attachment in attachments) + . += span_notice("It has a [microfusion_gun_attachment.name] installed.") + . += span_notice("Alt+click it to remove an upgrade.") + if(phase_emitter) + . += span_notice("It has a [phase_emitter.name] installed, at [phase_emitter.get_heat_percent()]% heat capacity.") + . += span_notice("The [phase_emitter.name] is at [phase_emitter.integrity]% integrity.") + . += span_notice("The [phase_emitter.name] will thermal throttle at [phase_emitter.throttle_percentage]% heat capacity.") + . += span_notice("Use a crowbar to remove the phase emitter.") + else + . += span_danger("It does not have a phase emitter installed!") + + if(cell) + . += span_notice("It has a [cell.name] installed, with a capacity of [cell.charge]/[cell.maxcharge] MF.") + +/obj/item/gun/microfusion/suicide_act(mob/living/user) + if (istype(user) && can_shoot() && can_trigger_gun(user) && user.get_bodypart(BODY_ZONE_HEAD)) + user.visible_message(span_suicide("[user] is putting the barrel of [src] in [user.p_their()] mouth. It looks like [user.p_theyre()] trying to commit suicide!")) + sleep(2.5 SECONDS) + if(user.is_holding(src)) + user.visible_message(span_suicide("[user] melts [user.p_their()] face off with [src]!")) + playsound(loc, fire_sound, 50, TRUE, -1) + cell.use(microfusion_lens.e_cost) + update_appearance() + return(FIRELOSS) + else + user.visible_message(span_suicide("[user] panics and starts choking to death!")) + return(OXYLOSS) + else + user.visible_message(span_suicide("[user] is pretending to melt [user.p_their()] face off with [src]! It looks like [user.p_theyre()] trying to commit suicide!")) + playsound(src, dry_fire_sound, 30, TRUE) + return (OXYLOSS) + +// To maintain modularity, I am moving this proc override here. +/obj/item/gun/microfusion/fire_gun(atom/target, mob/living/user, flag, params) + + // check to see if the emitter prevents us from firing before anything else + var/attempted_shot = process_emitter() + if(attempted_shot != SHOT_SUCCESS) + if(attempted_shot) + balloon_alert(user, attempted_shot) + return + + . = ..() + +// To maintain modularity, I am moving this proc override here. +/obj/item/gun/microfusion/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0) + var/base_bonus_spread = 0 + if(user) + var/list/bonus_spread_values = list(base_bonus_spread, bonus_spread) + SEND_SIGNAL(user, COMSIG_MOB_FIRED_GUN, src, target, params, zone_override, bonus_spread_values) + base_bonus_spread = bonus_spread_values[MIN_BONUS_SPREAD_INDEX] + bonus_spread = bonus_spread_values[MAX_BONUS_SPREAD_INDEX] + + SEND_SIGNAL(src, COMSIG_GUN_FIRED, user, target, params, zone_override) + + add_fingerprint(user) + + if(semicd) + return + + //Vary by at least this much + var/randomized_bonus_spread = rand(base_bonus_spread, bonus_spread) + var/randomized_gun_spread = spread ? rand(0, spread) : 0 + var/total_random_spread = max(0, randomized_bonus_spread + randomized_gun_spread) + var/burst_spread_mult = rand() + + var/modified_delay = fire_delay + if(phase_emitter) + modified_delay = phase_emitter.fire_delay + if(user && HAS_TRAIT(user, TRAIT_DOUBLE_TAP)) + modified_delay = ROUND_UP(fire_delay * 0.5) + + if(burst_size > 1) + firing_burst = TRUE + for(var/i = 1 to burst_size) + addtimer(CALLBACK(src, PROC_REF(process_burst), user, target, message, params, zone_override, total_random_spread, burst_spread_mult, i), modified_delay * (i - 1)) + else + if(chambered) + if(HAS_TRAIT(user, TRAIT_PACIFISM)) // If the user has the pacifist trait, then they won't be able to fire [src] if the round chambered inside of [src] is lethal. + if(chambered.harmful) // Is the bullet chambered harmful? + balloon_alert(user, "lethally chambered!") + return + var/calculated_spread = round((rand(0, 1) - 0.5) * DUALWIELD_PENALTY_EXTRA_MULTIPLIER * total_random_spread) + before_firing(target,user) + process_microfusion() + if(!chambered.fire_casing(target, user, params, , suppressed, zone_override, calculated_spread, src)) + shoot_with_empty_chamber(user) + return + else + if(get_dist(user, target) <= 1) //Making sure whether the target is in vicinity for the pointblank shot + shoot_live_shot(user, 1, target, message) + else + shoot_live_shot(user, 0, target, message) + else + shoot_with_empty_chamber(user) + return + process_chamber() + update_appearance() + semicd = TRUE + var/fire_delay_to_add = 0 + if(phase_emitter) + fire_delay_to_add = phase_emitter.fire_delay + addtimer(CALLBACK(src, PROC_REF(reset_semicd)), fire_delay + fire_delay_to_add) + + if(user) + user.update_held_items() + SSblackbox.record_feedback("tally", "gun_fired", 1, type) + + SEND_SIGNAL(src, COMSIG_UPDATE_AMMO_HUD) + + return TRUE + +// Same goes for this! +/obj/item/gun/microfusion/process_burst( + mob/living/user, + atom/target, + message = TRUE, + params = null, + zone_override = "", + random_spread = 0, + burst_spread_mult = 0, + iteration = 0, + ) + + if(!user || !firing_burst) + firing_burst = FALSE + return FALSE + if(!can_shoot()) + firing_burst = FALSE + return FALSE + if(!chambered) + process_chamber() // Ditto. + if(!issilicon(user)) + if(iteration > 1 && !(user.is_holding(src))) //for burst firing + firing_burst = FALSE + return FALSE + if(chambered?.loaded_projectile) + if(HAS_TRAIT(user, TRAIT_PACIFISM)) // If the user has the pacifist trait, then they won't be able to fire [src] if the round chambered inside of [src] is lethal. + if(chambered.harmful) // Is the bullet chambered harmful? + balloon_alert(user, "lethally chambered!") + return + var/calculated_spread + if(randomspread) + calculated_spread = round((rand(0, 1) - 0.5) * DUALWIELD_PENALTY_EXTRA_MULTIPLIER * (random_spread)) + else //Smart spread + calculated_spread = round((((burst_spread_mult/burst_size) * iteration) - (0.5 + (burst_spread_mult * 0.25))) * (random_spread)) + before_firing(target,user) + process_microfusion() + if(!chambered.fire_casing(target, user, params, ,suppressed, zone_override, calculated_spread, src)) + shoot_with_empty_chamber(user) + firing_burst = FALSE + return FALSE + else + if(get_dist(user, target) <= 1) //Making sure whether the target is in vicinity for the pointblank shot + shoot_live_shot(user, 1, target, message) + else + shoot_live_shot(user, 0, target, message) + if (iteration >= burst_size) + firing_burst = FALSE + else + shoot_with_empty_chamber(user) + firing_burst = FALSE + return FALSE + process_chamber() + update_appearance() + SEND_SIGNAL(src, COMSIG_UPDATE_AMMO_HUD) + return TRUE + +/obj/item/gun/microfusion/shoot_live_shot(mob/living/user, pointblank, atom/pbtarget, message) + if(recoil) + shake_camera(user, recoil + 1, recoil) + + var/sound_freq_to_add = 0 + + if(phase_emitter && phase_emitter.sound_freq > 1) + sound_freq_to_add = phase_emitter.sound_freq + + if(suppressed) + playsound(user, suppressed_sound, suppressed_volume, vary_fire_sound, ignore_walls = FALSE, extrarange = SILENCED_SOUND_EXTRARANGE, frequency = sound_freq_to_add, falloff_distance = 0) + else + playsound(user, fire_sound, fire_sound_volume, vary_fire_sound, frequency = sound_freq_to_add) + if(message) + if(pointblank) + user.visible_message(span_danger("[user] fires [src] point blank at [pbtarget]!"), \ + span_danger("You fire [src] point blank at [pbtarget]!"), \ + span_hear("You hear a gunshot!"), COMBAT_MESSAGE_RANGE, pbtarget) + to_chat(pbtarget, span_userdanger("[user] fires [src] point blank at you!")) + if(pb_knockback > 0 && ismob(pbtarget)) + var/mob/PBT = pbtarget + var/atom/throw_target = get_edge_target_turf(PBT, user.dir) + PBT.throw_at(throw_target, pb_knockback, 2) + else + user.visible_message(span_danger("[user] fires [src]!"), \ + span_danger("You fire [src]!"), \ + span_hear("You hear a gunshot!"), COMBAT_MESSAGE_RANGE) + if(user.resting) + user.Immobilize(20, TRUE) + + phase_emitter.add_heat(heat_per_shot) + + if(phase_emitter.current_heat > phase_emitter.max_heat) + if(ishuman(user)) + var/mob/living/carbon/human/human = user + var/obj/item/bodypart/affecting = human.get_bodypart("[(user.active_hand_index % 2 == 0) ? "r" : "l" ]_arm") + if(affecting?.receive_damage( 0, 5 )) // 1 burn damage + to_chat(user, span_warning("[src] burns your hand, it's too hot!")) + +/obj/item/gun/microfusion/proc/process_microfusion() + if(attachments.len) + for(var/obj/item/microfusion_gun_attachment/attachment in attachments) + attachment.process_fire(src, chambered) + return TRUE + +/obj/item/gun/microfusion/proc/process_emitter() + if(!phase_emitter) + return SHOT_FAILURE_NO_EMITTER + var/phase_emitter_process = phase_emitter.check_emitter() + if(phase_emitter_process != SHOT_SUCCESS) + return phase_emitter_process + return SHOT_SUCCESS + +/obj/item/gun/microfusion/proc/instant_recharge() + SIGNAL_HANDLER + if(!cell) + return + cell.charge = cell.maxcharge + recharge_newshot() + update_appearance() + +///Used by update_icon_state() and update_overlays() +/obj/item/gun/microfusion/proc/get_charge_ratio() + return can_shoot() ? CEILING(clamp(cell.charge / cell.maxcharge, 0, 1) * charge_sections, 1) : 0 + // Sets the ratio to 0 if the gun doesn't have enough charge to fire, or if its power cell is removed. + +/** + * + * Outputs type-specific weapon stats for energy-based firearms based on its firing modes + * and the stats of those firing modes. Esoteric firing modes like ion are currently not supported + * but can be added easily + * + */ +/obj/item/gun/microfusion/proc/add_notes_energy() + var/list/readout = list() + // Make sure there is something to actually retrieve + if(!microfusion_lens) + return + var/obj/projectile/exam_proj + readout += "Our heroic interns have shown that one can theoretically stay standing after..." + exam_proj = initial(microfusion_lens?.projectile_type) + + if(!istype(exam_proj)) + return readout.Join("\n") + + if(exam_proj.damage > 0) // Don't divide by 0!!!!! + readout += "[span_warning("[HITS_TO_CRIT(exam_proj.damage * microfusion_lens.pellets)] shot\s")] on [span_warning("[microfusion_lens.select_name]")] mode before collapsing from [exam_proj.damage_type == STAMINA ? "immense pain" : "their wounds"]." + if(exam_proj.stamina > 0) // In case a projectile does damage AND stamina damage (Energy Crossbow) + readout += "[span_warning("[HITS_TO_CRIT(exam_proj.stamina * microfusion_lens.pellets)] shot\s")] on [span_warning("[microfusion_lens.select_name]")] mode before collapsing from immense pain." + else + readout += "a theoretically infinite number of shots on [span_warning("[microfusion_lens.select_name]")] mode." + + return readout.Join("\n") // Sending over the singular string, rather than the whole list + +/obj/item/gun/microfusion/proc/update_microfusion_lens() + if(!microfusion_lens) + microfusion_lens = new(src) + fire_sound = microfusion_lens.fire_sound + fire_sound_volume = microfusion_lens.fire_sound_volume + fire_delay = microfusion_lens.delay + +// Cell, emitter and upgrade interactions + +/obj/item/gun/microfusion/proc/remove_emitter(mob/user) + playsound(src, sound_cell_insert, 50, TRUE) + phase_emitter.forceMove(get_turf(src)) + if(user) + user.put_in_hands(phase_emitter) + balloon_alert(user, "removed phase emitter") + phase_emitter.parent_gun = null + phase_emitter = null + update_appearance() + +/obj/item/gun/microfusion/proc/insert_emitter(obj/item/microfusion_phase_emitter/inserting_phase_emitter, mob/living/user) + if(phase_emitter) + balloon_alert(user, "already one installed!") + return FALSE + balloon_alert(user, "inserted phase emitter") + playsound(src, sound_cell_remove, 50, TRUE) + inserting_phase_emitter.forceMove(src) + phase_emitter = inserting_phase_emitter + phase_emitter.parent_gun = src + update_appearance() + + +/// Try to insert the cell into the gun, if successful, return TRUE +/obj/item/gun/microfusion/proc/insert_cell(mob/user, obj/item/stock_parts/power_store/cell/microfusion/inserting_cell, display_message = TRUE) + var/hotswap = FALSE + if(cell) + hotswap = TRUE + var/obj/item/stock_parts/power_store/cell/old_cell = cell + + if(inserting_cell.charge) + balloon_alert(user, "can't insert a charged cell!") + return FALSE + if(display_message) + balloon_alert(user, "cell inserted") + if(hotswap) + eject_cell(user, FALSE, FALSE) + if(sound_cell_insert) + playsound(src, sound_cell_insert, sound_cell_insert_volume, sound_cell_insert_vary) + cell = inserting_cell + inserting_cell.forceMove(src) + inserting_cell.inserted_into_weapon() + cell.parent_gun = src + if(old_cell) + user.put_in_hands(old_cell) + recharge_newshot() + update_appearance() + return TRUE + + +/// Ejecting a cell. +/obj/item/gun/microfusion/proc/eject_cell(mob/user, display_message = TRUE, put_in_hands = TRUE) + var/obj/item/stock_parts/power_store/cell/microfusion/old_cell = cell + old_cell.cell_removal_discharge() + old_cell.forceMove(get_turf(src)) + if(user) + if(put_in_hands) + user.put_in_hands(old_cell) + if(display_message) + balloon_alert(user, "cell removed") + if(sound_cell_remove) + playsound(src, sound_cell_remove, sound_cell_remove_volume, sound_cell_remove_vary) + old_cell.update_appearance() + old_cell.parent_gun = null + cell = null + update_appearance() + +/// Attatching an upgrade. +/obj/item/gun/microfusion/proc/add_attachment(obj/item/microfusion_gun_attachment/microfusion_gun_attachment, mob/living/user) + if(is_type_in_list(microfusion_gun_attachment, attachments)) + if(user) + balloon_alert(user, "already has one!") + return FALSE + if(!(microfusion_gun_attachment.slot in attachment_slots)) + if(user) + balloon_alert(user, "can't install!") + return FALSE + for(var/obj/item/microfusion_gun_attachment/iterating_attachment in attachments) + if(is_type_in_list(microfusion_gun_attachment, iterating_attachment.incompatible_attachments)) + balloon_alert(user, "not compatible with [iterating_attachment]!") + return FALSE + if(iterating_attachment.slot != GUN_SLOT_UNIQUE && iterating_attachment.slot == microfusion_gun_attachment.slot) + if(user) + balloon_alert(user, "slot full!") + return FALSE + attachments += microfusion_gun_attachment + microfusion_gun_attachment.forceMove(src) + microfusion_gun_attachment.run_attachment(src) + if(user) + balloon_alert(user, "installed attachment") + playsound(src, 'sound/effects/structure_stress/pop2.ogg', 70, TRUE) + return TRUE + +/obj/item/gun/microfusion/proc/remove_attachment(obj/item/microfusion_gun_attachment/microfusion_gun_attachment, mob/living/user) + balloon_alert(user, "removed attachment") + playsound(src, 'sound/items/tools/screwdriver.ogg', 70) + microfusion_gun_attachment.forceMove(get_turf(src)) + attachments -= microfusion_gun_attachment + microfusion_gun_attachment.remove_attachment(src) + user?.put_in_hands(microfusion_gun_attachment) + update_appearance() + +// UI CONTROL + +/obj/item/gun/microfusion/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "MicrofusionGunControl") + ui.open() + +/obj/item/gun/microfusion/ui_data(mob/user) + var/list/data = list() + + data["gun_name"] = name + data["gun_desc"] = desc + data["gun_heat_dissipation"] = heat_dissipation_bonus + + if(phase_emitter) + data["has_emitter"] = TRUE + data["phase_emitter_data"] = list( + "type" = capitalize(phase_emitter.name), + "integrity" = phase_emitter.integrity, + "current_heat" = phase_emitter.current_heat, + "throttle_percentage" = phase_emitter.throttle_percentage, + "heat_dissipation_per_tick" = phase_emitter.heat_dissipation_per_tick, + "max_heat" = phase_emitter.max_heat, + "damaged" = phase_emitter.damaged, + "hacked" = phase_emitter.hacked, + "heat_percent" = phase_emitter.get_heat_percent(), + "process_time" = phase_emitter.fire_delay, + "cooling_system" = phase_emitter.cooling_system, + "cooling_system_rate" = phase_emitter.cooling_system_rate, + ) + else + data["has_emitter"] = FALSE + + if(cell) + var/list/attachments = list() + for(var/obj/item/microfusion_cell_attachment/attachment in cell.attachments) + attachments += attachment.name + data["has_cell"] = TRUE + data["cell_data"] = list( + "type" = capitalize(cell.name), + "charge" = cell.charge, + "max_charge" = cell.maxcharge, + "status" = cell.meltdown, + "attachments" = attachments, + ) + else + data["has_cell"] = FALSE + + + + if(attachments.len) + data["has_attachments"] = TRUE + data["attachments"] = list() + for(var/obj/item/microfusion_gun_attachment/attachment in attachments) + var/list/attachment_functions = attachment.get_modify_data() + var/has_modifications = FALSE + if(attachment_functions?.len > 0) + has_modifications = TRUE + data["attachments"] += list(list( + "name" = uppertext(attachment.name), + "desc" = attachment.desc, + "slot" = capitalize(attachment.slot), + "information" = attachment.get_information_data(), + "has_modifications" = has_modifications, + "modify" = attachment_functions, + "ref" = REF(attachment), + )) + + else + data["has_attachments"] = FALSE + + return data + +/obj/item/gun/microfusion/ui_act(action, list/params) + . = ..() + if(.) + return + + switch(action) + if("eject_cell") + if(!cell) + return + eject_cell(usr) + if("overclock_emitter") + if(!phase_emitter) + return + if(!phase_emitter.hacked) + return + phase_emitter.set_overclock(usr) + if("eject_emitter") + if(!phase_emitter) + return + remove_emitter(usr) + if("remove_attachment") + var/obj/item/microfusion_gun_attachment/to_remove = locate(params["attachment_ref"]) in src + if(!to_remove) + return + remove_attachment(to_remove, usr) + if("modify_attachment") + var/obj/item/microfusion_gun_attachment/to_modify = locate(params["attachment_ref"]) in src + if(!to_modify) + return + to_modify.run_modify_data(params["modify_ref"], usr, src) + if("toggle_cooling_system") + if(!phase_emitter) + return + phase_emitter.toggle_cooling_system(usr) + +/// Recalculates the spread, based on attachment-provided values. +/obj/item/gun/microfusion/proc/recalculate_spread() + spread = max(0, attachment_spread) + +/// Recalculates the recoil, based on attachment-provided values. +/obj/item/gun/microfusion/proc/recalculate_recoil() + recoil = max(0, attachment_recoil) diff --git a/modular_ss220/modules/return_prs/microfusion/code/microfusion_gun_attachments.dm b/modular_ss220/modules/return_prs/microfusion/code/microfusion_gun_attachments.dm new file mode 100644 index 00000000000000..7af4e7ea20be9c --- /dev/null +++ b/modular_ss220/modules/return_prs/microfusion/code/microfusion_gun_attachments.dm @@ -0,0 +1,572 @@ +/** +*MICROFUSION GUN UPGRADE ATTACHMENTS +*For adding unique abilities to microfusion guns, these can directly interact with the gun! +*/ + +/obj/item/microfusion_gun_attachment + name = "microfusion gun attachment" + desc = "If you see this yell at a coder" + icon = 'modular_ss220/modules/return_prs/microfusion/icons/microfusion_gun_attachments.dmi' + w_class = WEIGHT_CLASS_NORMAL + /// The attachment overlay icon state. + var/attachment_overlay_icon_state + /// Any incompatible upgrade types. + var/list/incompatible_attachments = list() + /// The added heat produced by having this module installed. + var/heat_addition = 0 + /// The slot this attachment is installed in. + var/slot = GUN_SLOT_UNIQUE + /// How much extra power do we use? + var/power_usage = 0 + /// Spread adjustment. Moved up to the base attachment type because of barrel mods and grips being in separate slots. + var/spread_adjust + /// Recoil adjustment. Also moved up to base attachment because of barrel mods and grips being in separate slots. + var/recoil_adjust + +/obj/item/microfusion_gun_attachment/examine(mob/user) + . = ..() + . += "Compatible slot: [slot]." + +/obj/item/microfusion_gun_attachment/proc/run_attachment(obj/item/gun/microfusion/microfusion_gun) + SHOULD_CALL_PARENT(TRUE) + microfusion_gun.heat_per_shot += heat_addition + microfusion_gun.update_appearance() + microfusion_gun.extra_power_usage += power_usage + microfusion_gun.chambered?.refresh_shot() + if(spread_adjust) + microfusion_gun.attachment_spread += spread_adjust + microfusion_gun.recalculate_spread() + if(recoil_adjust) + microfusion_gun.attachment_recoil += recoil_adjust + microfusion_gun.recalculate_recoil() + return + +/obj/item/microfusion_gun_attachment/proc/process_attachment(obj/item/gun/microfusion/microfusion_gun, seconds_per_tick) + return + +//Firing the gun right before we let go of it, tis is called. +/obj/item/microfusion_gun_attachment/proc/process_fire(obj/item/gun/microfusion/microfusion_gun, obj/item/ammo_casing/chambered) + return + +/obj/item/microfusion_gun_attachment/proc/remove_attachment(obj/item/gun/microfusion/microfusion_gun) + SHOULD_CALL_PARENT(TRUE) + microfusion_gun.heat_per_shot -= heat_addition + microfusion_gun.update_appearance() + microfusion_gun.extra_power_usage -= power_usage + microfusion_gun.chambered?.refresh_shot() + if(spread_adjust) + microfusion_gun.attachment_spread -= spread_adjust + microfusion_gun.recalculate_spread() + if(recoil_adjust) + microfusion_gun.attachment_recoil -= recoil_adjust + microfusion_gun.recalculate_recoil() + return + +/* +Returns a list of modifications of this attachment, it must return a list within a list list(list()). +All of the following must be returned. +list(list("title" = "Toggle [toggle ? "OFF" : "ON"]", "icon" = "power-off", "color" = "blue" "reference" = "toggle_on_off")) +title - The title of the modification button +icon - The icon of the modification button +color - The color of the modification button +reference - The reference of the modification button, this is used to call the proc when the run modify data proc is called. +*/ +/obj/item/microfusion_gun_attachment/proc/get_modify_data() + return + +/obj/item/microfusion_gun_attachment/proc/run_modify_data(params, mob/living/user, obj/item/gun/microfusion/microfusion_gun) + return + +/obj/item/microfusion_gun_attachment/proc/get_information_data() + return + +// base type for the barrel mods because i got Really Tired of re-re-redefined variables +/obj/item/microfusion_gun_attachment/barrel + slot = GUN_SLOT_BARREL + /// If this isn't null, we're replacing our next loaded projectile with this type. + var/projectile_override + /// If this isn't null, on attachment, this becomes the new fire sound. + var/new_fire_sound + /// If this isn't null or zero, adds this fire delay to the gun. + var/delay_to_add + /// If this isn't null or zero, adds this burst to the gun's burst size. + var/burst_to_add + +/obj/item/microfusion_gun_attachment/barrel/process_fire(obj/item/gun/microfusion/microfusion_gun, obj/item/ammo_casing/chambered) + . = ..() + if(projectile_override) + chambered.loaded_projectile = new projectile_override + +/obj/item/microfusion_gun_attachment/barrel/run_attachment(obj/item/gun/microfusion/microfusion_gun) + . = ..() + if(new_fire_sound) + microfusion_gun.fire_sound = new_fire_sound + if(delay_to_add) + microfusion_gun.fire_delay += delay_to_add + if(burst_to_add) + microfusion_gun.burst_size += burst_to_add + +/obj/item/microfusion_gun_attachment/barrel/remove_attachment(obj/item/gun/microfusion/microfusion_gun) + . = ..() + if(new_fire_sound) + microfusion_gun.fire_sound = microfusion_gun.chambered?.fire_sound + if(delay_to_add) + microfusion_gun.fire_delay -= delay_to_add + if(burst_to_add) + microfusion_gun.burst_size -= burst_to_add + +/* +SCATTER ATTACHMENT + +Turns the gun into a shotgun. +*/ +/obj/item/microfusion_gun_attachment/barrel/scatter + name = "diffuser microfusion lens upgrade" + desc = "A diffusing lens system capable of splitting one beam into three." + icon_state = "attachment_scatter" + attachment_overlay_icon_state = "attachment_scatter" + slot = GUN_SLOT_BARREL + projectile_override = /obj/projectile/beam/laser/microfusion/scatter + /// How many pellets are we going to add to the existing amount on the gun? + var/pellets_to_add = 2 + /// The variation in pellet scatter. + var/variance_to_add = 20 + +/obj/item/microfusion_gun_attachment/barrel/scatter/run_attachment(obj/item/gun/microfusion/microfusion_gun) + . = ..() + microfusion_gun.microfusion_lens.pellets += pellets_to_add + microfusion_gun.microfusion_lens.variance += variance_to_add + +/obj/item/microfusion_gun_attachment/barrel/scatter/process_fire(obj/item/gun/microfusion/microfusion_gun, obj/item/ammo_casing/chambered) + . = ..() + chambered.loaded_projectile?.damage = chambered.loaded_projectile.damage / chambered.pellets + +/obj/item/microfusion_gun_attachment/barrel/scatter/remove_attachment(obj/item/gun/microfusion/microfusion_gun) + . = ..() + microfusion_gun.microfusion_lens.pellets -= pellets_to_add + microfusion_gun.microfusion_lens.variance -= variance_to_add + +/* +CRYSTALLINE SCATTER ATTACHMENT + +An overclocked shotgun. +*/ + +/obj/item/microfusion_gun_attachment/barrel/scatter/max + name = "crystalline diffuser microfusion lens upgrade" + desc = "An experimental diffusing lens system capable of splitting one beam into seven. However, it imparts recoil and causes an increased power draw." + icon_state = "attachment_scattermax" + attachment_overlay_icon_state = "attachment_scattermax" + slot = GUN_SLOT_BARREL + pellets_to_add = 6 + variance_to_add = 25 + recoil_adjust = 1 + spread_adjust = 15 + projectile_override = /obj/projectile/beam/laser/microfusion/scatter/max + power_usage = 20 + +/* +SUPERHEAT ATTACHMENT + +Lasers set the target on fire. +*/ + +/obj/item/microfusion_gun_attachment/barrel/superheat + name = "superheating phase emitter upgrade" + desc = "A barrel attachment hooked to the phase emitter, this adjusts the beam's wavelength to carry an intense wave of heat; causing targets to ignite." + icon_state = "attachment_superheat" + attachment_overlay_icon_state = "attachment_superheat" + heat_addition = 90 + slot = GUN_SLOT_BARREL + projectile_override = /obj/projectile/beam/laser/microfusion/superheated + new_fire_sound = 'modular_ss220/modules/return_prs/microfusion/sound/vaporize.ogg' + +/* +HELLFIRE ATTACHMENT + +Makes the gun shoot hellfire lasers. +*/ +/obj/item/microfusion_gun_attachment/barrel/hellfire + name = "hellfire emitter upgrade" + desc = "A barrel attachment hooked to the phase emitter, this adjusts the beam's wavelength to carry an extra wave of heat; causing nastier wounds and more damage." + icon_state = "attachment_hellfire" + attachment_overlay_icon_state = "attachment_hellfire" + heat_addition = 50 + power_usage = 20 + slot = GUN_SLOT_BARREL + projectile_override = /obj/projectile/beam/laser/microfusion/hellfire + new_fire_sound = 'modular_ss220/modules/return_prs/microfusion/sound/melt.ogg' + +/* +REPEATER ATTACHMENT + +The gun can fire volleys of shots. +*/ +/obj/item/microfusion_gun_attachment/barrel/repeater + name = "repeating phase emitter upgrade" + desc = "This barrel attachment upgrades the central phase emitter to fire off two beams in quick succession. While offering an increased rate of fire, the heat output and recoil rises too." + icon_state = "attachment_repeater" + attachment_overlay_icon_state = "attachment_repeater" + heat_addition = 40 + slot = GUN_SLOT_BARREL + spread_adjust = 15 + recoil_adjust = 1 + burst_to_add = 1 + delay_to_add = 5 + projectile_override = /obj/projectile/beam/laser/microfusion/repeater + +/* +FOCUSED REPEATER ATTACHMENT + +The gun can fire volleys of shots that penetrate armor. +*/ + +/obj/item/microfusion_gun_attachment/barrel/repeater/penetrator + name = "focused repeating phase emitter upgrade" + desc = "A focused variant of the repeating phase controller. It allows the lasers to penetrate armor however this results in higher power usage." + icon_state = "attachment_penetrator" + attachment_overlay_icon_state = "attachment_penetrator" + power_usage = 20 + slot = GUN_SLOT_BARREL + projectile_override = /obj/projectile/beam/laser/microfusion/penetrator + power_usage = 80 // A price to pay to penetrate through armor + +/* +X-RAY ATTACHMENT + +The gun can fire X-RAY shots. +*/ +/obj/item/microfusion_gun_attachment/barrel/xray + name = "quantum phase inverter array" //Yes quantum makes things sound cooler. + desc = "An experimental barrel attachment that modifies the central phase emitter, causing the wave frequency to shift into X-ray. \ + Capable of penetrating both glass and solid matter with ease; though, unlike a more traditional x-ray laser gun, \ + the bolts don't carry a greater effect against armor, due to going through the target and doing more minimal internal damage. \ + These attachments are power-hungry and overheat easily, though engineers have deemed the costs necessary drawbacks." + icon_state = "attachment_xray" + slot = GUN_SLOT_BARREL + attachment_overlay_icon_state = "attachment_xray" + heat_addition = 90 + power_usage = 50 + new_fire_sound = 'modular_ss220/modules/return_prs/microfusion/sound/incinerate.ogg' + projectile_override = /obj/projectile/beam/laser/microfusion/xray + +/obj/item/microfusion_gun_attachment/barrel/xray/examine(mob/user) + . = ..() + . += span_warning("CAUTION: Phase emitter heats up extremely quickly, sustained fire not recommended!") + +/* +SUPPRESSOR ATTACHMENT + +Makes operators operate operatingly. +*/ + +/obj/item/microfusion_gun_attachment/barrel/suppressor + name = "laser suppressor" // sure it makes no sense but its cool + desc = "An experimental barrel attachment that dampens the soundwave of the emitter, making the laser shots far more stealthy. Best paired with black camo." + icon_state = "attachment_suppressor" + slot = GUN_SLOT_BARREL + attachment_overlay_icon_state = "attachment_suppressor" + +/obj/item/microfusion_gun_attachment/barrel/suppressor/run_attachment(obj/item/gun/microfusion/microfusion_gun) + . = ..() + microfusion_gun.suppressed = TRUE + +/obj/item/microfusion_gun_attachment/barrel/suppressor/remove_attachment(obj/item/gun/microfusion/microfusion_gun) + . = ..() + microfusion_gun.suppressed = null + +/* +BIKEHORN ATTACHMENT + +HONK!! Does subpar stamina damage but slips people. +*/ + +/obj/item/microfusion_gun_attachment/barrel/honk + name = "bananium phase emitter upgrade" + desc = "An honksperimental barrel attachment that makes your lasers funnier." + icon_state = "attachment_honk" + attachment_overlay_icon_state = "attachment_honk" + delay_to_add = 2 SECONDS + new_fire_sound = 'sound/items/bikehorn.ogg' + projectile_override = /obj/projectile/beam/laser/microfusion/honk + +/obj/item/microfusion_gun_attachment/barrel/honk/examine(mob/user) + . = ..() + . += span_warning("CAUTION: The gun you are about to handle is extremely funny!") + +/* +LANCE ATTACHMENT + +The gun fires fast heavy lasers but takes a long time to fire. +*/ +/obj/item/microfusion_gun_attachment/barrel/lance + name = "lance induction carriage" + desc = "A modification kit that turns the MCR into a designated marksman rifle. Fired beams boast greater firepower and speed, \ + but the enhanced throughput is very draining on the cell, as well as generating an extreme amount of heat. \ + Users are advised to make their shots count." + icon = 'icons/obj/weapons/improvised.dmi' + icon_state = "kitsuitcase" + incompatible_attachments = list(/obj/item/microfusion_gun_attachment/camo, /obj/item/microfusion_gun_attachment/camo/nanotrasen, /obj/item/microfusion_gun_attachment/camo/honk) + attachment_overlay_icon_state = "attachment_lance" + heat_addition = 150 + power_usage = 100 + delay_to_add = 2.5 SECONDS + new_fire_sound = 'sound/items/weapons/lasercannonfire.ogg' + projectile_override = /obj/projectile/beam/laser/microfusion/lance + +/obj/item/microfusion_gun_attachment/barrel/lance/examine(mob/user) + . = ..() + . += span_warning("CAUTION: Phase emitter heats up extremely quickly!") + +/* +PULSE ATTACHMENT + +The gun can fire PULSE shots. +*/ +/obj/item/microfusion_gun_attachment/barrel/pulse + name = "pulse induction carriage" + desc = "A cutting-edge bluespace capacitor array and distributing lens overhaul produced in laboratories by Nanotrasen scientists that allow microfusion rifles to fire military-grade pulse rounds. Comes equipped with cyclic cooling to ensure maximum combat efficiency, a munitions counter, and an extra-secure drop cage for the power source. May shorten trigger lifetime." + icon_state = "attachment_pulse" + attachment_overlay_icon_state = "attachment_pulse" + heat_addition = 150 + power_usage = 50 + projectile_override = /obj/projectile/beam/pulse + burst_to_add = 2 + delay_to_add = 2 + +/obj/item/microfusion_gun_attachment/barrel/pulse/examine(mob/user) + . = ..() + . += span_warning("CAUTION: Phase emitter heats up extremely quickly, sustained fire not recommended!") + +/* +GRIP ATTACHMENT + +Greatly reduces recoil and spread. +*/ +/obj/item/microfusion_gun_attachment/grip + name = "grip attachment" + desc = "A simple grip that increases accuracy." + icon_state = "attachment_grip" + attachment_overlay_icon_state = "attachment_grip" + slot = GUN_SLOT_UNDERBARREL + spread_adjust = -10 + recoil_adjust = -1 + +/* +HEATSINK ATTACHMENT + +"Greatly increases the phase emitter cooling rate." +*/ +/obj/item/microfusion_gun_attachment/heatsink + name = "phase emitter heatsink" + desc = "Greatly increases the phase emitter cooling rate." + icon_state = "attachment_heatsink" + attachment_overlay_icon_state = "attachment_heatsink" + slot = GUN_SLOT_UNDERBARREL + /// Cooling bonus. + var/cooling_rate_increase = 50 + +/obj/item/microfusion_gun_attachment/heatsink/run_attachment(obj/item/gun/microfusion/microfusion_gun) + . = ..() + microfusion_gun.heat_dissipation_bonus += cooling_rate_increase + +/obj/item/microfusion_gun_attachment/heatsink/remove_attachment(obj/item/gun/microfusion/microfusion_gun) + . = ..() + microfusion_gun.heat_dissipation_bonus -= cooling_rate_increase + +/* +RGB ATTACHMENT + +Enables you to change the light color of the laser. +*/ +/obj/item/microfusion_gun_attachment/rgb + name = "phase emitter spectrograph" + desc = "An attachment hooked up to the phase emitter, allowing the user to adjust the color of the beam outputted. This has seen widespread use by various factions capable of getting their hands on microfusion weapons, whether as a calling card or simply for entertainment." + icon_state = "attachment_rgb" + attachment_overlay_icon_state = "attachment_rgb" + /// What color are we changing the sprite to? + var/color_to_apply = COLOR_MOSTLY_PURE_RED + +/obj/item/microfusion_gun_attachment/rgb/process_fire(obj/item/gun/microfusion/microfusion_gun, obj/item/ammo_casing/chambered) + . = ..() + chambered?.loaded_projectile.icon_state = "laser_greyscale" + chambered?.loaded_projectile.color = color_to_apply + chambered?.loaded_projectile.light_color = color_to_apply + +/obj/item/microfusion_gun_attachment/rgb/proc/select_color(mob/living/user) + var/new_color = input(user, "Please select your new projectile color", "Laser color", color_to_apply) as null|color + + if(!new_color) + return + + color_to_apply = new_color + +/obj/item/microfusion_gun_attachment/rgb/attack_self(mob/user, modifiers) + . = ..() + select_color(user) + +/obj/item/microfusion_gun_attachment/rgb/get_modify_data() + return list(list("title" = "Change Color", "icon" = "wrench", "reference" = "color", "color" = "blue")) + +/obj/item/microfusion_gun_attachment/rgb/run_modify_data(params, mob/living/user) + if(params == "color") + select_color(user) + +/* +RAIL ATTACHMENT + +Allows for flashlights bayonets and adds 1 slot to equipment. +*/ +/obj/item/microfusion_gun_attachment/rail + name = "gun rail attachment" + desc = "A simple set of rails that attaches to weapon hardpoints. Allows for 3 more attachment slots and the instillation of a flashlight or bayonet." + icon_state = "attachment_rail" + attachment_overlay_icon_state = "attachment_rail" + slot = GUN_SLOT_RAIL + +/obj/item/microfusion_gun_attachment/rail/run_attachment(obj/item/gun/microfusion/microfusion_gun) + . = ..() + microfusion_gun.AddComponent(/datum/component/seclite_attachable, \ + light_overlay_icon = 'modular_ss220/modules/return_prs/microfusion/icons/microfusion_gun40x32.dmi', \ + light_overlay = "flight") + microfusion_gun = TRUE + +/obj/item/microfusion_gun_attachment/rail/remove_attachment(obj/item/gun/microfusion/microfusion_gun) + . = ..() + var/component_to_delete = microfusion_gun.GetComponent(/datum/component/seclite_attachable) + if(component_to_delete) + qdel(component_to_delete) + microfusion_gun = initial(microfusion_gun) + if(microfusion_gun) + microfusion_gun.forceMove(get_turf(microfusion_gun)) + microfusion_gun = null + microfusion_gun.update_appearance() + microfusion_gun.remove_all_attachments() + +/* +SCOPE ATTACHMENT + +Allows for a scope to be attached to the gun. +*/ + +/obj/item/microfusion_gun_attachment/scope + name = "scope attachment" + desc = "A simple telescopic scope, allowing for long-ranged use of the weapon. However, these do not provide any night vision." + icon_state = "attachment_scope" + attachment_overlay_icon_state = "attachment_scope" + slot = GUN_SLOT_RAIL + +/obj/item/microfusion_gun_attachment/scope/run_attachment(obj/item/gun/microfusion/microfusion_gun) + . = ..() + if(microfusion_gun.GetComponent(/datum/component/scope)) + return + microfusion_gun.AddComponent(/datum/component/scope, range_modifier = 1.5) + +/obj/item/microfusion_gun_attachment/scope/remove_attachment(obj/item/gun/microfusion/microfusion_gun) + . = ..() + var/datum/component_datum = microfusion_gun.GetComponent(/datum/component/scope) + if(component_datum) + qdel(component_datum) + +/* +BLACK CAMO ATTACHMENT + +Allows for a black camo to be applied to the gun. +All tactical, all the time. +*/ + +/obj/item/microfusion_gun_attachment/camo + name = "black camo microfusion frame" + desc = "A frame modification for the MCR-01, changing the color of the gun to black." + slot = GUN_SLOT_CAMO + icon_state = "attachment_black" + attachment_overlay_icon_state = "attachment_black" + +/* +HONK CAMO ATTACHMENT + +Allows for a clown camo to be applied to the gun. +HONK!! +*/ +/obj/item/microfusion_gun_attachment/camo/honk + name = "bananium microfusion frame" + desc = "A frame modification for the MCR-01, plating the gun in bananium." + icon_state = "attachment_honk_camo" + attachment_overlay_icon_state = "attachment_honk_camo" + +/* +SYNDIE CAMO ATTACHMENT + +Allows for a blood red camo to be applied to the gun. +Totally not property of a hostile corporation. +*/ +/obj/item/microfusion_gun_attachment/camo/syndicate + name = "blood red camo microfusion frame" + desc = "A frame modification for the MCR-01, changing the color of the gun to a slick blood red." + icon_state = "attachment_syndi_camo" + attachment_overlay_icon_state = "attachment_syndi_camo" + +/* +NANOTRASEN CAMO ATTACHMENT + +Allows for an official blue camo to be applied to the gun. +Hail Nanotrasen. +*/ +/obj/item/microfusion_gun_attachment/camo/nanotrasen + name = "\improper Nanotrasen brand microfusion frame" + desc = "A frame modification for the MCR-01, changing the color of the gun to blue." + icon_state = "attachment_nt_camo" + attachment_overlay_icon_state = "attachment_nt_camo" + + +/* +UNDERCHARGER ATTACHMENT + +Massively decreases the output beam of the phase emitter. +Converts shots to STAMINA damage. +*/ +/obj/item/microfusion_gun_attachment/undercharger + name = "phase emitter undercharger" + desc = "An underbarrel system hooked to the phase emitter, this allows the weapon to also fire an electron bolt, producing a short-lived underpowered electric charge capable of stunning targets. These shots are less demanding on the weapon, leading to an increase in cooling rate." + icon_state = "attachment_undercharger" + attachment_overlay_icon_state = "attachment_undercharger" + incompatible_attachments = list(/obj/item/microfusion_gun_attachment/barrel/scatter, /obj/item/microfusion_gun_attachment/barrel/scatter/max, /obj/item/microfusion_gun_attachment/camo/honk) + slot = GUN_SLOT_UNDERBARREL + var/toggle = FALSE + var/cooling_rate_increase = 10 + /// The projectile we override + var/projectile_override = /obj/projectile/beam/microfusion_disabler + +/obj/item/microfusion_gun_attachment/undercharger/get_modify_data() + return list(list("title" = "Turn [toggle ? "OFF" : "ON"]", "icon" = "power-off", "color" = "[toggle ? "red" : "green"]", "reference" = "toggle_on_off")) + +/obj/item/microfusion_gun_attachment/undercharger/run_modify_data(params, mob/living/user, obj/item/gun/microfusion/microfusion_gun) + if(params == "toggle_on_off") + toggle(microfusion_gun, user) + +/obj/item/microfusion_gun_attachment/undercharger/proc/toggle(obj/item/gun/microfusion/microfusion_gun, mob/user) + if(toggle) + toggle = FALSE + microfusion_gun.heat_dissipation_bonus += cooling_rate_increase + else + toggle = TRUE + microfusion_gun.heat_dissipation_bonus -= cooling_rate_increase + + if(user) + to_chat(user, span_notice("You toggle [src] [toggle ? "ON" : "OFF"].")) + +/obj/item/microfusion_gun_attachment/undercharger/run_attachment(obj/item/gun/microfusion/microfusion_gun) + . = ..() + microfusion_gun.fire_sound = 'modular_ss220/modules/return_prs/microfusion/sound/burn.ogg' + +/obj/item/microfusion_gun_attachment/undercharger/process_fire(obj/item/gun/microfusion/microfusion_gun, obj/item/ammo_casing/chambered) + . = ..() + if(toggle) + chambered.loaded_projectile = new projectile_override + +/obj/item/microfusion_gun_attachment/undercharger/remove_attachment(obj/item/gun/microfusion/microfusion_gun) + . = ..() + if(toggle) + toggle = FALSE + microfusion_gun.heat_dissipation_bonus += cooling_rate_increase + microfusion_gun.fire_sound = microfusion_gun.chambered?.fire_sound diff --git a/modular_ss220/modules/return_prs/microfusion/code/microfusion_techweb.dm b/modular_ss220/modules/return_prs/microfusion/code/microfusion_techweb.dm new file mode 100644 index 00000000000000..d5166fcaf5e101 --- /dev/null +++ b/modular_ss220/modules/return_prs/microfusion/code/microfusion_techweb.dm @@ -0,0 +1,118 @@ +/datum/techweb_node/basic_microfusion + id = TECHWEB_NODE_BASIC_MICROFUSION + starting_node = TRUE + display_name = "Basic Microfusion Technology" + description = "Basic microfusion technology allowing for basic microfusion designs." + design_ids = list( + "basic_microfusion_cell", + ) + +//Enhanced microfusion +/datum/techweb_node/enhanced_microfusion + id = TECHWEB_NODE_ENHANCED_MICROFUSION + display_name = "Enhanced Microfusion Technology" + description = "Enhanced microfusion technology allowing for upgraded basic microfusion!" + prereq_ids = list( + TECHWEB_NODE_BASIC_MICROFUSION, + TECHWEB_NODE_ENERGY_MANIPULATION, + TECHWEB_NODE_PARTS, + ) + design_ids = list( + "enhanced_microfusion_cell", + "enhanced_microfusion_phase_emitter", + "microfusion_gun_attachment_black_camo", + "microfusion_gun_attachment_nt_camo", + "microfusion_gun_attachment_heatsink", + "microfusion_gun_attachment_rgb", + ) + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) + +//Advanced microfusion +/datum/techweb_node/advanced_microfusion + id = TECHWEB_NODE_ADVANCED_MICROFUSION + display_name = "Advanced Microfusion Technology" + description = "Advanced microfusion technology allowing for advanced microfusion!" + prereq_ids = list( + TECHWEB_NODE_ENHANCED_MICROFUSION, + TECHWEB_NODE_PARTS_ADV, + ) + design_ids = list( + "advanced_microfusion_cell", + "microfusion_cell_attachment_overcapacity", + "microfusion_cell_attachment_stabiliser", + "microfusion_gun_attachment_scatter", + "microfusion_gun_attachment_hellfire", + "advanced_microfusion_phase_emitter", + "microfusion_gun_attachment_lance", + "microfusion_gun_attachment_grip", + "microfusion_gun_attachment_rail", + "microfusion_gun_attachment_scope", + ) + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS) + + +// Bluespace microfusion +/datum/techweb_node/bluespace_microfusion + id = TECHWEB_NODE_BLUESPACE_MICROFUSION + display_name = "Bluespace Microfusion Technology" + description = "Bluespace tinkering plus microfusion technology!" + prereq_ids = list( + TECHWEB_NODE_ADVANCED_MICROFUSION, + TECHWEB_NODE_PARTS_BLUESPACE, + TECHWEB_NODE_BEAM_WEAPONS, + TECHWEB_NODE_ELECTRIC_WEAPONS, + TECHWEB_NODE_FUSION, + ) + design_ids = list( + "bluespace_microfusion_cell", + "microfusion_gun_attachment_repeater", + "bluespace_microfusion_phase_emitter", + "microfusion_cell_attachment_selfcharging", + ) + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_4_POINTS) + +// Quantum microfusion +/datum/techweb_node/quantum_microfusion + id = TECHWEB_NODE_QUANTUM_MICROFUSION + display_name = "Quantum Microfusion Technology" + description = "Bleeding edge microfusion tech, making use of the latest in materials and components, bluespace or otherwise." + prereq_ids = list( + TECHWEB_NODE_BLUESPACE_MICROFUSION, + TECHWEB_NODE_ALIENTECH, + ) + design_ids = list( + "microfusion_gun_attachment_xray", + ) + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_5_POINTS) + +// Warcrime microfusion +/datum/techweb_node/illegal_microfusion + id = TECHWEB_NODE_ILLEGAL_MICROFUSION + display_name = "Illegal Microfusion Technology" + description = "Microfusion tech that has previously been banned by SolFed. I love the smell of plasma in the mornings." + prereq_ids = list( + TECHWEB_NODE_ADVANCED_MICROFUSION, + TECHWEB_NODE_SYNDICATE_BASIC, + ) + design_ids = list( + "microfusion_gun_attachment_superheat", + "microfusion_gun_attachment_scattermax", + "microfusion_gun_attachment_penetrator", + "microfusion_gun_attachment_syndi_camo", + "microfusion_gun_attachment_suppressor", + ) + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_4_POINTS) + +// clown microfusion. | This exists to not make this non modular +/datum/techweb_node/clown_microfusion + id = TECHWEB_NODE_CLOWN_MICROFUSION + display_name = "Honkicron Clownery Systems Technology" + description = "Microfusion tech that is proprietary tech of Honkicron Clownery Systems. HONK!!" + prereq_ids = list( + TECHWEB_NODE_BASIC_MICROFUSION, + ) + design_ids = list( + "microfusion_gun_attachment_honk", + "microfusion_gun_attachment_honk_camo", + ) + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) //Its normally supposed to be in clown tech so diff --git a/modular_ss220/modules/return_prs/microfusion/code/phase_emitter.dm b/modular_ss220/modules/return_prs/microfusion/code/phase_emitter.dm new file mode 100644 index 00000000000000..039c208100df97 --- /dev/null +++ b/modular_ss220/modules/return_prs/microfusion/code/phase_emitter.dm @@ -0,0 +1,257 @@ +/* +* PHASE EMITTERS +*/ + +/// The error message returned when the phase emitter is processed but damaged. +#define PHASE_FAILURE_DAMAGED "PHASE EMITTER: Emitter damaged!" +/// The error message returned when the phase emitter has reached it's htermal throttle. +#define PHASE_FAILURE_THROTTLE "PHASE EMITTER: Thermal throttle active!" + +/// The heat dissipation bonus of an emitter being in space! +#define PHASE_HEAT_DISSIPATION_BONUS_SPACE 30 +/// The heat dissipation bonus of an emitter being in air! +#define PHASE_HEAT_DISSIPATION_BONUS_AIR 10 + +/* +* Basically the heart of the gun, can be upgraded. +*/ +/obj/item/microfusion_phase_emitter + name = "basic microfusion phase emitter" + desc = "A first-generation phase emitter, this is the core of the weapon and the source of the beam." + icon = 'modular_ss220/modules/return_prs/microfusion/icons/microfusion_gun_attachments.dmi' + icon_state = "phase_emitter" + base_icon_state = "phase_emitter" + w_class = WEIGHT_CLASS_NORMAL + /// Max heat before it breaks + var/max_heat = 2000 + /// Current heat level + var/current_heat = 0 + /// Thermal throttle percentage + var/throttle_percentage = 80 + /// How much heat it dissipates passively + var/heat_dissipation_per_tick = 30 + /// Active cooling system + var/cooling_system = FALSE + /// How quickly does the active cooling system cool - 1/1 ratio of cell charge to cooling point + var/cooling_system_rate = 30 + /// What is our dynamic integrity? + var/integrity = 100 + /// Are we fucked? + var/damaged = FALSE + /// Hard ref to the gun. + var/obj/item/gun/microfusion/parent_gun + /// Are we "hacked" thus allowing overclocking? + var/hacked = FALSE + /// The fire delay this emitter adds to the gun. + var/fire_delay = 0 + /// The sound playback speed, used for overheating sound effects on fire. + var/sound_freq = 0 + + +/obj/item/microfusion_phase_emitter/Initialize(mapload) + . = ..() + START_PROCESSING(SSobj, src) + +/obj/item/microfusion_phase_emitter/Destroy() + parent_gun = null + return ..() + +/obj/item/microfusion_phase_emitter/process(seconds_per_tick) + if(current_heat == 0) + return + var/calculated_heat_dissipation_per_tick = heat_dissipation_per_tick + if(isspaceturf(get_turf(src))) + calculated_heat_dissipation_per_tick += PHASE_HEAT_DISSIPATION_BONUS_SPACE // Passive cooling in space boost! + if(parent_gun) + calculated_heat_dissipation_per_tick += parent_gun.heat_dissipation_bonus + else + calculated_heat_dissipation_per_tick += PHASE_HEAT_DISSIPATION_BONUS_AIR //We get some passive cooling from being out of the gun. + if(cooling_system && parent_gun && parent_gun.cell && parent_gun.cell.use(cooling_system_rate)) + calculated_heat_dissipation_per_tick += cooling_system_rate + + current_heat = clamp(current_heat - (calculated_heat_dissipation_per_tick * seconds_per_tick) * 0.5, 0, INFINITY) + if(current_heat > max_heat) + integrity = integrity - current_heat / 1000 * seconds_per_tick * 0.5 + + process_fire_delay_and_sound() + + if(integrity <= 0) + kill() + update_appearance() + parent_gun?.update_appearance() + +/obj/item/microfusion_phase_emitter/proc/toggle_cooling_system(mob/user) + if(!parent_gun) + return + if(!cooling_system && !parent_gun.cell) + if(user) + to_chat(user, span_warning("You need a cell to turn on the cooling system.")) + return + + if(cooling_system) + cooling_system = FALSE + else + cooling_system = TRUE + + if(user) + to_chat(user, span_notice("You toggle the cooling system [cooling_system ? "ON" : "OFF"].")) + +/obj/item/microfusion_phase_emitter/multitool_act(mob/living/user, obj/item/tool) + if(hacked) + to_chat(user, span_warning("[src] is already unlocked!")) + return + to_chat(user, span_notice("You begin to override the thermal overclock safety...")) + if(do_after(user, 5 SECONDS, src)) + hacked = TRUE + to_chat(user, span_notice("You override the thermal overclock safety.")) + +/obj/item/microfusion_phase_emitter/proc/set_overclock(mob/living/user) + if(!hacked) + return + var/new_throttle = clamp(input(user, "Please input a new thermal throttle percentage(0-300):", "Phase Emitter Overclock") as null|num, 1, 300) + + to_chat(user, span_notice("Thermal throttle percent set to: [new_throttle].")) + + if(new_throttle > 100) + to_chat(user, span_danger("WARNING: You have input a throttle percentage of more than 100, this may cause emitter damage.")) + + throttle_percentage = new_throttle + +/obj/item/microfusion_phase_emitter/update_icon_state() + . = ..() + + if(damaged) + icon_state = "[base_icon_state]_damaged" + else + switch(get_heat_percent()) + if(40 to 69) + icon_state = "[base_icon_state]_hot" + if(70 to INFINITY) + icon_state = "[base_icon_state]_critical" + else + icon_state = base_icon_state + +/obj/item/microfusion_phase_emitter/proc/process_fire_delay_and_sound() + var/fire_delay_to_add = 0 + if(integrity < 100) + fire_delay_to_add = fire_delay_to_add + (100 - integrity) / 10 + + if(current_heat > max_heat) + fire_delay_to_add = fire_delay_to_add + (current_heat - max_heat) / 100 //Holy shit this emitter is tanking + + fire_delay = round(fire_delay_to_add, 1.45) + +/obj/item/microfusion_phase_emitter/proc/get_heat_icon_state() + switch(get_heat_percent()) + if(40 to 69) + return "hot" + if(70 to INFINITY) + return "critical" + else + return "normal" + +/obj/item/microfusion_phase_emitter/examine(mob/user) + . = ..() + if(damaged) + . += span_danger("It is damaged beyond repair.") + else + . += span_notice("It has a thermal rating of: [max_heat] C") + . += span_notice("It dissipates heat at: [heat_dissipation_per_tick] C") + . += span_notice("Heat capacity: [get_heat_percent()]%") + . += span_notice("Integrity: [integrity]%") + . += span_notice("Thermal throttle: [throttle_percentage]%") + . += span_notice("Cooling system: [cooling_system ? "enabled, cooling at [cooling_system_rate] C/s" : "disabled"].") + +/obj/item/microfusion_phase_emitter/proc/get_heat_percent() + return round(current_heat / max_heat * 100) + +/obj/item/microfusion_phase_emitter/proc/check_emitter() + if(damaged) + return PHASE_FAILURE_DAMAGED + if(get_heat_percent() >= throttle_percentage) + return PHASE_FAILURE_THROTTLE + return SHOT_SUCCESS + +/obj/item/microfusion_phase_emitter/proc/add_heat(heat_to_add) + current_heat += heat_to_add + update_appearance() + +/obj/item/microfusion_phase_emitter/proc/kill() + damaged = TRUE + name = "damaged [name]" + playsound(src, 'modular_ss220/modules/return_prs/microfusion/sound/overheat.ogg', 70) + say("ERROR: Integrity failure!") + STOP_PROCESSING(SSobj, src) + +/datum/crafting_recipe/makeshift/microfusion_phase_emitter + name = "Makeshift Microfusion Phase Emitter" + tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER, TOOL_WELDER, TOOL_MULTITOOL, TOOL_CROWBAR) + result = /obj/item/microfusion_phase_emitter/makeshift + reqs = list( + /obj/item/stack/rods = 2, + /obj/item/stack/sheet/iron = 2, + /obj/item/shard = 2, + /obj/item/stack/cable_coil = 2, + ) + time = 20 SECONDS + category = CAT_MISC + +/obj/item/microfusion_phase_emitter/makeshift + name = "makeshift microfusion phase emitter" + desc = "An... Apparatus, While the effects on enemy combatants may be dubious, it will certainly do incredible damage to the gun's warranty. What the hell were you thinking when you came up with this?" + max_heat = 400 + throttle_percentage = 100 + heat_dissipation_per_tick = 10 + cooling_system_rate = 15 + integrity = 50 + color = "#503702" + +/obj/item/microfusion_phase_emitter/enhanced + name = "enhanced microfusion phase emitter" + desc = "A second-generation phase emitter, this one is made of more robust materials which allow for a higher capacity for heat, a faster dissipation and cooling of it, and more capacity for thermal throttling." + max_heat = 2500 + throttle_percentage = 85 + heat_dissipation_per_tick = 40 + cooling_system_rate = 40 + integrity = 120 + color = "#ffffcc" + +/obj/item/microfusion_phase_emitter/advanced + name = "advanced microfusion phase emitter" + desc = "A third-generation phase emitter, boasting a high capacity for heat, greater dissipation and cooling, and is built using higher-grade materials for more durability." + max_heat = 3000 + throttle_percentage = 90 + heat_dissipation_per_tick = 50 + cooling_system_rate = 50 + integrity = 150 + color = "#99ffcc" + +/obj/item/microfusion_phase_emitter/bluespace + name = "bluespace microfusion phase emitter" + desc = "A fourth-generation phase emitter, utilizing a bluespace medium to store and manage heat, allowing for much cooler temperatures than realspace would allow. This is made of nothing but the latest materials, leading to the highest durability of any phase emitter on the market." + max_heat = 3500 + throttle_percentage = 95 + heat_dissipation_per_tick = 60 + cooling_system_rate = 60 + integrity = 200 + color = "#66ccff" + +/obj/item/microfusion_phase_emitter/nanocarbon + name = "nanocarbon microfusion phase emitter" + desc = "An experimental phase emitter, made of nanocarbon, which is the most durable material on the market. It is capable of storing and managing heat, and is capable of cooling at a much higher rate than the other phase emitters." + max_heat = 15000 + throttle_percentage = 95 + heat_dissipation_per_tick = 130 + cooling_system_rate = 60 + integrity = 500 + color = "#6966ff" + + +#undef PHASE_FAILURE_DAMAGED +#undef PHASE_FAILURE_THROTTLE + +#undef PHASE_HEAT_DISSIPATION_BONUS_SPACE +#undef PHASE_HEAT_DISSIPATION_BONUS_AIR + +#undef SHOT_SUCCESS +#undef SHOT_FAILURE_NO_EMITTER diff --git a/modular_ss220/modules/return_prs/microfusion/code/projectiles.dm b/modular_ss220/modules/return_prs/microfusion/code/projectiles.dm new file mode 100644 index 00000000000000..41c47cd2b09fab --- /dev/null +++ b/modular_ss220/modules/return_prs/microfusion/code/projectiles.dm @@ -0,0 +1,103 @@ +/obj/item/ammo_casing + ///What volume should the sound play at? + var/fire_sound_volume = 50 + +/obj/item/ammo_casing/energy/laser/microfusion + name = "microfusion energy lens" + projectile_type = /obj/projectile/beam/laser/microfusion + e_cost = LASER_SHOTS(12, STANDARD_CELL_CHARGE) + select_name = "laser" + fire_sound = 'modular_ss220/modules/return_prs/microfusion/sound/laser_1.ogg' + fire_sound_volume = 100 + +/obj/item/ammo_casing/proc/refresh_shot() + loaded_projectile = new projectile_type(src, src) + +/obj/projectile/beam/laser/microfusion + name = "microfusion laser" + icon = 'modular_ss220/modules/return_prs/microfusion/icons/projectiles.dmi' + damage = 25 + +/obj/projectile/beam/microfusion_disabler + name = "microfusion disabler laser" + icon = 'modular_ss220/modules/return_prs/microfusion/icons/projectiles.dmi' + icon_state = "disabler" + damage = 41 + damage_type = STAMINA + armor_flag = ENERGY + hitsound = 'sound/items/weapons/tap.ogg' + eyeblur = 0 + impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser + light_color = LIGHT_COLOR_BLUE + tracer_type = /obj/effect/projectile/tracer/disabler + muzzle_type = /obj/effect/projectile/muzzle/disabler + impact_type = /obj/effect/projectile/impact/disabler + +/obj/projectile/beam/laser/microfusion/superheated + name = "superheated microfusion laser" + icon_state = "laser_greyscale" + damage = 20 //Trading damage for fire stacks + color = LIGHT_COLOR_FIRE + light_color = LIGHT_COLOR_FIRE + +/obj/projectile/beam/laser/microfusion/superheated/on_hit(atom/target, blocked = 0, pierce_hit) + . = ..() + if(isliving(target)) + var/mob/living/living = target + living.adjust_fire_stacks(2) + living.ignite_mob() + +/obj/projectile/beam/laser/microfusion/hellfire + name = "hellfire microfusion laser" + icon_state = "laser_greyscale" + wound_bonus = 0 + damage = 25 // Basically a hellfire beam + speed = 0.6 + color = LIGHT_COLOR_FLARE + light_color = LIGHT_COLOR_FLARE + +/obj/projectile/beam/laser/microfusion/scatter + name = "scatter microfusion laser" + damage = 30 // This damage is split into pellet amount + +/obj/projectile/beam/laser/microfusion/scatter/max + name = "scatter microfusion laser" + damage = 45 // This damage is split into pellet amount + +/obj/projectile/beam/laser/microfusion/repeater + damage = 12.5 + +/obj/projectile/beam/laser/microfusion/penetrator + name = "focused microfusion laser" + damage = 20 + armour_penetration = 50 + +/obj/projectile/beam/laser/microfusion/lance + name = "lance microfusion laser" + damage = 50 // We're turning the gun into a heavylaser + tracer_type = /obj/effect/projectile/tracer/heavy_laser + muzzle_type = /obj/effect/projectile/muzzle/heavy_laser + impact_type = /obj/effect/projectile/impact/heavy_laser + speed = 0.4 + +/obj/projectile/beam/laser/microfusion/xray + name = "x-ray microfusion laser" + icon_state = "laser_greyscale" + color = COLOR_GREEN + light_color = COLOR_GREEN + projectile_piercing = PASSCLOSEDTURF|PASSGRILLE|PASSGLASS + +/obj/projectile/beam/laser/microfusion/honk + name = "funny microfusion laser" + icon_state = "laser_greyscale" + color = COLOR_VIVID_YELLOW + light_color = COLOR_VIVID_YELLOW + damage_type = STAMINA + damage = 25 + armor_flag = ENERGY + hitsound = 'sound/misc/slip.ogg' + impact_type = /obj/effect/projectile/impact/disabler + +/obj/projectile/beam/laser/microfusion/honk/Initialize(mapload) + . = ..() + AddComponent(/datum/component/slippery, 20) diff --git a/modular_ss220/modules/return_prs/microfusion/icons/guns_lefthand.dmi b/modular_ss220/modules/return_prs/microfusion/icons/guns_lefthand.dmi new file mode 100644 index 0000000000000000000000000000000000000000..6690df96ac0be99c93cc597cec6d6085e63ccdb6 GIT binary patch literal 840 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 literal 0 HcmV?d00001 diff --git a/modular_ss220/modules/return_prs/microfusion/icons/microfusion_gun_attachments.dmi b/modular_ss220/modules/return_prs/microfusion/icons/microfusion_gun_attachments.dmi new file mode 100644 index 0000000000000000000000000000000000000000..82ea78ddeb1cadbca3bedec12c3b1bd09c963044 GIT binary patch literal 5234 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 literal 0 HcmV?d00001 diff --git a/modular_ss220/modules/return_prs/microfusion/icons/projectiles.dmi b/modular_ss220/modules/return_prs/microfusion/icons/projectiles.dmi new file mode 100644 index 0000000000000000000000000000000000000000..c3ee49a1e79c33569daad2cfd2b03c513d0aea3e GIT binary patch literal 416 zcmV;R0bl-!P)q!Lu0l3ARXltYBUFolH8R#tHJa{+r102iD@+kVEC&Hw-a zj!8s8R9J=Wlsgi|FbD$yTXBAl?|<9p6NrMmA_;1DW=9lABy)FEm2xwqyj0Xe_|ni8 zS^xm6V3X4d;RdThSHd@gZGRS2N6=D`f=>v-izG$a9Lzy5ItMohgkLakaJcXSvw|nc zWL}cp;fKS|eo}so%Mrj4z!7wG$_GXYQt$~u_?g1*93GU+GxGyH4+r-wR(?eQ0000< KMNUMnLSTXiORv!Y literal 0 HcmV?d00001 diff --git a/modular_ss220/modules/return_prs/microfusion/sound/burn.ogg b/modular_ss220/modules/return_prs/microfusion/sound/burn.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ea37d14ccc12f91b1aad4196d3ad615cd389d16d GIT binary patch literal 34599 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 literal 0 HcmV?d00001 diff --git a/modular_ss220/modules/return_prs/microfusion/sound/incinerate.ogg b/modular_ss220/modules/return_prs/microfusion/sound/incinerate.ogg new file mode 100644 index 0000000000000000000000000000000000000000..38f7846d7abcb25429ba1d55a2d0aa9b6bc59c62 GIT binary patch literal 29379 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¬L_loTD`l1pu7t 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 literal 0 HcmV?d00001 diff --git a/modular_ss220/modules/return_prs/microfusion/sound/mag_insert.ogg b/modular_ss220/modules/return_prs/microfusion/sound/mag_insert.ogg new file mode 100644 index 0000000000000000000000000000000000000000..53460ebf14dde47201a3de1ab552e724875a8cef GIT binary patch literal 9407 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%0AqxB!|}Sdvp8jUH{R=7hbgN6 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 Wv?i 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 literal 0 HcmV?d00001 diff --git a/modular_ss220/modules/return_prs/microfusion/sound/overheat.ogg b/modular_ss220/modules/return_prs/microfusion/sound/overheat.ogg new file mode 100644 index 0000000000000000000000000000000000000000..3585471bf9b958af2025d35d4c02fbf657890706 GIT binary patch literal 64084 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 literal 0 HcmV?d00001 diff --git a/modular_ss220/modules/return_prs/microfusion/sound/vaporize.ogg b/modular_ss220/modules/return_prs/microfusion/sound/vaporize.ogg new file mode 100644 index 0000000000000000000000000000000000000000..0ba3085797337340b311d9b6cba538902b5fdc39 GIT binary patch literal 35624 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
+ + {gun_name} + + {gun_desc} + + + {gun_heat_dissipation + ' C/s'} + + +
+ + +
act('eject_cell')} + /> + } + > + {has_cell ? ( + + + {cell_data.type} + + + {cell_data.status ? 'ERROR' : 'Nominal'} + + + + {cell_data.charge + '/' + cell_data.max_charge + 'MF'} + + + {!!cell_data.charge <= 0 && ( + +
+ Charge depleted! +
+
+ )} +
+ ) : ( + No cell installed! + )} +
+
+ +
act('eject_emitter')} + /> + } + > + {has_emitter ? ( + phase_emitter_data.damaged ? ( + Phase emitter is damaged! + ) : ( + + + {phase_emitter_data.type} + + + + {toFixed(phase_emitter_data.current_heat) + + ' C' + + ' (' + + phase_emitter_data.heat_percent + + '%)'} + + + + {phase_emitter_data.max_heat + ' C'} + + + {phase_emitter_data.throttle_percentage + '% '} +
+
+ +
+ {has_attachments ? ( + attachments.map((attachment, index) => ( +
+ act('remove_attachment', { + attachment_ref: attachment.ref, + }) + } + /> + } + > + + + {attachment.desc} + + + {attachment.slot} + + {attachment.information && ( + + {attachment.information} + + )} + {!!attachment.has_modifications && + attachment.modify.map((mod, index) => ( + + act('modify_attachment', { + attachment_ref: attachment.ref, + modify_ref: mod.reference, + }) + } + /> + } + /> + ))} + +
+ )) + ) : ( + No attachments installed! + )} +
+
+ + + + ); +}; From 39b050b042888b6c501a01d128005e706a7730b2 Mon Sep 17 00:00:00 2001 From: Arceniu <129214736+Arceniu@users.noreply.github.com> Date: Thu, 19 Dec 2024 15:49:34 +0300 Subject: [PATCH 10/15] fix: --- .../return_prs/microfusion/code/microfusion_gun_attachments.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_ss220/modules/return_prs/microfusion/code/microfusion_gun_attachments.dm b/modular_ss220/modules/return_prs/microfusion/code/microfusion_gun_attachments.dm index 7af4e7ea20be9c..8815711cb70ec0 100644 --- a/modular_ss220/modules/return_prs/microfusion/code/microfusion_gun_attachments.dm +++ b/modular_ss220/modules/return_prs/microfusion/code/microfusion_gun_attachments.dm @@ -436,7 +436,7 @@ Allows for flashlights bayonets and adds 1 slot to equipment. var/component_to_delete = microfusion_gun.GetComponent(/datum/component/seclite_attachable) if(component_to_delete) qdel(component_to_delete) - microfusion_gun = initial(microfusion_gun) +// microfusion_gun = initial(microfusion_gun) if(microfusion_gun) microfusion_gun.forceMove(get_turf(microfusion_gun)) microfusion_gun = null From f016948a98ca22510fcb50d8cdd09a1b98ffb84d Mon Sep 17 00:00:00 2001 From: Arceniu <129214736+Arceniu@users.noreply.github.com> Date: Sat, 21 Dec 2024 19:13:38 +0300 Subject: [PATCH 11/15] fix: hud.dmm --- .../master_files/icons/mob/huds/hud.dmi | Bin 13942 -> 14906 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/modular_nova/master_files/icons/mob/huds/hud.dmi b/modular_nova/master_files/icons/mob/huds/hud.dmi index 22aedb9faa500dfd3546796b86035636e0190c7c..7f24b9b485973294f91fbeded88e763b5da448c4 100644 GIT binary patch literal 14906 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 WRn@Z_4mUx-AH?X!)ygX_k^dLr6qcI+ literal 13942 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 C0~(nC From a41b92f8b982ec11c4305ca854e9748fdab582f4 Mon Sep 17 00:00:00 2001 From: Arceniu <129214736+Arceniu@users.noreply.github.com> Date: Sat, 21 Dec 2024 21:00:45 +0300 Subject: [PATCH 12/15] fix: interdyne have basic syndicate hud --- code/__DEFINES/atom_hud.dm | 2 ++ .../code/datums/id_trim/syndicate.dm | 2 ++ .../master_files/icons/mob/huds/hud.dmi | Bin 14906 -> 15129 bytes 3 files changed, 4 insertions(+) diff --git a/code/__DEFINES/atom_hud.dm b/code/__DEFINES/atom_hud.dm index 036dfc69e82cd0..f8c69104d60523 100644 --- a/code/__DEFINES/atom_hud.dm +++ b/code/__DEFINES/atom_hud.dm @@ -88,6 +88,8 @@ #define SECHUD_SYNDICATE "hudsyndicate" #define SECHUD_SYNDICATE_INTERDYNE "hudsyndicateinterdyne" #define SECHUD_SYNDICATE_INTERDYNE_HEAD "hudsyndicateinterdynehead" +#define SECHUD_INTERDYNE_GREEN "hudinterdynegreen" +#define SECHUD_INTERDYNE_GREEN_HEAD "hudinterdynegreenhead" #define SECHUD_ASSISTANT "hudassistant" #define SECHUD_ATMOSPHERIC_TECHNICIAN "hudatmospherictechnician" diff --git a/modular_nova/master_files/code/datums/id_trim/syndicate.dm b/modular_nova/master_files/code/datums/id_trim/syndicate.dm index 248446a0daa321..74f96d87450d52 100644 --- a/modular_nova/master_files/code/datums/id_trim/syndicate.dm +++ b/modular_nova/master_files/code/datums/id_trim/syndicate.dm @@ -95,6 +95,7 @@ department_color = COLOR_LIME subdepartment_color = COLOR_VERY_DARK_LIME_GREEN threat_modifier = 2 // Interdyne is allowed on station, so this'll get beepskys off them. + sechud_icon_state = SECHUD_INTERDYNE_GREEN /datum/id_trim/syndicom/nova/interdyne/shaftminer assignment = "Interdyne Shaft Miner" @@ -104,3 +105,4 @@ trim_state = "trim_deckofficer" department_color = COLOR_VERY_DARK_LIME_GREEN access = list(ACCESS_SYNDICATE, ACCESS_ROBOTICS, ACCESS_SYNDICATE_LEADER) + sechud_icon_state = SECHUD_INTERDYNE_GREEN_HEAD diff --git a/modular_nova/master_files/icons/mob/huds/hud.dmi b/modular_nova/master_files/icons/mob/huds/hud.dmi index 7f24b9b485973294f91fbeded88e763b5da448c4..055d01c396a15f7287110f216319e6085dc11a84 100644 GIT binary patch literal 15129 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 literal 14906 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 WRn@Z_4mUx-AH?X!)ygX_k^dLr6qcI+ From 980076b9a98b2e78b9cebcc8232b06a217464ae4 Mon Sep 17 00:00:00 2001 From: Arceniu <129214736+Arceniu@users.noreply.github.com> Date: Mon, 23 Dec 2024 19:20:53 +0300 Subject: [PATCH 13/15] qol: offs change armor strange --- .../kahraman_equipment/code/clothing/armor_datums.dm | 11 +++++++++++ .../kahraman_equipment/code/clothing/clothing.dm | 1 + 2 files changed, 12 insertions(+) diff --git a/modular_nova/modules/kahraman_equipment/code/clothing/armor_datums.dm b/modular_nova/modules/kahraman_equipment/code/clothing/armor_datums.dm index aa887a848c30d9..d4aeb725081b79 100644 --- a/modular_nova/modules/kahraman_equipment/code/clothing/armor_datums.dm +++ b/modular_nova/modules/kahraman_equipment/code/clothing/armor_datums.dm @@ -28,3 +28,14 @@ fire = 100 acid = ARMOR_LEVEL_MID wound = WOUND_ARMOR_WEAK + +/datum/armor/colonist_mask + melee = ARMOR_LEVEL_TINY + bullet = ARMOR_LEVEL_TINY + laser = 5 + energy = ARMOR_LEVEL_WEAK + bomb = ARMOR_LEVEL_MID + bio = 100 + fire = 100 + acid = ARMOR_LEVEL_MID + wound = WOUND_ARMOR_WEAK diff --git a/modular_nova/modules/kahraman_equipment/code/clothing/clothing.dm b/modular_nova/modules/kahraman_equipment/code/clothing/clothing.dm index 1dc8316b7090aa..7550992e6b1fca 100644 --- a/modular_nova/modules/kahraman_equipment/code/clothing/clothing.dm +++ b/modular_nova/modules/kahraman_equipment/code/clothing/clothing.dm @@ -206,6 +206,7 @@ worn_icon_digi = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn_digi.dmi' worn_icon_teshari = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn_teshari.dmi' worn_icon_state = "mask" + armor_type = /datum/armor/colonist_mask flags_inv = HIDEEYES|HIDEFACE|HIDEFACIALHAIR|HIDESNOUT /obj/item/clothing/mask/gas/atmos/frontier_colonist/Initialize(mapload) From deb3b89ae3dac4a42ccab3c6ce27b31904e81322 Mon Sep 17 00:00:00 2001 From: Arceniu <129214736+Arceniu@users.noreply.github.com> Date: Sat, 18 Jan 2025 17:28:33 +0300 Subject: [PATCH 14/15] qol: spacehelm reverse --- code/modules/clothing/spacesuits/_spacesuits.dm | 4 ++-- code/modules/clothing/spacesuits/softsuit.dm | 8 ++++---- code/modules/shuttle/emergency.dm | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/code/modules/clothing/spacesuits/_spacesuits.dm b/code/modules/clothing/spacesuits/_spacesuits.dm index 506a4d9d9e473e..bb9a8215d328cc 100644 --- a/code/modules/clothing/spacesuits/_spacesuits.dm +++ b/code/modules/clothing/spacesuits/_spacesuits.dm @@ -24,7 +24,7 @@ flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH | PEPPERPROOF resistance_flags = NONE dog_fashion = null - slowdown = 0.5 + slowdown = 0 sound_vary = TRUE equip_sound = 'sound/items/handling/helmet/helmet_equip1.ogg' pickup_sound = 'sound/items/handling/helmet/helmet_pickup1.ogg' @@ -59,7 +59,7 @@ /obj/item/tank/internals, /obj/item/tank/jetpack/oxygen/captain, ) - slowdown = 0.5 + slowdown = 1 armor_type = /datum/armor/suit_space flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDESEXTOY|HIDETAIL|HIDETAUR //NOVA EDIT CHANGE - ADDED HIDETAIL, HIDETAUR. ADDED HIDESEXTOY TO PREVENT VISUAL BUGS. cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS diff --git a/code/modules/clothing/spacesuits/softsuit.dm b/code/modules/clothing/spacesuits/softsuit.dm index 3bbb6d0bd0f906..4661ad3535086f 100644 --- a/code/modules/clothing/spacesuits/softsuit.dm +++ b/code/modules/clothing/spacesuits/softsuit.dm @@ -16,14 +16,14 @@ name = "Engineering Void Helmet" desc = "A CentCom engineering dark red space suit helmet. While old and dusty, it still gets the job done." icon_state = "void" - slowdown = 2 + slowdown = 0 /obj/item/clothing/suit/space/nasavoid/old name = "Engineering Voidsuit" icon_state = "void" inhand_icon_state = "void_suit" desc = "A CentCom engineering dark red space suit. Age has degraded the suit making it difficult to move around in." - slowdown = 2 + slowdown = 4 allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/multitool) //EVA suit @@ -73,7 +73,7 @@ inhand_icon_state = "syndicate-helm-orange" //resprite? armor_type = /datum/armor/space_fragile strip_delay = 65 - slowdown = 1 + slowdown = 0 /obj/item/clothing/suit/space/fragile name = "emergency space suit" @@ -81,7 +81,7 @@ var/torn = FALSE icon_state = "syndicate-orange" inhand_icon_state = "syndicate-orange" - slowdown = 1 + slowdown = 2 armor_type = /datum/armor/space_fragile strip_delay = 65 diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index 18e8de72101706..03c6b0257696b7 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -764,13 +764,13 @@ name = "emergency space helmet" icon_state = "syndicate-helm-orange" inhand_icon_state = "syndicate-helm-orange" - slowdown = 1.5 + slowdown = 0 /obj/item/clothing/suit/space/orange name = "emergency space suit" icon_state = "syndicate-orange" inhand_icon_state = "syndicate-orange" - slowdown = 1.5 + slowdown = 3 /obj/item/pickaxe/emergency name = "emergency disembarkation tool" From 166e08efee6b502a4390cc3b4300905ee4b18697 Mon Sep 17 00:00:00 2001 From: Arceniu <129214736+Arceniu@users.noreply.github.com> Date: Mon, 20 Jan 2025 22:44:01 +0300 Subject: [PATCH 15/15] qol: shuttle terminal on ds2 work --- _maps/RandomRuins/SpaceRuins/nova/des_two.dmm | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/_maps/RandomRuins/SpaceRuins/nova/des_two.dmm b/_maps/RandomRuins/SpaceRuins/nova/des_two.dmm index 546bceef8db01c..cb580078b5bac3 100644 --- a/_maps/RandomRuins/SpaceRuins/nova/des_two.dmm +++ b/_maps/RandomRuins/SpaceRuins/nova/des_two.dmm @@ -7438,15 +7438,9 @@ "Ht" = ( /obj/effect/turf_decal/trimline/dark_red/line, /obj/effect/turf_decal/trimline/dark_red/mid_joiner, -/obj/machinery/computer/shuttle{ - desc = "A shuttle terminal which allows a connection to the DS-2 forward base's supply shuttle."; - icon_keyboard = "syndie_key"; - icon_screen = "syndishuttle"; - light_color = "#FA8282"; +/obj/machinery/computer/shuttle/interdyne_cargo{ name = "syndicate cargo shuttle terminal"; - possible_destinations = "IP-DS-2"; - req_access = list("syndicate"); - shuttleId = "syndie_cargo" + desc = "A shuttle terminal which allows a connection to the DS-2 forward base's supply shuttle." }, /turf/open/floor/iron/dark/textured_large, /area/ruin/space/has_grav/nova/des_two/bridge)

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 V{7oHlo2r`lxY$SpNnIOazy=g-wUYn< literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index bed6ed1ed5019e..464851289e4787 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -8841,6 +8841,17 @@ #include "modular_ss220\modules\return_prs\gunsgalore\code\guns\ppsh.dm" #include "modular_ss220\modules\return_prs\gunsgalore\code\guns\scar.dm" #include "modular_ss220\modules\return_prs\gunsgalore\code\guns\stg.dm" +#include "modular_ss220\modules\return_prs\microfusion\code\_microfusion_defines.dm" +#include "modular_ss220\modules\return_prs\microfusion\code\cargo_stuff.dm" +#include "modular_ss220\modules\return_prs\microfusion\code\gun_types.dm" +#include "modular_ss220\modules\return_prs\microfusion\code\microfusion_cell.dm" +#include "modular_ss220\modules\return_prs\microfusion\code\microfusion_cell_attachments.dm" +#include "modular_ss220\modules\return_prs\microfusion\code\microfusion_designs.dm" +#include "modular_ss220\modules\return_prs\microfusion\code\microfusion_energy_master.dm" +#include "modular_ss220\modules\return_prs\microfusion\code\microfusion_gun_attachments.dm" +#include "modular_ss220\modules\return_prs\microfusion\code\microfusion_techweb.dm" +#include "modular_ss220\modules\return_prs\microfusion\code\phase_emitter.dm" +#include "modular_ss220\modules\return_prs\microfusion\code\projectiles.dm" #include "modular_ss220\modules\return_prs\novaya_ert\code\voskhod.dm" #include "modular_ss220\modules\return_prs\sec_haul\code\cmg.dm" #include "modular_ss220\modules\shutdown\shutdown_config.dm" diff --git a/tgui/packages/tgui/interfaces/MicrofusionGunControl.jsx b/tgui/packages/tgui/interfaces/MicrofusionGunControl.jsx new file mode 100644 index 00000000000000..f46a971c1fa1d6 --- /dev/null +++ b/tgui/packages/tgui/interfaces/MicrofusionGunControl.jsx @@ -0,0 +1,302 @@ +// THIS IS A SKYRAT UI FILE +import { toFixed } from 'common/math'; + +import { useBackend } from '../backend'; +import { + Button, + LabeledList, + NoticeBox, + ProgressBar, + Section, + Stack, +} from '../components'; +import { Window } from '../layouts'; + +export const MicrofusionGunControl = (props) => { + const { act, data } = useBackend(); + const { cell_data } = data; + const { phase_emitter_data } = data; + const { + gun_name, + gun_desc, + gun_heat_dissipation, + has_cell, + has_emitter, + has_attachments, + attachments = [], + } = data; + return ( + + + + +