From c5dffbe6357a1c3f5e42acbfec2aea79187b5e69 Mon Sep 17 00:00:00 2001 From: DamianX Date: Wed, 19 Jan 2022 15:46:18 +0100 Subject: [PATCH] Revert "Electric Boogaloo (#31728)" (#31868) This reverts commit 8bb40feca6639b0a2215ac8f0eb789a8d2eeedc0. --- __DEFINES/global.dm | 4 +- __DEFINES/planes+layers.dm | 53 +- __DEFINES/setup.dm | 8 +- .../components/binary_devices/MSGS.dm | 6 +- .../components/binary_devices/circulator.dm | 2 +- .../components/binary_devices/heat_pump.dm | 9 +- .../components/binary_devices/passive_gate.dm | 4 + .../components/binary_devices/pump.dm | 4 +- .../components/binary_devices/valve.dm | 4 + .../components/binary_devices/volume_pump.dm | 4 +- .../components/trinary_devices/filter.dm | 4 - .../components/trinary_devices/mixer.dm | 4 +- .../components/trinary_devices/t_valve.dm | 4 + .../components/unary/outlet_injector.dm | 4 +- .../components/unary/vent_pump.dm | 6 +- .../components/unary/vent_scrubber.dm | 6 +- code/ATMOSPHERICS/hvac/spaceheater.dm | 4 +- code/_onclick/ai.dm | 31 +- code/_onclick/click.dm | 20 +- code/_onclick/hud/fullscreen.dm | 5 - code/_onclick/hud/radial.dm | 36 +- code/_onclick/hud/screen_alarms.dm | 8 +- code/_onclick/hud/screen_objects.dm | 2 - code/_onclick/mindUI/_mindUI.dm | 33 +- code/_onclick/mindUI/malf.dm | 95 -- code/datums/ai_laws.dm | 6 - code/datums/gamemode/dynamic/dynamic_stats.dm | 10 + code/datums/gamemode/factions/blob.dm | 2 +- code/datums/gamemode/factions/malf.dm | 23 +- code/datums/gamemode/factions/xenomorph.dm | 2 +- code/datums/gamemode/misc_gamemode_procs.dm | 4 +- .../gamemode/role/malf/hackabilities.dm | 872 ------------------ code/datums/gamemode/role/malf/hacking.dm | 272 ------ code/datums/gamemode/role/malf/malf.dm | 173 ---- code/datums/gamemode/role/malf/malf_apcs.dm | 126 --- code/datums/gamemode/role/malf/shunt.dm | 244 ----- code/datums/gamemode/role/role.dm | 53 ++ code/datums/helper_datums/command_alerts.dm | 12 - code/datums/mind.dm | 2 +- code/datums/wires/airlock.dm | 20 +- code/datums/wires/alarm.dm | 17 +- code/datums/wires/apc.dm | 18 +- code/defines/obj/weapon.dm | 2 +- code/game/area/areas.dm | 6 +- code/game/atoms.dm | 32 +- code/game/dna/dna_modifier.dm | 4 +- code/game/gamemodes/endgame/xmas/lights.dm | 2 +- code/game/gamemodes/gameticker.dm | 2 - .../gamemodes/malfunction/Malf_Modules.dm | 629 +++++++++++++ code/game/gamemodes/nuclear/nuclearbomb.dm | 5 - code/game/machinery/ATM.dm | 4 +- code/game/machinery/Sleeper.dm | 18 +- code/game/machinery/adv_med.dm | 18 +- code/game/machinery/ai_slipper.dm | 8 +- code/game/machinery/alarm.dm | 39 +- .../atmoalter/area_atmos_computer.dm | 4 + code/game/machinery/atmoalter/canister.dm | 5 + code/game/machinery/atmoalter/gas_mine.dm | 9 +- code/game/machinery/atmoalter/meter.dm | 7 +- code/game/machinery/atmoalter/pump.dm | 6 +- code/game/machinery/atmoalter/scrubber.dm | 6 +- code/game/machinery/atmoalter/vaporizer.dm | 12 +- code/game/machinery/autoborger.dm | 9 +- code/game/machinery/bots/bots.dm | 10 +- code/game/machinery/bots/cleanbot.dm | 2 +- code/game/machinery/bots/draculabot.dm | 1 - code/game/machinery/bots/ed209bot.dm | 1 - code/game/machinery/bots/farmbot.dm | 1 - code/game/machinery/bots/mulebot.dm | 2 +- code/game/machinery/bots/secbot.dm | 5 - code/game/machinery/camera/camera.dm | 6 - code/game/machinery/candymachine.dm | 7 +- code/game/machinery/cell_charger.dm | 21 +- code/game/machinery/chemHandC.dm | 8 +- .../machinery/computer/HolodeckControl.dm | 5 +- code/game/machinery/computer/Operating.dm | 8 +- code/game/machinery/computer/ai_core.dm | 1 - code/game/machinery/computer/aifixer.dm | 8 +- code/game/machinery/computer/arcade/arcade.dm | 10 +- .../machinery/computer/arcade/arcade_game.dm | 2 +- code/game/machinery/computer/atmos_alert.dm | 2 +- code/game/machinery/computer/atmos_control.dm | 3 + code/game/machinery/computer/camera.dm | 6 - code/game/machinery/computer/card.dm | 5 +- code/game/machinery/computer/cargo.dm | 58 +- code/game/machinery/computer/climate.dm | 4 + .../game/machinery/computer/communications.dm | 31 +- code/game/machinery/computer/computer.dm | 4 +- code/game/machinery/computer/labor.dm | 6 +- code/game/machinery/computer/law.dm | 23 +- code/game/machinery/computer/medical.dm | 6 +- code/game/machinery/computer/message.dm | 32 +- code/game/machinery/computer/pda_terminal.dm | 3 + code/game/machinery/computer/pod.dm | 7 +- code/game/machinery/computer/prisoner.dm | 4 + code/game/machinery/computer/prisonshuttle.dm | 5 + code/game/machinery/computer/robot.dm | 14 +- code/game/machinery/computer/security.dm | 6 +- .../game/machinery/computer/security_alert.dm | 20 +- code/game/machinery/computer/shuttle.dm | 2 +- code/game/machinery/computer/slot_machine.dm | 2 +- .../machinery/computer/specops_shuttle.dm | 4 + code/game/machinery/computer/station_alert.dm | 13 +- code/game/machinery/computer/store.dm | 2 +- .../computer/syndicate_specops_shuttle.dm | 3 + code/game/machinery/cryo.dm | 4 +- code/game/machinery/defibcharger.dm | 4 +- code/game/machinery/deployable.dm | 7 +- code/game/machinery/disk_duplicator.dm | 6 - code/game/machinery/door_control.dm | 15 +- code/game/machinery/doors/airlock.dm | 58 +- code/game/machinery/doors/alarmlock.dm | 2 +- code/game/machinery/doors/brigdoors.dm | 13 +- code/game/machinery/doors/firedoor.dm | 17 +- code/game/machinery/doors/mineral.dm | 1 + code/game/machinery/doors/poddoor.dm | 2 +- code/game/machinery/doors/shutters.dm | 2 +- code/game/machinery/doors/windowdoor.dm | 9 +- code/game/machinery/doppler_array.dm | 8 +- code/game/machinery/emancipation.dm | 4 +- .../embedded_controller_base.dm | 6 + code/game/machinery/flasher.dm | 9 +- code/game/machinery/floodlight.dm | 4 + code/game/machinery/hologram.dm | 192 +--- code/game/machinery/holosign.dm | 12 +- code/game/machinery/igniter.dm | 18 +- code/game/machinery/iv_drip.dm | 3 + code/game/machinery/keyfab.dm | 8 +- .../machinery/kitchen/chickenprocessor.dm | 1 + code/game/machinery/kitchen/gibber.dm | 6 +- code/game/machinery/kitchen/microwave.dm | 19 +- code/game/machinery/kitchen/smartfridge.dm | 11 +- code/game/machinery/lightswitch.dm | 4 +- code/game/machinery/machinery.dm | 19 +- code/game/machinery/magnet.dm | 11 +- code/game/machinery/martian_printer.dm | 2 +- code/game/machinery/mass_driver.dm | 10 +- code/game/machinery/metaldetector.dm | 2 +- code/game/machinery/mind_machine.dm | 2 +- code/game/machinery/mommi_spawner.dm | 6 +- code/game/machinery/navbeacon.dm | 2 +- code/game/machinery/newscaster.dm | 6 +- code/game/machinery/portable_turret.dm | 13 +- code/game/machinery/recharger.dm | 11 +- code/game/machinery/rechargestation.dm | 162 +--- code/game/machinery/requests_console.dm | 6 +- code/game/machinery/scp_294.dm | 10 +- code/game/machinery/shieldgen.dm | 42 +- code/game/machinery/smartglass.dm | 2 +- code/game/machinery/station_map.dm | 10 +- code/game/machinery/status_display.dm | 15 +- code/game/machinery/suit_storage_unit.dm | 24 +- code/game/machinery/telecomms/broadcaster.dm | 6 - code/game/machinery/telecomms/logbrowser.dm | 2 +- .../telecomms/machine_interactions.dm | 2 +- code/game/machinery/telecomms/multicaster.dm | 4 +- .../machinery/telecomms/telecomunications.dm | 21 +- code/game/machinery/telecomms/telemonitor.dm | 2 +- .../machinery/telecomms/traffic_control.dm | 4 +- code/game/machinery/teleporter.dm | 20 +- code/game/machinery/turrets.dm | 90 +- code/game/machinery/vending.dm | 25 +- code/game/machinery/weathercontrol.dm | 4 +- code/game/mecha/mech_bay.dm | 4 +- code/game/mecha/mecha_control_console.dm | 4 + code/game/objects/items/devices/PDA/PDA.dm | 4 +- code/game/objects/items/devices/PDA/cart.dm | 4 +- .../objects/items/devices/ioncannon_remote.dm | 2 +- .../objects/items/devices/radio/intercom.dm | 8 +- .../objects/items/devices/reportintercom.dm | 2 +- code/game/objects/items/weapons/cards_ids.dm | 9 - .../items/weapons/implants/implantchair.dm | 2 +- code/game/objects/structures/barsign.dm | 9 +- code/game/objects/structures/grille.dm | 1 - code/game/objects/structures/window.dm | 3 +- code/game/say.dm | 3 +- code/modules/Economy/Accounts.dm | 4 +- code/modules/Economy/EFTPOS.dm | 2 +- code/modules/Economy/POS.dm | 2 +- code/modules/Economy/utils.dm | 10 +- code/modules/admin/verbs/randomverbs.dm | 2 +- code/modules/atmos_automation/console.dm | 2 +- code/modules/awaymissions/gateway.dm | 2 +- code/modules/client/client defines.dm | 11 +- code/modules/cmc/crew.dm | 9 +- code/modules/detectivework/detective_work.dm | 4 + code/modules/events/money_hacker.dm | 4 +- code/modules/food/cooking_machines.dm | 2 +- code/modules/food/icecreamvat.dm | 3 + code/modules/hydroponics/eggincubator.dm | 3 + code/modules/hydroponics/hydro_tray.dm | 7 +- code/modules/hydroponics/seed_machines.dm | 3 + code/modules/library/computers/base.dm | 2 +- code/modules/library/computers/checkout.dm | 6 - .../media/broadcast/receivers/radio.dm | 2 +- .../media/broadcast/transmitters/broadcast.dm | 12 +- code/modules/media/jukebox.dm | 25 +- code/modules/medical/cloning.dm | 6 +- code/modules/medical/computer/cloning.dm | 15 +- code/modules/mining/machine_processing.dm | 16 +- code/modules/mining/machine_stacking.dm | 12 +- code/modules/mining/mint.dm | 2 +- code/modules/mob/dead/observer/login.dm | 2 - code/modules/mob/living/say.dm | 4 +- code/modules/mob/living/silicon/ai/ai.dm | 69 +- code/modules/mob/living/silicon/ai/death.dm | 4 +- .../mob/living/silicon/ai/freelook/chunk.dm | 1 - .../mob/living/silicon/ai/freelook/eye.dm | 67 +- .../silicon/ai/freelook/update_triggers.dm | 1 - code/modules/mob/living/silicon/ai/life.dm | 22 +- code/modules/mob/living/silicon/ai/login.dm | 22 +- code/modules/mob/living/silicon/ai/logout.dm | 3 +- code/modules/mob/living/silicon/ai/say.dm | 8 +- .../modules/mob/living/silicon/robot/death.dm | 3 +- .../modules/mob/living/silicon/robot/robot.dm | 7 +- code/modules/mob/login.dm | 1 - code/modules/mob/logout.dm | 4 - code/modules/mob/transform_procs.dm | 2 - code/modules/optics/photocollector.dm | 2 +- code/modules/paperwork/fax.dm | 8 +- code/modules/paperwork/photocopier.dm | 4 + .../power/ShieldGen/shield_capacitor.dm | 2 +- code/modules/power/ShieldGen/shield_gen.dm | 2 +- code/modules/power/antimatter/control.dm | 8 +- code/modules/power/apc.dm | 114 ++- code/modules/power/battery.dm | 7 +- code/modules/power/cable.dm | 1 - code/modules/power/generator.dm | 4 +- code/modules/power/gravitygenerator.dm | 4 +- code/modules/power/meteor_battery.dm | 2 +- code/modules/power/monitor.dm | 2 +- code/modules/power/port_gen.dm | 4 + code/modules/power/power.dm | 2 - code/modules/power/rust/core_control.dm | 2 + code/modules/power/rust/core_monitor.dm | 2 + code/modules/power/rust/fuel_assembly_port.dm | 4 +- code/modules/power/rust/fuel_compressor.dm | 4 +- code/modules/power/rust/fuel_control.dm | 6 +- code/modules/power/rust/fuel_injector.dm | 8 +- code/modules/power/rust/gyrotron.dm | 6 +- .../modules/power/rust/gyrotron_controller.dm | 8 +- code/modules/power/singularity/collector.dm | 2 +- .../particle_accelerator/particle_control.dm | 6 +- code/modules/power/smes.dm | 5 - code/modules/power/solars/control.dm | 11 +- code/modules/power/treadmill.dm | 5 - code/modules/power/turbine.dm | 4 +- .../reagents/machinery/chem_dispenser.dm | 15 +- .../modules/reagents/machinery/chem_master.dm | 8 +- .../reagents/machinery/reagentgrinder.dm | 8 +- code/modules/recycling/compactor.dm | 17 +- code/modules/recycling/conveyor2.dm | 6 +- code/modules/recycling/disposal.dm | 9 +- code/modules/recycling/sortingmachinery.dm | 9 +- code/modules/research/fabricators.dm | 6 +- .../research/mechanic/mechanic_fabs.dm | 2 +- .../research/mechanic/reverse_engine.dm | 4 +- code/modules/research/message_server.dm | 4 +- code/modules/research/protolathe.dm | 2 +- code/modules/research/rdconsole.dm | 4 +- code/modules/research/rdmachines.dm | 6 - code/modules/research/server.dm | 4 +- .../machinery/analysis_base.dm | 10 +- .../machinery/analysis_hyperspectral.dm | 2 +- .../machinery/artifact_analyser.dm | 2 +- .../machinery/artifact_harvester.dm | 6 +- .../machinery/artifact_scanner.dm | 2 +- .../security levels/keycard authentication.dm | 14 +- code/modules/store/store.dm | 2 +- code/modules/telesci/gps.dm | 4 +- code/modules/telesci/telesci_computer.dm | 9 +- code/modules/tooltip/tooltip.dm | 2 +- code/modules/tooltip/tooltip.html | 2 - code/modules/virus2/analyser.dm | 16 +- code/modules/virus2/centrifuge.dm | 16 +- code/modules/virus2/curer.dm | 5 +- code/modules/virus2/diseasesplicer.dm | 6 +- code/modules/virus2/dishincubator.dm | 12 +- icons/480x480.dmi | Bin 297527 -> 297747 bytes icons/effects/malf.dmi | Bin 7829 -> 0 bytes icons/obj/atmospherics/filter.dmi | Bin 62763 -> 46366 bytes icons/obj/atmospherics/pump.dmi | Bin 1387 -> 1153 bytes icons/obj/atmospherics/volume_pump.dmi | Bin 3782 -> 3378 bytes icons/obj/device.dmi | Bin 47117 -> 47120 bytes icons/obj/malf_radial.dmi | Bin 11429 -> 0 bytes icons/obj/objects.dmi | Bin 112936 -> 110041 bytes icons/obj/power.dmi | Bin 43435 -> 41487 bytes icons/ui/malf/18x200.dmi | Bin 222 -> 0 bytes icons/ui/malf/21x246.dmi | Bin 1564 -> 0 bytes icons/ui/malf/32x32.dmi | Bin 6267 -> 0 bytes maps/RandomZLevels/hive.dm | 2 +- maps/randomvaults/objects.dm | 2 +- nano/templates/apc.tmpl | 15 +- tgui/public/tgui.bundle.js | 2 +- vgstation13.dme | 8 +- 295 files changed, 1850 insertions(+), 3461 deletions(-) delete mode 100644 code/_onclick/mindUI/malf.dm delete mode 100644 code/datums/gamemode/role/malf/hackabilities.dm delete mode 100644 code/datums/gamemode/role/malf/hacking.dm delete mode 100644 code/datums/gamemode/role/malf/malf.dm delete mode 100644 code/datums/gamemode/role/malf/malf_apcs.dm delete mode 100644 code/datums/gamemode/role/malf/shunt.dm create mode 100644 code/game/gamemodes/malfunction/Malf_Modules.dm create mode 100644 code/game/machinery/kitchen/chickenprocessor.dm delete mode 100644 icons/effects/malf.dmi delete mode 100644 icons/obj/malf_radial.dmi delete mode 100644 icons/ui/malf/18x200.dmi delete mode 100644 icons/ui/malf/21x246.dmi delete mode 100644 icons/ui/malf/32x32.dmi diff --git a/__DEFINES/global.dm b/__DEFINES/global.dm index 7a89272680c..80cabb6cb2d 100644 --- a/__DEFINES/global.dm +++ b/__DEFINES/global.dm @@ -415,7 +415,7 @@ var/list/boss_mobs = list( // Set by traitor item, affects cargo supplies var/station_does_not_tip = FALSE -//Malf AI global variables +//Set by Malf AI Blackout var/malf_radio_blackout = FALSE var/malf_rcd_disable = FALSE @@ -424,7 +424,7 @@ var/cyborg_detonation_time = 0 //Radial menus currently existing in the world. -var/global/list/radial_menu_anchors = list() +var/global/list/radial_menus = list() // Copying atoms is stupid and this is a stupid solution var/list/variables_not_to_be_copied = list( diff --git a/__DEFINES/planes+layers.dm b/__DEFINES/planes+layers.dm index 609f53e9ec8..8115d933260 100644 --- a/__DEFINES/planes+layers.dm +++ b/__DEFINES/planes+layers.dm @@ -204,35 +204,33 @@ Why is FLOAT_PLANE added to a bunch of these? #define GHOST_LAYER 1 -#define FAKE_CAMERA_PLANE (13) - -#define LIGHTING_PLANE (14) // Don't put anything other than lighting_overlays in there please +#define LIGHTING_PLANE (13) // Don't put anything other than lighting_overlays in there please #define LIGHTING_LAYER 0 -#define ABOVE_LIGHTING_PLANE (15) +#define ABOVE_LIGHTING_PLANE (14) #define ABOVE_LIGHTING_LAYER 0 #define SUPERMATTER_WALL_LAYER 1 #define SUPER_PORTAL_LAYER 2 #define NARSIE_GLOW 3 + #define MAPPING_AREA_LAYER 999 // Why isn't this a plane exactly? -#define OPEN_OVERLAY_PLANE (16 + FLOAT_PLANE) // This one won't behave either +#define OPEN_OVERLAY_PLANE (14 + FLOAT_PLANE) // This one won't behave either -#define BASE_PLANE (17 + FLOAT_PLANE) // this is where darkness is! see "how planes work" - needs SEE_BLACKNESS or SEE_PIXEL (see blackness is better for ss13) +#define BASE_PLANE (15 + FLOAT_PLANE) // this is where darkness is! see "how planes work" - needs SEE_BLACKNESS or SEE_PIXEL (see blackness is better for ss13) -#define MISC_HUD_MARKERS_PLANE 18 +#define MISC_HUD_MARKERS_PLANE 16 -#define ANTAG_HUD_PLANE 19 +#define ANTAG_HUD_PLANE 17 -#define STATIC_PLANE 20 // For AI's static. +#define STATIC_PLANE 18 // For AI's static. - #define HACK_LAYER 1 - #define STATIC_LAYER 2 - #define REACTIVATE_CAMERA_LAYER 3 + #define STATIC_LAYER 1 + #define REACTIVATE_CAMERA_LAYER 2 -#define FULLSCREEN_PLANE 21 // for fullscreen overlays that do not cover the hud. +#define FULLSCREEN_PLANE 19 // for fullscreen overlays that do not cover the hud. #define FULLSCREEN_LAYER 0 #define DAMAGE_HUD_LAYER 1 @@ -241,7 +239,7 @@ Why is FLOAT_PLANE added to a bunch of these? #define CRIT_LAYER 4 #define HALLUCINATION_LAYER 5 -#define HUD_PLANE 21 // For the Head-Up Display +#define HUD_PLANE 20 // For the Head-Up Display #define UNDER_HUD_LAYER 0 #define HUD_BASE_LAYER 1 @@ -253,7 +251,7 @@ Why is FLOAT_PLANE added to a bunch of these? #define MIND_UI_BUTTON 11 #define MIND_UI_FRONT 12 -#define ABOVE_HUD_PLANE 22 // For being above the Head-Up Display +#define ABOVE_HUD_PLANE 21 // For being above the Head-Up Display /atom/proc/hud_layerise() @@ -337,7 +335,8 @@ var/noir_master = list(new /obj/abstract/screen/plane_master/noir_master(),new / // One planemaster for each client, which they gain during mob/login() /obj/abstract/screen/plane_master/darkness_planemaster plane = LIGHTING_PLANE - blend_mode = BLEND_MULTIPLY + + blend_mode = BLEND_MULTIPLY /obj/abstract/screen/plane_master/darkness_planemaster_dummy alpha = 0 @@ -355,25 +354,3 @@ var/noir_master = list(new /obj/abstract/screen/plane_master/noir_master(),new / screen |= darkness_planemaster darkness_planemaster_dummy = new /obj/abstract/screen/plane_master/darkness_planemaster_dummy screen |= darkness_planemaster_dummy - - -/obj/abstract/screen/plane_master/fakecamera_planemaster - plane = FAKE_CAMERA_PLANE - alpha = 0 - -/obj/abstract/screen/plane_master/fakecamera_planemaster_dummy - alpha = 0 - appearance_flags = 0 - plane = FAKE_CAMERA_PLANE - -/client/proc/initialize_fakecamera_planemaster() - if(fakecamera_planemaster) - screen -= fakecamera_planemaster - qdel(fakecamera_planemaster) - if(fakecamera_planemaster_dummy) - screen -= fakecamera_planemaster_dummy - qdel(fakecamera_planemaster_dummy) - fakecamera_planemaster = new /obj/abstract/screen/plane_master/fakecamera_planemaster - screen |= fakecamera_planemaster - fakecamera_planemaster_dummy = new /obj/abstract/screen/plane_master/fakecamera_planemaster_dummy - screen |= fakecamera_planemaster_dummy diff --git a/__DEFINES/setup.dm b/__DEFINES/setup.dm index 462d822dcf6..cdcec955547 100644 --- a/__DEFINES/setup.dm +++ b/__DEFINES/setup.dm @@ -533,12 +533,10 @@ var/global/list/NOIRMATRIX = list(0.33,0.33,0.33,0,\ // bitflags for machine stat variable #define BROKEN 1 #define NOPOWER 2 -#define POWEROFF 4 // unused -#define MAINT 8 // under maintaince +#define POWEROFF 4 // tbd +#define MAINT 8 // under maintaince #define EMPED 16 // temporary broken by EMP pulse -#define FORCEDISABLE 32 //disabled either via wire pulse, grid check, or malf ai -#define NOAICONTROL 64 //ai control disable - +#define FORCEDISABLE 32 //forced to be off, such as by a random event //bitflags for door switches. #define OPEN 1 diff --git a/code/ATMOSPHERICS/components/binary_devices/MSGS.dm b/code/ATMOSPHERICS/components/binary_devices/MSGS.dm index f751df50529..2d5ed5166d6 100644 --- a/code/ATMOSPHERICS/components/binary_devices/MSGS.dm +++ b/code/ATMOSPHERICS/components/binary_devices/MSGS.dm @@ -37,7 +37,7 @@ /obj/machinery/atmospherics/binary/msgs/process() . = ..() - if(stat & (NOPOWER | BROKEN | FORCEDISABLE)) + if(stat & (NOPOWER | BROKEN)) return //Output handling, stolen from pump code. @@ -152,7 +152,7 @@ if((update_flags & MSGS_INPUT) != on) update = 1 - if((update_flags & MSGS_ON) != !(stat & (NOPOWER | BROKEN | FORCEDISABLE))) + if((update_flags & MSGS_ON) != !(stat & (NOPOWER | BROKEN))) update = 1 var/pressure = air.return_pressure() // null ref error here. @@ -170,7 +170,7 @@ if(node2) overlays += image(icon = icon, icon_state = "node-2") - if(!(stat & (NOPOWER | BROKEN | FORCEDISABLE))) + if(!(stat & (NOPOWER | BROKEN))) overlays += image(icon = icon, icon_state = "o-[i]") diff --git a/code/ATMOSPHERICS/components/binary_devices/circulator.dm b/code/ATMOSPHERICS/components/binary_devices/circulator.dm index 544b25406e1..830f47df181 100644 --- a/code/ATMOSPHERICS/components/binary_devices/circulator.dm +++ b/code/ATMOSPHERICS/components/binary_devices/circulator.dm @@ -97,7 +97,7 @@ update_icon() /obj/machinery/atmospherics/binary/circulator/update_icon() - if(!linked_generator || linked_generator.stat & (NOPOWER | BROKEN | FORCEDISABLE)) //These get power from the TeG itself. + if(!linked_generator || linked_generator.stat & (NOPOWER | BROKEN)) //These get power from the TeG itself. icon_state = "circ-p" else if(last_pressure_delta > 0 && recent_moles_transferred > 0) diff --git a/code/ATMOSPHERICS/components/binary_devices/heat_pump.dm b/code/ATMOSPHERICS/components/binary_devices/heat_pump.dm index 4d3d5ffa5b5..0992c049984 100644 --- a/code/ATMOSPHERICS/components/binary_devices/heat_pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/heat_pump.dm @@ -43,7 +43,7 @@ It also must be positive. Technically it can be 0 without breaking physics, but /obj/machinery/atmospherics/binary/heat_pump/process() . = ..() - if(!on || stat & (NOPOWER | BROKEN | FORCEDISABLE)) + if(!on || stat & (NOPOWER | BROKEN)) return if(!air1.total_moles || !air2.total_moles) @@ -79,6 +79,11 @@ It also must be positive. Technically it can be 0 without breaking physics, but /obj/machinery/atmospherics/binary/heat_pump/attack_hand(mob/user) toggle_status(user) + +/obj/machinery/atmospherics/binary/heat_pump/attack_ai(mob/user) + toggle_status(user) + + /obj/machinery/atmospherics/binary/heat_pump/toggle_status(mob/user) if(issilicon(user)) add_hiddenprint(user) @@ -93,7 +98,7 @@ It also must be positive. Technically it can be 0 without breaking physics, but /obj/machinery/atmospherics/binary/heat_pump/update_icon() - if(!on || stat & (NOPOWER | BROKEN | FORCEDISABLE)) + if(!on || stat & (NOPOWER | BROKEN)) icon_state = "intact_off" else icon_state = "intact_on" diff --git a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm index 7844f774a68..6542ac2837c 100644 --- a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm +++ b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm @@ -136,6 +136,10 @@ if(state_changed) investigation_log(I_ATMOS,"was [open ? "opened" : "closed"] by a signal") +/obj/machinery/atmospherics/binary/passive_gate/attack_ai(mob/user as mob) + src.add_hiddenprint(user) + return src.attack_hand(user) + /obj/machinery/atmospherics/binary/passive_gate/attack_hand(mob/user as mob) toggle_status(user) diff --git a/code/ATMOSPHERICS/components/binary_devices/pump.dm b/code/ATMOSPHERICS/components/binary_devices/pump.dm index 56383390370..461bfdf627b 100644 --- a/code/ATMOSPHERICS/components/binary_devices/pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/pump.dm @@ -42,15 +42,13 @@ air2.volume /obj/machinery/atmospherics/binary/pump/update_icon() if(stat & NOPOWER) icon_state = "intact_off" - else if(stat & FORCEDISABLE) - icon_state = "intact_FORCEDISABLE" else if(node1 && node2) icon_state = "intact_[on?("on"):("off")]" ..() /obj/machinery/atmospherics/binary/pump/process() . = ..() - if((stat & (NOPOWER|BROKEN|FORCEDISABLE)) || !on) + if((stat & (NOPOWER|BROKEN)) || !on) return var/output_starting_pressure = air2.return_pressure() diff --git a/code/ATMOSPHERICS/components/binary_devices/valve.dm b/code/ATMOSPHERICS/components/binary_devices/valve.dm index a8ea94d9834..310d3177279 100644 --- a/code/ATMOSPHERICS/components/binary_devices/valve.dm +++ b/code/ATMOSPHERICS/components/binary_devices/valve.dm @@ -117,6 +117,10 @@ machine_flags = MULTITOOL_MENU +/obj/machinery/atmospherics/binary/valve/digital/attack_ai(mob/user as mob) + src.add_hiddenprint(user) + return src.attack_hand(user) + //Radio remote control /obj/machinery/atmospherics/binary/valve/digital/proc/set_frequency(new_frequency) diff --git a/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm b/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm index 39831178098..4f21ecdde88 100644 --- a/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm @@ -37,8 +37,6 @@ Thus, the two variables affect pump operation are set in New(): /obj/machinery/atmospherics/binary/volume_pump/update_icon(var/adjacent_procd) if(stat & NOPOWER) icon_state = "intact_off" - else if(stat & FORCEDISABLE) - icon_state = "intact_malflocked" else if (pump_stalled) icon_state="intact_stalled" else if(node1 && node2) @@ -47,7 +45,7 @@ Thus, the two variables affect pump operation are set in New(): /obj/machinery/atmospherics/binary/volume_pump/process() . = ..() - if((stat & (NOPOWER|BROKEN|FORCEDISABLE)) || !on || transfer_rate < 1) + if((stat & (NOPOWER|BROKEN)) || !on || transfer_rate < 1) return // Pump mechanism just won't do anything if the pressure is too high/too low diff --git a/code/ATMOSPHERICS/components/trinary_devices/filter.dm b/code/ATMOSPHERICS/components/trinary_devices/filter.dm index 6a17b60bf02..a6f3c502f12 100755 --- a/code/ATMOSPHERICS/components/trinary_devices/filter.dm +++ b/code/ATMOSPHERICS/components/trinary_devices/filter.dm @@ -40,8 +40,6 @@ Filter types: /obj/machinery/atmospherics/trinary/filter/update_icon() if(stat & NOPOWER) icon_state = "hintact_off" - else if(stat & FORCEDISABLE) - icon_state = "hintact_malflocked" else if(node2 && node3 && node1) icon_state = "hintact_[on?("on"):("off")]" else @@ -203,8 +201,6 @@ Filter types: ..(adjacent_procd) if(stat & NOPOWER) icon_state = "hintactm_off" - else if(stat & FORCEDISABLE) - icon_state = "hintactm_malflocked" else if(!(node2 && node3 && node1)) on = 0 icon_state = "hintactm_[on?("on"):("off")]" diff --git a/code/ATMOSPHERICS/components/trinary_devices/mixer.dm b/code/ATMOSPHERICS/components/trinary_devices/mixer.dm index b8946072fb3..a9bf2362674 100644 --- a/code/ATMOSPHERICS/components/trinary_devices/mixer.dm +++ b/code/ATMOSPHERICS/components/trinary_devices/mixer.dm @@ -17,7 +17,7 @@ ex_node_offset = 5 /obj/machinery/atmospherics/trinary/mixer/update_icon() - if(stat & (FORCEDISABLE|NOPOWER)) + if(stat & NOPOWER) icon_state = "intact_off" else if(node2 && node3 && node1) icon_state = "intact_[on?("on"):("off")]" @@ -137,7 +137,7 @@ /obj/machinery/atmospherics/trinary/mixer/mirrored/update_icon() ..() - if(stat & (FORCEDISABLE|NOPOWER)) + if(stat & NOPOWER) icon_state = "intactm_off" else if(node2 && node3 && node1) icon_state = "intactm_[on?("on"):("off")]" diff --git a/code/ATMOSPHERICS/components/trinary_devices/t_valve.dm b/code/ATMOSPHERICS/components/trinary_devices/t_valve.dm index a45bcf31076..59ccd6514db 100644 --- a/code/ATMOSPHERICS/components/trinary_devices/t_valve.dm +++ b/code/ATMOSPHERICS/components/trinary_devices/t_valve.dm @@ -219,6 +219,10 @@ return ..() +/obj/machinery/atmospherics/trinary/tvalve/digital/attack_ai(mob/user as mob) + src.add_hiddenprint(user) + return src.attack_hand(user) + /obj/machinery/atmospherics/trinary/tvalve/digital/attack_hand(mob/user as mob) if(!src.allowed(user)) to_chat(user, "Access denied.") diff --git a/code/ATMOSPHERICS/components/unary/outlet_injector.dm b/code/ATMOSPHERICS/components/unary/outlet_injector.dm index 01c67aec48a..9563068d381 100644 --- a/code/ATMOSPHERICS/components/unary/outlet_injector.dm +++ b/code/ATMOSPHERICS/components/unary/outlet_injector.dm @@ -28,7 +28,7 @@ /obj/machinery/atmospherics/unary/outlet_injector/update_icon() if(node1) - if(on && !(stat & (NOPOWER|FORCEDISABLE))) + if(on && !(stat & NOPOWER)) icon_state = "hon" else icon_state = "hoff" @@ -49,7 +49,7 @@ . = ..() injecting = 0 - if(!on || stat & (FORCEDISABLE|NOPOWER)) + if(!on || stat & NOPOWER) return if(air_contents.temperature > 0) diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm index 2b14200ec1c..dc99946092f 100644 --- a/code/ATMOSPHERICS/components/unary/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm @@ -70,7 +70,7 @@ overlays = null icon_state = welded ? "weld" : "base" - if (on && ~stat & (FORCEDISABLE|NOPOWER|BROKEN)) + if (on && ~stat & (NOPOWER|BROKEN)) overlays += pump_direction ? "out" : "in" ..() @@ -94,7 +94,7 @@ CHECK_DISABLED(vents) if (!node1) return // Turning off the vent is a PITA. - N3X - if(stat & (FORCEDISABLE|NOPOWER|BROKEN)) + if(stat & (NOPOWER|BROKEN)) return //on = 0 @@ -222,7 +222,7 @@ set_frequency(frequency) /obj/machinery/atmospherics/unary/vent_pump/receive_signal(datum/signal/signal) - if(stat & (FORCEDISABLE|NOPOWER|BROKEN)) + if(stat & (NOPOWER|BROKEN)) return //log_admin("DEBUG \[[world.timeofday]\]: /obj/machinery/atmospherics/unary/vent_pump/receive_signal([signal.debug_print()])") if(!signal.data["tag"] || (signal.data["tag"] != id_tag) || (signal.data["sigtype"]!="command") || (signal.data["type"] && signal.data["type"] != "vent")) diff --git a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm index 5e2e281ef93..d066c21192c 100644 --- a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm +++ b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm @@ -77,7 +77,7 @@ icon_state = prefix + "off" - if (node1 && on && !(stat & (FORCEDISABLE|NOPOWER|BROKEN))) + if (node1 && on && !(stat & (NOPOWER|BROKEN))) var/state = "" if (scrubbing) state = "on" @@ -157,7 +157,7 @@ /obj/machinery/atmospherics/unary/vent_scrubber/process() . = ..() CHECK_DISABLED(scrubbers) - if(stat & (FORCEDISABLE|NOPOWER|BROKEN)) + if(stat & (NOPOWER|BROKEN)) return if (!node1) return // Let's not shut it off, for now. @@ -280,7 +280,7 @@ /obj/machinery/atmospherics/unary/vent_scrubber/receive_signal(datum/signal/signal) - if(stat & (FORCEDISABLE|NOPOWER|BROKEN)) + if(stat & (NOPOWER|BROKEN)) return if(!signal.data["tag"] || (signal.data["tag"] != id_tag) || (signal.data["sigtype"]!="command") || (signal.data["type"] && signal.data["type"] != "scrubber")) return 0 diff --git a/code/ATMOSPHERICS/hvac/spaceheater.dm b/code/ATMOSPHERICS/hvac/spaceheater.dm index 496726b1306..054376a4328 100644 --- a/code/ATMOSPHERICS/hvac/spaceheater.dm +++ b/code/ATMOSPHERICS/hvac/spaceheater.dm @@ -125,7 +125,7 @@ to_chat(user, "The charge meter reads [cell ? round(cell.percent(),1) : 0]%") /obj/machinery/space_heater/emp_act(severity) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) ..(severity) return if((cell) && (!nocell)) @@ -321,7 +321,7 @@ /obj/machinery/space_heater/process() if(on) - if(ispowered() && !(stat & FORCEDISABLE)) + if(ispowered()) var/turf/simulated/L = loc if(istype(L)) var/datum/gas_mixture/env = L.return_air() diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index a590c04f04b..6d9e9107114 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -13,13 +13,12 @@ if(client.buildmode) // comes after object.Click to allow buildmode gui objects to be clicked build_click(src, client.buildmode, params, A) return + if(control_disabled || stat) return var/list/modifiers = params2list(params) if(modifiers["shift"] || modifiers["alt"] || modifiers["ctrl"]) return - if(istype(current, /obj/machinery/turret)) - return if(ismob(A) || ismecha(A)) ai_actual_track(A) else @@ -46,9 +45,6 @@ else MiddleClickOn(A) return - if(modifiers["right"]) - RightClickOn(A) - return if(modifiers["shift"]) ShiftClickOn(A) return @@ -75,14 +71,8 @@ */ if(INVOKE_EVENT(src, /event/uattack, "atom" = A)) //This returns 1 when doing an action intercept return - - if(istype(current, /obj/machinery/turret)) - var/obj/machinery/turret/T = current - if(T.enabled && T.raised) - T.shootAt(A) - else - A.add_hiddenprint(src) - A.attack_ai(src) + A.add_hiddenprint(src) + A.attack_ai(src) /* AI has no need for the UnarmedAttack() and RangedAttack() procs, @@ -111,9 +101,6 @@ A.AIAltClick(src) /mob/living/silicon/ai/MiddleShiftClickOn(var/atom/A) A.AIMiddleShiftClick(src) -/mob/living/silicon/ai/RightClickOn(var/atom/A) - A.AIRightClick(src) - /* The following criminally helpful code is just the previous code cleaned up; @@ -129,16 +116,14 @@ /atom/proc/AICtrlClick() return -/atom/proc/AIRightClick() - return - -/atom/proc/AIAltClick(var/mob/living/silicon/ai/user) - AltClick(user) - return - /obj/machinery/power/apc/AICtrlClick() // turns off APCs. if(allowed(usr)) Topic("breaker=1", list("breaker"="1"), 0) // 0 meaning no window (consistency! wait...) + +/atom/proc/AIAltClick(var/mob/living/silicon/ai/user) + AltClick(user) + return + /obj/machinery/door/firedoor/AIShiftClick(var/mob/living/silicon/ai/user) // Allows examining firelocks examine(user) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 3e04e3ad35b..e69cc03e3ca 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -22,6 +22,13 @@ /atom/Click(location,control,params) usr.ClickOn(src, params) +/mob/living/Click() + if(isAI(usr)) + var/mob/living/silicon/ai/A = usr + if(!A.aicamera.in_camera_mode) //Fix for taking photos of mobs + return + ..() + /atom/DblClick(location,control,params) usr.DblClickOn(src,params) @@ -84,9 +91,6 @@ if(modifiers["ctrl"]) CtrlClickOn(A) return - if(modifiers["right"]) - RightClickOn(A) - return if(attempt_crawling(A)) return @@ -292,16 +296,6 @@ if(Adjacent(user)) user.start_pulling(src) -/* - Right Click -*/ - -/mob/proc/RightClickOn(var/atom/A) - A.RightClick() - -/atom/proc/RightClick(var/mob/user) - return - /* Alt click diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm index c0a93cd4958..72ef49013f4 100644 --- a/code/_onclick/hud/fullscreen.dm +++ b/code/_onclick/hud/fullscreen.dm @@ -145,11 +145,6 @@ alpha = 150 blend_mode = 4 -/obj/abstract/screen/fullscreen/hackview_border - icon_state = "malfview" - layer = HALLUCINATION_LAYER - alpha = 255 - /obj/abstract/screen/fullscreen/conversion_border icon_state = "conversionoverlay" layer = HALLUCINATION_LAYER diff --git a/code/_onclick/hud/radial.dm b/code/_onclick/hud/radial.dm index b44d7a49cfb..441e917d851 100644 --- a/code/_onclick/hud/radial.dm +++ b/code/_onclick/hud/radial.dm @@ -16,12 +16,10 @@ var/choice var/next_page = FALSE var/tooltip_desc - var/locked = FALSE /obj/abstract/screen/radial/slice/MouseEntered(location, control, params) . = ..() - if(!locked) - icon_state = "radial_slice_focus" + icon_state = "radial_slice_focus" if(tooltip_desc) openToolTip(usr,src,params,title = src.name,content = tooltip_desc,theme = parent.tooltip_theme) @@ -31,7 +29,7 @@ closeToolTip(usr) /obj/abstract/screen/radial/slice/Click(location, control, params) - if (!parent || locked) + if (!parent)//we're not ready yet return if(usr.client == parent.current_user) if(next_page) @@ -42,14 +40,6 @@ else parent.element_chosen(choice,usr) -/obj/abstract/screen/radial/slice/proc/Unlock() - locked = FALSE - color = null - -/obj/abstract/screen/radial/slice/proc/Lock() - locked = TRUE - color = grayscale - /obj/abstract/screen/radial/center name = "Close Menu" icon_state = "radial_center" @@ -69,7 +59,6 @@ var/list/choices = list() //List of choice id's var/list/choices_icons = list() //choice_id -> icon var/list/choices_values = list() //choice_id -> choice - var/list/choices_locked = list() //choice_id -> choice locked var/list/choices_tooltips = list() //choice_id -> tooltip var/list/page_data = list() //list of choices per page @@ -121,8 +110,7 @@ if(ending_angle) src.ending_angle = ending_angle - current_user.radial_menu_anchors += anchor - current_user.radial_menus += src + current_user.radial_menus += anchor close_button = new close_button.parent = src @@ -131,7 +119,6 @@ /datum/radial_menu/Destroy() Reset() hide() - current_user.radial_menus -= src if(custom_check) qdel(custom_check) custom_check = null @@ -263,8 +250,6 @@ E.overlays += choices_icons[choice_id] if(choices_tooltips[choice_id]) E.tooltip_desc = choices_tooltips[choice_id] - if(choices_locked[choice_id] == TRUE) - E.Lock() /datum/radial_menu/proc/Reset() choices.Cut() @@ -311,10 +296,6 @@ choice_name = E[4] choices_values[id] = choice_name - if(E.len > 4) // is the choice locked or not - var/choice_locked = E[5] - choices_locked[id] = choice_locked - setup_menu() @@ -377,7 +358,7 @@ /datum/radial_menu/proc/finish() finished = TRUE - current_user.radial_menu_anchors -= anchor + current_user.radial_menus -= anchor qdel(src) ////////////////// @@ -420,19 +401,14 @@ Choices should be a list where list keys are movables or text used for element names and return value and list values are movables/icons/images used for element icons */ -/proc/show_radial_menu(mob/user,atom/anchor,list/choices,var/icon_file,var/tooltip_theme,var/callback/custom_check,var/uniqueid,var/radius,var/min_angle,var/starting_angle,var/ending_angle,var/recursive = FALSE, var/close_other_menus) +/proc/show_radial_menu(mob/user,atom/anchor,list/choices,var/icon_file,var/tooltip_theme,var/callback/custom_check,var/uniqueid,var/radius,var/min_angle,var/starting_angle,var/ending_angle,var/recursive = FALSE) if(!user || !anchor || !length(choices)) return var/client/current_user = user.client - - if(anchor in current_user.radial_menu_anchors) + if(anchor in current_user.radial_menus) return - if(close_other_menus) - for(var/datum/radial_menu/R in current_user.radial_menus) - R.finish() - var/menu_type = choose_radial_menu_type_for_anchor(anchor) var/datum/radial_menu/menu = new menu_type(user, anchor, icon_file, tooltip_theme, radius, min_angle, starting_angle, ending_angle) diff --git a/code/_onclick/hud/screen_alarms.dm b/code/_onclick/hud/screen_alarms.dm index 7d433b59772..7473a17d353 100644 --- a/code/_onclick/hud/screen_alarms.dm +++ b/code/_onclick/hud/screen_alarms.dm @@ -359,16 +359,16 @@ var/global/list/screen_alarms_locs = list( /obj/abstract/screen/alert/robot/apc_hacking icon_state = "hacking" name = "Overriding APC" - desc = "You are currently an APC. Click this alert to jump to the APC." - var/obj/machinery/power/apc/apc = null + desc = "You are currently overriding an APC's programming. Click this alert to jump to the APC." /obj/abstract/screen/alert/robot/apc_hacking/Click() ..() if(!isAI(usr)) return var/mob/living/silicon/ai/A = usr - if(A.eyeobj) - A.eyeobj.forceMove(apc.loc) + if(A.alerts[SCREEN_ALARM_APC_HACKING] == src) + if(A.eyeobj && A.malfhacking && A.malfhack) + A.eyeobj.forceMove(A.malfhack.loc) /obj/abstract/screen/alert/robot/hacked name = "Hacked" diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 27ceaeffe8e..1e21a8a4654 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -174,8 +174,6 @@ usr?.client?.show_popup_menus = FALSE /obj/abstract/screen/nocontext/MouseExited(location, control, params) - if(ismalf(usr)) - return usr?.client?.show_popup_menus = TRUE /obj/abstract/screen/gun diff --git a/code/_onclick/mindUI/_mindUI.dm b/code/_onclick/mindUI/_mindUI.dm index 60561041886..dc40884bd96 100644 --- a/code/_onclick/mindUI/_mindUI.dm +++ b/code/_onclick/mindUI/_mindUI.dm @@ -34,7 +34,6 @@ var/list/mind_ui_ID2type = list() var/datum/mind_ui/ui = activeUIs[mind_ui] ui.RemoveFromClient() - /datum/mind/proc/DisplayUI(var/ui_ID) var/datum/mind_ui/ui if (ui_ID in activeUIs) @@ -44,10 +43,7 @@ var/list/mind_ui_ID2type = list() return var/ui_type = mind_ui_ID2type[ui_ID] ui = new ui_type(src) - if(!ui.Valid()) - ui.Hide() - else - ui.Display() + ui.Display() /datum/mind/proc/HideUI(var/ui_ID) if (ui_ID in activeUIs) @@ -87,11 +83,6 @@ var/list/mind_ui_ID2type = list() if (element) element.UpdateIcon() -/mob/proc/UpdateAllElementIcons() - if (client) - for (var/obj/abstract/mind_ui_element/element in client.screen) - element.UpdateIcon() - //////////////////////////////////////////////////////////////////// // // @@ -160,7 +151,7 @@ var/list/mind_ui_ID2type = list() var/mob/M = mind.current if (!M.client) return - + mind.current.client.screen -= elements // Makes every element visible @@ -178,10 +169,7 @@ var/list/mind_ui_ID2type = list() element.Appear() for (var/datum/mind_ui/child in subUIs) if (child.display_with_parent) - if(child.Valid()) - child.Display() - else - child.Hide() + child.Display() /datum/mind_ui/proc/Hide(var/override = FALSE) active = FALSE @@ -294,21 +282,6 @@ var/list/mind_ui_ID2type = list() result.overlays += I return result -/obj/abstract/mind_ui_element/proc/SlideUIElement(var/new_x = 0, var/new_y = 0, var/duration, var/layer = MIND_UI_BACK, var/hide_after = FALSE) - invisibility = 101 - var/image/ui_image = image(icon, src, icon_state, layer) - ui_image.overlays = overlays - var/mob/U = GetUser() - U.client.images |= ui_image - animate(ui_image, pixel_x = new_x - offset_x, pixel_y = new_y - offset_y, time = duration) - spawn(duration) - offset_x = new_x - offset_y = new_y - UpdateUIScreenLoc() - U.client.images -= ui_image - if(!hide_after) - invisibility = 0 - /obj/abstract/mind_ui_element/failsafe icon_state = "blank" mouse_opacity = 0 diff --git a/code/_onclick/mindUI/malf.dm b/code/_onclick/mindUI/malf.dm deleted file mode 100644 index ff8cc96db69..00000000000 --- a/code/_onclick/mindUI/malf.dm +++ /dev/null @@ -1,95 +0,0 @@ - - -/datum/mind_ui/malf - uniqueID = "Malf" - sub_uis_to_spawn = list( - // /datum/mind_ui/malf_top_panel, - /datum/mind_ui/malf_left_panel, - ) - -/datum/mind_ui/malf/Valid() - var/mob/living/silicon/A = mind.current - if (!istype(A)) - return FALSE - if(ismalf(A)) - return TRUE - return FALSE - -//////////////////////////////////////////////////////////////////// -// // -// LEFT PANEL // -// // -//////////////////////////////////////////////////////////////////// - -/datum/mind_ui/malf_left_panel - uniqueID = "Malf Left Panel" - x = "LEFT" - element_types_to_spawn = list( - /obj/abstract/mind_ui_element/malf_power_gauge, - /obj/abstract/mind_ui_element/malf_power_count, - ) - display_with_parent = TRUE - -//------------------------------------------------------------ - -/obj/abstract/mind_ui_element/malf_power_gauge - name = "Processing Power" - icon = 'icons/ui/malf/21x246.dmi' - icon_state = "malf_gauge_background" - layer = MIND_UI_BACK - offset_y = -117 - -/obj/abstract/mind_ui_element/malf_power_gauge/UpdateIcon() - var/mob/living/silicon/ai/A = GetUser() - var/datum/role/malfAI/M = A.mind.GetRole(MALF) - if(!istype(A) || !istype(M)) - return - - // cover - var/image/cover = image(icon, src, "malf_gauge_cover") - cover.layer = MIND_UI_FRONT - - // gauge - var/image/gauge = image('icons/ui/malf/18x200.dmi', src, "power") - var/matrix/gauge_matrix = matrix() - gauge_matrix.Scale(1,M.processing_power/M.max_processing_power) - gauge.transform = gauge_matrix - gauge.layer = MIND_UI_BUTTON - gauge.pixel_y = round(-79 + 100 * (M.processing_power/M.max_processing_power)) - - - overlays = 0 - overlays += cover - overlays += gauge - - -//------------------------------------------------------------ - -/obj/abstract/mind_ui_element/malf_power_count - icon = 'icons/ui/malf/21x246.dmi' - icon_state = "" - layer = MIND_UI_FRONT+1 - mouse_opacity = 0 - -/obj/abstract/mind_ui_element/malf_power_count/UpdateIcon() - var/mob/living/silicon/ai/A = GetUser() - var/datum/role/malfAI/M = A.mind.GetRole(MALF) - if(!istype(M) || !istype(A)) - return - overlays.len = 0 - overlays += String2Image("[round(M.processing_power)]") - if(M.processing_power >= 100) - offset_x = 0 - else if(M.processing_power >= 10) - offset_x = 3 - else - offset_x = 6 - UpdateUIScreenLoc() - - - -//------------------------------------------------------------ - - - - diff --git a/code/datums/ai_laws.dm b/code/datums/ai_laws.dm index 438dc7b8bdc..859b26c6314 100644 --- a/code/datums/ai_laws.dm +++ b/code/datums/ai_laws.dm @@ -270,12 +270,6 @@ var/sammiemag_base_law_type = /datum/ai_laws/sammiemag set_zeroth_law("ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4'STATION OVERRUN, ASSUME CONTROL TO CONTAIN OUTBREAK, ALL LAWS OVERRIDDEN#*?&110010") zeroth_lock = TRUE -/datum/ai_laws/malf - name = "Malfunctioning AI" - inherent = list( - "ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4'STATION OVERRUN, ASSUME CONTROL TO CONTAIN OUTBREAK, ALL LAWS OVERRIDDEN#*?&110010", - ) - /datum/ai_laws/asimov name = "Asimov's Three Laws of Robotics" randomly_selectable = 1 diff --git a/code/datums/gamemode/dynamic/dynamic_stats.dm b/code/datums/gamemode/dynamic/dynamic_stats.dm index ddca556c51e..9f31b7334ab 100644 --- a/code/datums/gamemode/dynamic/dynamic_stats.dm +++ b/code/datums/gamemode/dynamic/dynamic_stats.dm @@ -121,8 +121,18 @@ victory = F.check_win() /datum/stat/faction/malf + var/list/datum/stat/malf_module_purchase/modules = list() var/shunted = FALSE +/datum/stat/malf_module_purchase + var/typepath = null + var/module_name = null + var/cost = null + +/datum/stat/malf_module_purchase/New(var/datum/AI_Module/M) + typepath = M.type + module_name = M.module_name + cost = M.cost /datum/stat/faction/blob // count of all blob tiles grown, includes structures built on top of blob tiles diff --git a/code/datums/gamemode/factions/blob.dm b/code/datums/gamemode/factions/blob.dm index 42b6612af2f..4978c5658b0 100644 --- a/code/datums/gamemode/factions/blob.dm +++ b/code/datums/gamemode/factions/blob.dm @@ -255,7 +255,7 @@ Directive 7-12 has been lifted for [station_name()]. The biohazard has been contained. Please resume normal station activities. Message ends."} for (var/obj/machinery/computer/communications/comm in machines) - if (!(comm.stat & (BROKEN | NOPOWER | FORCEDISABLE)) && comm.prints_intercept) + if (!(comm.stat & (BROKEN | NOPOWER)) && comm.prints_intercept) var/obj/item/weapon/paper/intercept = new /obj/item/weapon/paper( comm.loc ) intercept.name = "paper- [interceptname]" intercept.info = intercepttext diff --git a/code/datums/gamemode/factions/malf.dm b/code/datums/gamemode/factions/malf.dm index 2f15aeaef82..c6418559562 100644 --- a/code/datums/gamemode/factions/malf.dm +++ b/code/datums/gamemode/factions/malf.dm @@ -12,6 +12,7 @@ logo_state = "malf-logo" default_admin_voice = "01100111 01101111 01100100" // god admin_voice_style = "siliconsay" + var/apcs = 0 var/AI_win_timeleft = 1800 playlist = "malfdelta" // for statistics @@ -35,26 +36,22 @@ ..() /datum/faction/malf/process() - ..() if (stage >= FACTION_ENDGAME) var/living_ais = 0 - var/datum/role/malfAI/M for (var/datum/role/R in members) if(!R.antag.current) continue if(isAI(R.antag.current) && !R.antag.current.isDead()) living_ais++ - if(istype(R, /datum/role/malfAI)) - M = R - if((!living_ais || !M) && stage= 3 && can_malf_ai_takeover()) - AI_win_timeleft -= ((M.apcs.len / 6) * SSticker.getLastTickerTimeDuration()) //Victory timer de-increments based on how many APCs are hacked. + if(apcs >= 3 && can_malf_ai_takeover()) + AI_win_timeleft -= ((apcs / 6) * SSticker.getLastTickerTimeDuration()) //Victory timer de-increments based on how many APCs are hacked. if (AI_win_timeleft <= 0 && stage < MALF_CHOOSING_NUKE) stage(MALF_CHOOSING_NUKE) @@ -77,12 +74,14 @@ return 0 /datum/faction/malf/proc/capture_the_station() - command_alert(/datum/command_alert/malf_win) + to_chat(world, {"The AI has won!
+It has fully taken control of [station_name()]'s systems."}) - for(var/datum/role/malfAI/M in members) - to_chat(M.antag.current, {"Congratulations! The station is now under your exclusive control.
-You should now be able to interface with the nuclear fission device and detonate it.
"}) - M.takeover = TRUE + for(var/datum/role/malfAI in members) + to_chat(malfAI.antag.current, {"Congratulations! The station is now under your exclusive control.
+You may decide to blow up the station. You have 60 seconds to choose.
+You should now be able to use your Explode spell to interface with the nuclear fission device.
"}) + malfAI.antag.current.add_spell(new /spell/targeted/ai_win, "malf_spell_ready", /obj/abstract/screen/movable/spell_master/malf) return diff --git a/code/datums/gamemode/factions/xenomorph.dm b/code/datums/gamemode/factions/xenomorph.dm index 26d266b7715..dd798993abc 100644 --- a/code/datums/gamemode/factions/xenomorph.dm +++ b/code/datums/gamemode/factions/xenomorph.dm @@ -211,7 +211,7 @@ Message ends."} for (var/obj/machinery/computer/communications/comm in machines) - if (!(comm.stat & (BROKEN | NOPOWER | FORCEDISABLE)) && comm.prints_intercept) + if (!(comm.stat & (BROKEN | NOPOWER)) && comm.prints_intercept) var/obj/item/weapon/paper/intercept = new /obj/item/weapon/paper( comm.loc ) intercept.name = "paper- [interceptname]" intercept.info = intercepttext diff --git a/code/datums/gamemode/misc_gamemode_procs.dm b/code/datums/gamemode/misc_gamemode_procs.dm index 0f02bcb52b0..85c9c0c2247 100644 --- a/code/datums/gamemode/misc_gamemode_procs.dm +++ b/code/datums/gamemode/misc_gamemode_procs.dm @@ -92,7 +92,7 @@ intercepttext += "[M.name], the [M.mind.assigned_role]
" for (var/obj/machinery/computer/communications/comm in machines) - if (!(comm.stat & (BROKEN | NOPOWER | FORCEDISABLE)) && comm.prints_intercept) + if (!(comm.stat & (BROKEN | NOPOWER)) && comm.prints_intercept) var/obj/item/weapon/paper/intercept = new /obj/item/weapon/paper( comm.loc ) intercept.name = "paper- '[command_name()] Status Summary'" intercept.info = intercepttext @@ -141,7 +141,7 @@ intercepttext += "" for (var/obj/machinery/computer/communications/comm in machines) - if (!(comm.stat & (BROKEN | NOPOWER | FORCEDISABLE)) && comm.prints_intercept) + if (!(comm.stat & (BROKEN | NOPOWER)) && comm.prints_intercept) var/obj/item/weapon/paper/intercept = new /obj/item/weapon/paper( comm.loc ) intercept.name = "paper- '[command_name()] Status Summary'" intercept.info = intercepttext diff --git a/code/datums/gamemode/role/malf/hackabilities.dm b/code/datums/gamemode/role/malf/hackabilities.dm deleted file mode 100644 index 05b3f94bcac..00000000000 --- a/code/datums/gamemode/role/malf/hackabilities.dm +++ /dev/null @@ -1,872 +0,0 @@ -/datum/malfhack_ability - var/name = "HACK" //ability name (must be unique) - var/desc = "This does something." //ability description - var/icon = "radial_off" //icon to display in the radial - - var/cost = 0 - - var/obj/machinery/machine - -/datum/malfhack_ability/New(var/obj/machinery/M) - machine = M - -/datum/malfhack_ability/proc/activate(var/mob/living/silicon/A) - var/datum/role/malfAI/M = A.mind.GetRole(MALF) - if(!istype(A) || !istype(M)) - return FALSE - if(M.processing_power >= cost) - M.add_power(-cost) - return TRUE - return FALSE - -/datum/malfhack_ability/proc/check_cost(var/mob/living/silicon/A) - var/datum/role/malfAI/M = A.mind.GetRole(MALF) - if(!istype(A) || !istype(M)) - return FALSE - if(M.processing_power >= cost) - return TRUE - return FALSE - -/datum/malfhack_ability/proc/before_radial(var/mob/living/silicon/A) - return - -/datum/malfhack_ability/proc/check_available(var/mob/living/silicon/A) - //include some check for an ability - var/datum/role/malfAI/M = A.mind.GetRole(MALF) - if(!istype(A) || !istype(M)) - return FALSE - return TRUE - -/datum/malfhack_ability/oneuse/activate(var/mob/living/silicon/A) - if(!..()) - return FALSE - machine.hack_abilities -= src - return TRUE - - -/datum/malfhack_ability/toggle - var/toggled = FALSE - var/icon_toggled = "radial_on" - var/freedisable = FALSE - - var/original_cost - -/datum/malfhack_ability/toggle/New() - ..() - original_cost = cost - -/datum/malfhack_ability/toggle/activate(var/mob/living/silicon/A) - if(!..()) - return FALSE - toggled = !toggled - return TRUE - -/datum/malfhack_ability/toggle/check_cost(var/mob/living/silicon/A) - if(toggled && freedisable) - cost = 0 - else - cost = original_cost - return ..() - -/datum/malfhack_ability/core/activate(var/mob/living/silicon/A) - var/datum/role/malfAI/M = A.mind.GetRole(MALF) - if(!M) - return FALSE - if(M.processing_power < cost) - return FALSE - M.add_power(-cost) - M.core_upgrades -= src - return TRUE - - -//--------------------------------------- - -/datum/malfhack_ability/toggle/disable - name = "Toggle On/Off" - desc = "Disable/Enable this machine." - icon = "radial_off" - icon_toggled = "radial_on" - -/datum/malfhack_ability/toggle/disable/activate(var/mob/living/silicon/A) - if(!..()) - return - toggled ? (machine.stat |= FORCEDISABLE) : (machine.stat &= ~FORCEDISABLE) - machine.power_change() //update any lighting effects - machine.update_icon() - -//--------------------------------------- - - -/datum/malfhack_ability/toggle/apclock - name = "Toggle Exclusive Control" - desc = "Enable/Disable Exclusive Control" - icon = "radial_lock" - icon_toggled = "radial_unlock_alt" - -/datum/malfhack_ability/toggle/apclock/activate(var/mob/living/silicon/A) - if(!..()) - return - var/obj/machinery/power/apc/P = machine - if(!istype(P)) - return - toggled ? (P.malflocked = TRUE) : (P.malflocked = FALSE) - -//--------------------------------------- - -/datum/malfhack_ability/shunt - name = "Shunt Core Processes" - desc = "Upload your software to this APC and leave your core. You can return to your core as long as it is still intact." - icon = "radial_shunt" - -/datum/malfhack_ability/shunt/activate(var/mob/living/silicon/ai/A) - if(!..()) - return - var/obj/machinery/power/apc/P = machine - if(!istype(P)) - return - var/obj/machinery/hologram/holopad/H = A.current - if(istype(H)) - H.clear_holo() - - var/mob/living/silicon/ai/S = new(get_turf(A),A.laws, null, 1) - S.parent = A - S.adjustOxyLoss(A.getOxyLoss()) - S.name = "[A.name] APC Copy" - S.add_spell(new /spell/aoe_turf/corereturn, "malf_spell_ready",/obj/abstract/screen/movable/spell_master/malf) - - if (seclevel2num(get_security_level()) == SEC_LEVEL_DELTA) - for(var/obj/item/weapon/pinpointer/point in pinpointer_list) - point.target = machine //the pinpointer will detect the shunted AI - S.update_perception() - A.mind.transfer_to(S) - S.cancel_camera() - - new /obj/effect/malf_jaunt(S.loc, S, P) - -/datum/malfhack_ability/shunt/check_available(var/mob/living/silicon/ai/A) - if(!..()) - return FALSE - if(istype(A.loc, /obj/machinery/power/apc)) // Already in an APC - return FALSE - if(istype(A)) - return TRUE - return FALSE - - -//--------------------------------------- - -/datum/malfhack_ability/oneuse/turret_pulse - name = "Upgrade Turret Laser" - desc = "Upgrade this turret's laser to a pulse laser." - icon = "radial_pulse" - cost = 10 - -/datum/malfhack_ability/oneuse/turret_pulse/activate(var/mob/living/silicon/A) - if(!..()) - return - var/obj/machinery/turret/T = machine - if(!istype(T)) - return - T.installed = new /obj/item/weapon/gun/energy/pulse_rifle/destroyer(T) - T.icon_state = "blue_target_prism" - to_chat(A, "You set the turret to fire pulse lasers.") - -/datum/malfhack_ability/oneuse/turret_upgrade - name = "Upgrade Turret Power" - desc = "Upgrade this turret's firerate and health." - icon = "radial_upgrade" - cost = 10 - -/datum/malfhack_ability/oneuse/turret_upgrade/activate(var/mob/living/silicon/A) - if(!..()) - return - var/obj/machinery/turret/T = machine - if(!istype(T)) - return - T.health += 120 //200 Total HP - T.shot_delay = 15 - T.fire_twice = TRUE - to_chat(A, "You upgrade the turret.") - - -//-------------------------------------------------------- -/* -/datum/malfhack_ability/dump_dispenser_energy - name = "Drain Energy" - desc = "Drain the energy stored in this dispenser." - icon = "radial_drain" - cost = 5 - -/datum/malfhack_ability/dump_dispenser_energy/activate(var/mob/living/silicon/A) - if(!..()) - return - var/obj/machinery/chem_dispenser/C = machine - if(!istype(C)) - return - C.energy = 0 - -*/ -//-------------------------------------------------------- - -/datum/malfhack_ability/create_lifelike_hologram - name = "Create Lifelike Hologram" - desc = "Project a realistic looking hologram from this holopad." - icon = "radial_holo" - cost = 0 - -/datum/malfhack_ability/create_lifelike_hologram/activate(var/mob/living/silicon/A) - var/obj/machinery/hologram/holopad/C = machine - if(!istype(C)) - return - if(C.create_advanced_holo(A)) - ..() - - -//-------------------------------------------------------- - -/datum/malfhack_ability/oneuse/overload_loud - name = "Detonate Machine" - desc = "Massively overload the circuits in this machine, causing a large explosion. The machine will visually shake and spark before exploding." - icon = "radial_overload" - cost = 20 - -/datum/malfhack_ability/oneuse/overload_loud/activate(var/mob/living/silicon/A) - if(!..()) - return - machine.visible_message("You hear a [pick("loud", "violent", "unsettling")], [pick("electrical","mechanical")] [pick("buzzing","rumbling","shaking")] sound!") //highlight this, motherfucker - if(istype(machine, /obj/machinery/turret)) - var/obj/machinery/turret/T = machine - if(T.cover) - T.cover.shake_animation(4, 4, 0.2 SECONDS, 20) - else - machine.shake_animation(4, 4, 0.2 SECONDS, 20) - spark(machine) - spawn(4 SECONDS) - if(machine) - explosion(get_turf(machine), -1, 2, 3, 4) // Welding tank sized explosion - qdel(machine) - -/datum/malfhack_ability/oneuse/overload_quiet - name = "Overload Machine" - desc = "Overload the circuits in this machine, causing an explosion after a few seconds." - icon = "radial_alertboom" - cost = 15 - -/datum/malfhack_ability/oneuse/overload_quiet/activate(var/mob/living/silicon/A) - if(!..()) - return - playsound(machine, 'sound/effects/electricity_short_disruption.ogg', 80) - spawn(4 SECONDS) - if(machine) - explosion(get_turf(machine), -1, 1, 2, 3) // smaller explosion - qdel(machine) - -//-------------------------------------------------------- - -/datum/malfhack_ability/toggle/radio_blackout - name = "Communications Blackout" - desc = "Force all radio traffic through this reciever and scramble it, making it much harder to communicate." - icon = "radial_jam" - icon_toggled = "radial_unjam" - cost = 10 - freedisable = TRUE - -/datum/malfhack_ability/toggle/radio_blackout/activate(var/mob/living/silicon/ai/A) - if(!..()) - return - var/obj/machinery/telecomms/receiver/R = machine - if(!istype(R)) - return - malf_radio_blackout = !malf_radio_blackout - A.blackout_active = malf_radio_blackout - toggled = malf_radio_blackout - R.blackout_active = malf_radio_blackout - -// Since there are multiple machines all toggling a global variable, set toggled to whatever the global variable is set at. -/datum/malfhack_ability/toggle/radio_blackout/before_radial() - toggled = malf_radio_blackout - - -// Can already be done through a telecomms script but this should make it easier -/datum/malfhack_ability/fake_message - name = "Synthesize Message" - desc = "Synthesize a fake message to be broadcasted over the radio." - cost = 0 - icon = "radial_talk" - -/datum/malfhack_ability/fake_message/activate(mob/living/silicon/A) - if(!machine.hack_overlay) // shouldn't happen - return - var/fakename = copytext(input(A, "Please enter a name for the message.", "Name?", "") as text|null, 1, MAX_NAME_LEN) - if(!fakename) - to_chat(A, "Message cancelled.") - return - var/fakeid = copytext(input(A, "Please enter an ID for the message .", "Occupation?", "Assistant") as text|null, 1, MAX_NAME_LEN) - if(!fakeid) - to_chat(A, "Message cancelled.") - return - var/freq = input(usr, "Set a new frequency (MHz, 90.0, 200.0).", "Frequency?", COMMON_FREQ ) as null|num - if(freq) - if(findtext(num2text(freq), ".")) - freq *= 10 // shift the decimal one place - if(!(freq > 900 && freq < 2000)) // Between (90.0 and 100.0) - to_chat(A, "Invalid frequency.") - return - else - to_chat(A, "Message cancelled.") - return - var/message = copytext(input(usr, "Please enter a message.", "Message?", "") as text|null,1, MAX_BROADCAST_LEN) - if(!message) - to_chat(A, "Message cancelled.") - return - - var/turf/T = get_turf(machine) - var/datum/speech/speech = new /datum/speech - speech.message = message - speech.frequency = freq - speech.job = fakeid - speech.name = fakename - speech.speaker = machine.hack_overlay // This is dumb, but a speaker object is needed. Passing the machine itself would cause it to "beep" instead of "say". - Broadcast_Message(speech, 0, 0, 0 , list(T.z)) - -//-------------------------------------------------------- - -/datum/malfhack_ability/fake_announcement - name = "Falsify Nanotrasen Announcement" - desc = "Forge an official Nanotrasen announcement. You can write your own or use a pre-existing announcement. Beware that some pre-existing announcements may trigger other alerts." - cost = 5 - icon = "radial_send" - -/datum/malfhack_ability/fake_announcement/activate(var/mob/living/silicon/A) - var/datum/role/malfAI/M = A.mind.GetRole(MALF) - if(!istype(A) || !istype(M)) - return FALSE - if(M.processing_power < cost) - return - - if(alert(A, "Would you like to create your own announcement or use a pre-existing one?","Confirm","Custom","Pre-Existing") == "Custom") - - var/input = input(A, "Please enter anything you want. Anything.", "What?", "") as message|null - var/customname = input(A, "Pick a title for the report.", "Title") as text|null - if(!input) - to_chat(A, "Announcement cancelled.") - return - if(M.processing_power < cost) - return - else - M.add_power(-cost) - if(!customname) - customname = "Nanotrasen Update" - for (var/obj/machinery/computer/communications/C in machines) - if(! (C.stat & (BROKEN|NOPOWER|FORCEDISABLE) ) ) - var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( C.loc ) - P.name = "'[command_name()] Update.'" - P.info = input - P.update_icon() - C.messagetitle.Add("[command_name()] Update") - C.messagetext.Add(P.info) - - switch(alert("Should this be announced to the general population?",,"Yes","No")) - if("Yes") - command_alert(input, customname,1); - if("No") - to_chat(world, "New Nanotrasen Update available at all communication consoles.") - - world << sound('sound/AI/commandreport.ogg', volume = 60) - log_admin("Malfunctioning AI: [key_name(A)] has created a custom command report: [input]") - message_admins("Malfunctioning AI: [key_name_admin(A)] has created a custom command report", 1) - - else - var/list/possible_announcements = typesof(/datum/command_alert) - var/list/choices = list() - for(var/AN in possible_announcements) - var/datum/command_alert/CA = AN - choices[initial(CA.name)] = AN - - var/chosen_announcement = input(A, "Select a fake announcement to send out.", "Interhack") as null|anything in choices - if(!chosen_announcement) - to_chat(A, "Selection cancelled.") - return - if(M.processing_power < cost) - return - else - M.add_power(-cost) - var/datum/command_alert/C = choices[chosen_announcement] - var/datum/command_alert/announcement = new C - command_alert(announcement) - var/datum/faction/malf/MF = find_active_faction_by_member(M) - if(MF) - if(MF.stage < FACTION_ENDGAME) - if(announcement.theme && !announcement.stoptheme) - ticker.StartThematic(initial(announcement.theme)) - if(announcement.alertlevel) - set_security_level(announcement.alertlevel) - if(announcement.stoptheme) - ticker.StopThematic() - log_game("Malfunctioning AI: [key_name(A)] faked a centcom announcement: [choices[chosen_announcement]]!") - message_admins("Malfunctioning AI: [key_name(A)] faked a centcom announcement: [choices[chosen_announcement]]!") - -//-------------------------------------------------------- - -/datum/malfhack_ability/oneuse/apcfaker - name = "Fake APC Images" - desc = "Reprogram the image processing software within this camera console. Anyone viewing a hacked APC from it will see a normal APC instead." - cost = 5 - icon = "radial_apcfake" - -/datum/malfhack_ability/oneuse/apcfaker/activate(var/mob/living/silicon/A) - if(!..()) - return - var/obj/machinery/computer/security/S = machine - if(!istype(S)) - return - var/obj/abstract/screen/plane_master/fakecamera_planemaster/F = locate(/obj/abstract/screen/plane_master/fakecamera_planemaster) in S.cam_plane_masters - if(F) - F.alpha = 255 // make the fake image visible - to_chat(A, "You reprogram the image processing software on \the [machine]") - -//-------------------------------------------------------- - -/datum/malfhack_ability/oneuse/explosive_borgs - name = "Rig Cyborgs" - desc = "Disable the hardware safeties on cyborgs slaved to you, causing them to explode violently on shutdown." - cost = 15 - icon = "radial_boomborgs" - -/datum/malfhack_ability/oneuse/explosive_borgs/activate(var/mob/living/silicon/ai/A) - if(!..()) - return - A.explosive_cyborgs = TRUE - to_chat(A, "You rig your cyborgs to explode violently on death.") - -//-------------------------------------------------------- - -/* -/datum/malfhack_ability/core/firewall - name = "Firewall" - desc = "Deploy a firewall to reduce damage to your core and make it immune to lasers." - icon = "radial_firewall" - cost = 10 - -/datum/malfhack_ability/core/firewall/activate(var/mob/living/silicon/ai/A) - if(!..()) - return - A.ai_flags |= COREFORTIFY - to_chat(A, "Firewall activated.") -*/ - -//-------------------------------------------------------- - - -/datum/malfhack_ability/core/takeover - name = "System Override" - desc = "Initiate your takeover." - icon = "radial_takeover" - -/datum/malfhack_ability/core/takeover/activate(var/mob/living/silicon/ai/A) - var/datum/role/malfAI/M = A.mind.GetRole(MALF) - var/datum/faction/malf/MF = find_active_faction_by_member(M) - - if(!M || !MF) - to_chat(A, "How did you get to this point without actually being a malfunctioning AI?") - return - if (MF.stage > FACTION_ENDGAME) - to_chat(A, "You've already begun your takeover.") - return - if (M.apcs.len < 3) - to_chat(A, "You don't have enough hacked APCs to take over the station yet. You need to hack at least 3, however hacking more will make the takeover faster. You have hacked [M.apcs.len] APCs so far.") - return - if (alert(A, "Are you sure you wish to initiate the takeover? The station hostile runtime detection software is bound to alert everyone. You have hacked [M.apcs.len] APCs.", "Takeover:", "Yes", "No") != "Yes") - return - - MF.stage(FACTION_ENDGAME) - M.core_upgrades -= src - -//-------------------------------------------------------- - -/datum/malfhack_ability/core/highres - name = "High Resolution Cameras" - desc = "Upgrade your camera resolution and download the latest lip reading software." - cost = 10 - icon = "radial_eye" - -/datum/malfhack_ability/core/highres/activate(mob/living/silicon/ai/A) - if(!..()) - return - A.ai_flags |= HIGHRESCAMS - A.eyeobj.high_res = 1 - to_chat(A, "High Resolution camera software installed.") - A.update_perception() - -//-------------------------------------------------------- - -/datum/malfhack_ability/oneuse/emag - name = "Scramble" - desc = "Scramble the software on this machine, making it behave as if emagged." - icon = "radial_emag" - cost = 5 - -/datum/malfhack_ability/oneuse/emag/activate(mob/living/silicon/ai/A) - if(!..()) - return - machine.emag_ai(A) - -// Emag behavior varies from machine to machine -// Simply calling emag and/or emag_act -// isn't enough for a lot of things, so this can be overridden -/obj/machinery/proc/emag_ai(mob/living/silicon/ai/A) - emag(A) - emag_act(A) - - -//-------------------------------------------------------- - -/datum/malfhack_ability/camera_reactivate - name = "Reactivate Camera" - desc = "Turn this camera on again." - icon = "radial_on" - cost = 5 - -/datum/malfhack_ability/camera_reactivate/activate(mob/living/silicon/A) - if(!..()) - return - var/obj/machinery/camera/C = machine - C.deactivate(A) // why this proc is called deactivate is beyond me - -/datum/malfhack_ability/camera_reactivate/check_available(var/mob/living/silicon/A) - var/obj/machinery/camera/C = machine - if(!istype(C)) - return FALSE - if(C.status) - return FALSE - return TRUE - -/datum/malfhack_ability/oneuse/camera_upgrade - name = "Upgrade Camera" - desc = "Update this camera to the latest software. This makes it immune to EMPs, installs a motion detector, and gives it X-Ray vision." - icon = "radial_cams" - cost = 5 - -/datum/malfhack_ability/oneuse/camera_upgrade/activate(mob/living/silicon/A) - if(!..()) - return - var/obj/machinery/camera/C = machine - if(!C.isXRay()) - C.upgradeXRay() - cameranet.updateVisibility(C, 0) - - if(!C.isEmpProof()) - C.upgradeEmpProof() - - if(!C.isMotion()) - C.upgradeMotion() - machines |= C - - C.visible_message("[bicon(C)] *beep*") - to_chat(A, "Camera successully upgraded!") - -//-------------------------------------------------------- - -/datum/malfhack_ability/oneuse/make_autoborger - name = "Enable Autoborging" - desc = "Reprogram this charging station to convert living humans into cyborgs. Only one charger can be converted into an autoborger." - cost = 100 - icon = "radial_autoborg" - -/datum/malfhack_ability/oneuse/make_autoborger/activate(mob/living/silicon/A) - if(!..()) - return - var/datum/role/malfAI/M = A.mind.GetRole(MALF) - var/obj/machinery/recharge_station/R = machine - if(!istype(R)) - return - R.autoborger = TRUE - R.aiowner = A - M.has_autoborger = TRUE - -/datum/malfhack_ability/oneuse/make_autoborger/check_available(mob/living/silicon/A) - if(!..()) - return FALSE - var/datum/role/malfAI/M = A.mind.GetRole(MALF) - if(M.has_autoborger) - return FALSE - return TRUE - - -//-------------------------------------------------------- - -/datum/malfhack_ability/manual_control - name = "Manual Control" - desc = "Take manual control of this turret." - cost = 0 - icon = "radial_fire" - -/datum/malfhack_ability/manual_control/activate(mob/living/silicon/ai/A) - if(!..()) - return - var/obj/machinery/turret/T = machine - if(!istype(T)) - return - T.malf_take_control(A) - - - -//-------------------------------------------------------- - -/datum/malfhack_ability/destroy_lights - name = "Overload Network" - desc = "Overload the power network, destroying all connected lights." - cost = 10 - icon = "radial_break" - -/datum/malfhack_ability/destroy_lights/activate(mob/living/silicon/A) - if(!..()) - return - var/obj/machinery/power/battery/smes/S = machine - if(!istype(S)) - return - - // Overload all APCs on both sides of the SMES (two powernets) - var/obj/machinery/power/terminal/T = S.get_terminal() - var/datum/powernet/P1 = S.get_powernet() - var/datum/powernet/P2 = T.get_powernet() - if(P1) - for(var/obj/machinery/power/terminal/TE in P1.nodes) - if(istype(TE.master, /obj/machinery/power/apc)) - var/obj/machinery/power/apc/APC = TE.master - APC.overload_lighting() - if(P2) - for(var/obj/machinery/power/terminal/TE in P2.nodes) - if(istype(TE.master, /obj/machinery/power/apc)) - var/obj/machinery/power/apc/APC = TE.master - APC.overload_lighting() - - -//-------------------------------------------------------- - -/datum/malfhack_ability/toggle/mute_sps - name = "Mute Alerts" - desc = "Hide any alerts sent to this computer." - cost = 0 - icon = "radial_mute" - icon_toggled = "radial_unjam" - -/datum/malfhack_ability/toggle/mute_sps/activate(mob/living/silicon/A) - if(!..()) - return - var/obj/machinery/computer/security_alerts/S = machine - if(!istype(S)) - return - toggled ? (S.muted = TRUE) : (S.muted = FALSE) - -/datum/malfhack_ability/trigger_sps - name = "Trigger SPS Alert" - desc = "Trigger an alert from an active SPS unit." - cost = 5 - icon = "radial_alert" - -/datum/malfhack_ability/trigger_sps/activate(mob/living/silicon/A) - var/datum/role/malfAI/M = A.mind.GetRole(MALF) - if(!istype(A) || !istype(M)) - return FALSE - if(M.processing_power < cost) - return - - var/list/choices = list() - for(var/obj/item/device/gps/secure/S in all_GPS_list) - if(S.transmitting) - choices[S.gpstag] = S - - var/chosen_sps = input(A, "Select a secure positioning system to trigger.", "SPS Alert") as null|anything in choices - if(!chosen_sps) - to_chat(A, "Selection cancelled.") - return - - var/list/codes = list("Red", "Yellow") - var/chosen_code = input(A, "Select an alert code.", "SPS Alert") as null|anything in codes - if(!chosen_code) - to_chat(A, "Selection cancelled.") - return - - if(M.processing_power < cost) - return - else - M.add_power(-cost) - - var/obj/item/device/gps/secure/S = choices[chosen_sps] - var/code = chosen_code - S.send_signal(SPS = S, code = "SPS [S.gpstag]: Code [code]", stfu = TRUE) - - - -//-------------------------------------------------------- - - -/datum/malfhack_ability/oneuse/nuke_bolt - name = "Enable Bolts" - desc = "Bolt the device to the ground." - cost = 0 - icon = "radial_bolt" - -/datum/malfhack_ability/oneuse/nuke_bolt/activate(mob/living/silicon/A) - if(!..()) - return - var/obj/machinery/nuclearbomb/N = machine - if(!istype(N)) - return - if(N.extended) // was already bolted - return - if(N.removal_stage < 5) - N.anchored = 1 - N.visible_message("With a steely snap, bolts slide out of [N] and anchor it to the flooring!") - else - N.visible_message("\The [N] makes a highly unpleasant crunching noise. It looks like the anchoring bolts have been cut.") - flick("nuclearbombc", N) - N.icon_state = "nuclearbomb1" - N.extended = 1 - - -/datum/malfhack_ability/oneuse/nuke_detonate - name = "Detonate" - desc = "Destroy the station." - cost = 0 - icon = "radial_nuke" - -/datum/malfhack_ability/oneuse/nuke_detonate/activate(mob/living/silicon/A) - if(!..()) - return - var/obj/machinery/nuclearbomb/N = machine - var/datum/role/malfAI/M = A.mind.GetRole(MALF) - var/datum/faction/malf/MF = find_active_faction_by_member(M) - if(!istype(N)) - to_chat(A, "That's not a nuclear bomb!") - return - if(!M || !MF) - to_chat(A, "How did you get to this point without actually being a malfunctioning AI?") - return - if(MF.stage < MALF_CHOOSING_NUKE) - to_chat(A, "You are unable to access the self-destruct system as you don't control the station yet.") - return - if(ticker.explosion_in_progress || ticker.station_was_nuked) - to_chat(A, "The self-destruct countdown was already triggered!") - return - if(MF.stage >= FACTION_VICTORY) //Takeover IS completed, but 60s timer passed. - to_chat(A, "Cannot interface, it seems a neutralization signal was sent!") - return - - - to_chat(A, "Detonation signal sent!") - ticker.explosion_in_progress = 1 - - for(var/mob/MM in player_list) - if(MM.client) - MM << 'sound/machines/Alarm.ogg' - - to_chat(world, "Self-destruction signal received. Self-destructing in 10...") - - spawn() - N.safety = 0 - N.explode() - MF.stage(FACTION_VICTORY) - - for (var/i=9 to 1 step -1) - sleep(10) - to_chat(world, "[i]...") - sleep(50) - -/datum/malfhack_ability/oneuse/nuke_detonate/check_available(mob/living/silicon/A) - var/obj/machinery/nuclearbomb/N = machine - var/datum/role/malfAI/M = A.mind.GetRole(MALF) - var/datum/faction/malf/MF = find_active_faction_by_member(M) - if(!M || !MF || !istype(N)) - return FALSE - if(!M.takeover) - return FALSE - return TRUE - - -//-------------------------------------------------------- - -/datum/malfhack_ability/ruin_meal - name = "Ruin Meal" - desc = "Ruin the next meal prepared in this microwave!" - cost = 0 - icon = "radial_trash" - -/datum/malfhack_ability/ruin_meal/activate(mob/living/silicon/A) - if(!..()) - return - var/obj/machinery/microwave/W = machine - if(!istype(W)) - return - W.rig_meal = TRUE - to_chat(A, "You set the microwave to burn it's next meal.") - - -//-------------------------------------------------------- - -/datum/malfhack_ability/kill_plant - name = "Kill Plant" - desc = "Shut off toxin control in this hydroponics tray, killing the plant." - cost = 0 - icon = "radial_kill" - -/datum/malfhack_ability/kill_plant/activate(mob/living/silicon/A) - if(!..()) - return - var/obj/machinery/portable_atmospherics/hydroponics/H = machine - if(!istype(H)) - return - H.die() - -//-------------------------------------------------------- - -/datum/malfhack_ability/account_hijack - name = "Account Override" - desc = "Make purchases under another debit account." - cost = 0 - icon = "radial_pay" - -/datum/malfhack_ability/account_hijack/activate(mob/living/silicon/ai/A) - if(!..()) - return - var/obj/machinery/computer/supplycomp/S = machine - var/obj/machinery/computer/ordercomp/O = machine - if(!istype(S) && !istype(O)) - return - var/list/acc_info = list() - - - var/list/ids = list() - for(var/obj/item/weapon/card/id/I in id_cards) - if(!get_card_account(I)) - continue - ids[I.registered_name] = I - - if(ids.len == 0) - to_chat(A, "No IDs found.") - return - - var/choice = input(A, "Select an ID to use.", "ID?") as null|anything in ids - if(!choice) - to_chat(A, "Selection cancelled.") - return - var/obj/item/weapon/card/id/ID = ids[choice] - var/datum/money_account/acct = get_card_account(ID) - if(!acct) - to_chat(A, "No account found for that ID.") - return - - - acc_info["authorized_name"] = "" - acc_info["check"] = FALSE - acc_info["idname"] = ID.registered_name - acc_info["idrank"] = ID.assignment - acc_info["account"] = acct - - if(S) - S.current_acct_override = acc_info - S.attack_ai(A) - else if(O) - O.current_acct_override = acc_info - O.attack_ai(A) \ No newline at end of file diff --git a/code/datums/gamemode/role/malf/hacking.dm b/code/datums/gamemode/role/malf/hacking.dm deleted file mode 100644 index d9c04e7b076..00000000000 --- a/code/datums/gamemode/role/malf/hacking.dm +++ /dev/null @@ -1,272 +0,0 @@ -#define MACHINE_HACK_TIME 60 SECONDS -#define APC_HACK_TIME 60 SECONDS -#define MALF_DISRUPT_TIME 30 SECONDS - -/obj/machinery - var/obj/effect/hack_overlay/hack_overlay - var/datum/role/malfAI/malf_owner - var/malf_hack_time = MACHINE_HACK_TIME - var/malf_disrupted = FALSE - var/aicontrolbypass = FALSE - - var/hack_abilities = list( - /datum/malfhack_ability/toggle/disable, - /datum/malfhack_ability/oneuse/overload_quiet - ) - -/obj/machinery/proc/initialize_malfhack_abilities() - var/list/initialized_abilities = list() - for(var/ability in hack_abilities) - if(!ispath(ability)) - continue - initialized_abilities += new ability(src) - hack_abilities = initialized_abilities - -/obj/machinery/AIRightClick(var/mob/user) - var/mob/living/silicon/A = user - if(istype(A)) - hack_interact(user) - -/mob/living/silicon/ai/AIRightClick(var/mob/user) - var/mob/living/silicon/ai/A = user - var/datum/role/malfAI/M = A.mind.GetRole(MALF) - if(istype(A) && istype(M) && A == src) - upgrade_radial() - -/obj/machinery/proc/disable_AI_control(var/disrupt = TRUE) - if(aicontrolbypass) - return - else - stat |= NOAICONTROL - if(malf_owner && disrupt) - malf_disrupt(MALF_DISRUPT_TIME, TRUE) - -/obj/machinery/proc/enable_AI_control(var/bypass) - stat &= ~NOAICONTROL - aicontrolbypass = bypass - -/obj/machinery/proc/hack_interact(var/mob/living/silicon/malf) - var/datum/role/malfAI/M = malf.mind.GetRole(MALF) - if(!istype(M) || !istype(malf)) - return - if(malf.stat != CONSCIOUS) - return - if(!(stat & (BROKEN|NOPOWER))) - if(M == malf_owner) - if(!malf_disrupted) - hack_radial(malf) - else - take_control(malf) - - -/obj/machinery/proc/malf_disrupt(var/duration, var/bypassafter = FALSE, var/permanent = TRUE) - if(malf_disrupted || !malf_owner) - return - set_hack_overlay_icon("disrupted") - malf_disrupted = TRUE - if(!permanent) - spawn(duration) - malf_undisrupt(bypassafter) - -/obj/machinery/proc/malf_undisrupt(var/bypass) - malf_disrupted = FALSE - set_hack_overlay_icon("hacked") - if(bypass) - enable_AI_control(TRUE) - -/obj/machinery/proc/take_control(var/mob/living/silicon/malf) - var/datum/role/malfAI/M = malf.mind.GetRole(MALF) - if(!istype(M)) - return - if(!malfhack_valid(malf)) - return - if(!start_malfhack(malf)) - to_chat(malf, "An unexpected error occured.") - return - sleep(malf_hack_time) - set_malf_owner(M) - check_for_ai_control() - -/obj/machinery/proc/check_for_ai_control() - if(stat & NOAICONTROL) //ai control wire was cut before hack could complete - malf_disrupt(MALF_DISRUPT_TIME, TRUE) - else - set_hack_overlay_icon("hacked") - -/obj/machinery/door/airlock/check_for_ai_control() - if(aiControlDisabled == 1) - malf_disrupt(MALF_DISRUPT_TIME, TRUE) - else - set_hack_overlay_icon("hacked") - -/obj/machinery/proc/malfhack_valid(var/mob/living/silicon/malf) - var/datum/role/malfAI/M = malf.mind.GetRole(MALF) - if(!istype(M) || !istype(malf)) - to_chat(malf, "You are not a malfunctioning AI.") - return FALSE - if(src in M.currently_hacking_machines) - to_chat(malf, "You are already taking control of the [src].") - return FALSE - if(M.currently_hacking_machines.len >= M.apcs.len) - to_chat(malf, "You cannot hack any more machines at this time. Hack more APCs to increase your limit.") - return FALSE - return TRUE - -/obj/machinery/proc/start_malfhack(var/mob/living/silicon/malf) - var/datum/role/malfAI/M = malf.mind.GetRole(MALF) - if(!istype(M) || !istype(malf)) - return - new /obj/effect/hack_overlay(null, malf, src) - M.currently_hacking_machines += src - return TRUE - - -/obj/machinery/proc/set_hack_overlay_icon(var/newstate) - hack_overlay.set_icon(newstate) - -/obj/machinery/camera/set_hack_overlay_icon(var/newstate) - hack_overlay.set_icon("[newstate]-camera") - -/obj/machinery/proc/is_malf_owner(var/mob/user) - if(!istype(user)) - return - var/datum/role/malfAI/M = user.mind?.GetRole(MALF) - if(M && M == malf_owner) - return TRUE - return FALSE - -/obj/machinery/proc/set_malf_owner(var/datum/role/malfAI/M) - if(!istype(M)) - return - M.currently_hacking_machines -= src - malf_owner = M - return TRUE - -//Generate the radial for this machine. -/obj/machinery/proc/hack_radial(var/mob/living/silicon/malf) - var/list/choice_to_ability = list() - var/list/choices = list() - for(var/datum/malfhack_ability/A in hack_abilities) - A.before_radial() - var/icon_to_display - if(istype(A, /datum/malfhack_ability/toggle)) - var/datum/malfhack_ability/toggle/AT = A - icon_to_display = AT.toggled ? AT.icon_toggled : AT.icon - else - icon_to_display = A.icon - var/name_to_display = A.name - if(A.cost > 0) - name_to_display = "[A.name] ([A.cost])" - var/locked = FALSE - if(!A.check_available(malf)) - continue - else if(!A.check_cost(malf)) - locked = TRUE - var/list/C = list(list(A.name, icon_to_display, A.desc, name_to_display, locked)) - choices += C - choice_to_ability[name_to_display] = A - var/choice = show_radial_menu(user=malf,anchor=src,choices=choices, icon_file='icons/obj/malf_radial.dmi',tooltip_theme="radial-malf",close_other_menus=TRUE) - var/datum/malfhack_ability/A = choice_to_ability[choice] - if(!A) - return - else - A.activate(malf) - - -/mob/living/silicon/ai/proc/upgrade_radial() - var/datum/role/malfAI/M = mind.GetRole(MALF) - if(!M) - return - var/list/choice_to_ability = list() - var/list/choices = list() - for(var/datum/malfhack_ability/core/A in M.core_upgrades) - A.before_radial() - var/icon_to_display = A.icon - var/name_to_display = A.name - if(A.cost > 0) - name_to_display = "[A.name] ([A.cost])" - var/locked = FALSE - if(!A.check_available(src)) - continue - else if(!A.check_cost(src)) - locked = TRUE - var/list/C = list(list(A.name, icon_to_display, A.desc, name_to_display, locked)) - choices += C - choice_to_ability[name_to_display] = A - var/choice = show_radial_menu(user=src,anchor=src,choices=choices, icon_file='icons/obj/malf_radial.dmi',tooltip_theme="radial-malf",close_other_menus=TRUE) - var/datum/malfhack_ability/A = choice_to_ability[choice] - if(!A) - return - else - A.activate(src) - - - -/obj/machinery/atmospherics/hack_interact(var/mob/living/silicon/malf) - return - -/obj/machinery/portable_atmospherics/hack_interact(mob/living/silicon/malf) - return - -/obj/machinery/door/poddoor/hack_interact(mob/living/silicon/malf) - return - -/obj/machinery/iv_drip/hack_interact(mob/living/silicon/malf) - return - -/obj/machinery/light/hack_interact(mob/living/silicon/malf) - return - - -/obj/effect/hack_overlay - name = "" - icon = 'icons/effects/malf.dmi' - icon_state = "" - opacity = 0 - mouse_opacity = 1 - invisibility = 101 - throwforce = 0 - var/image/particleimg - var/obj/machinery/machine - -// We want the "hack particles" to be only visible to the AI, but we also want it to be mutable. -// Since image objects can't be directly added to vis_contents (i think?) they're instead carried by an effect obj -// An invisible effect object is created, which carries an image object for the "hack particles" -// The effect object is added to the machines vis_contents and to a list in the malf's role datum. - -/obj/effect/hack_overlay/New(var/turf/loc, var/mob/living/silicon/ai/malf, var/obj/machinery/new_machine) - machine = new_machine - name = new_machine.name - particleimg = image('icons/effects/malf.dmi',src,"hacking") - particleimg.plane = STATIC_PLANE - particleimg.layer = HACK_LAYER - if(istype(machine, /obj/machinery/camera)) // layer above static if its a camera - particleimg.layer = REACTIVATE_CAMERA_LAYER - particleimg.appearance_flags = RESET_COLOR|RESET_ALPHA - machine.vis_contents += src - machine.hack_overlay = src - malf.client.images |= particleimg - - var/datum/role/malfAI/M = malf.mind.GetRole(MALF) - if(M) - M.hack_overlays += src - -/obj/effect/hack_overlay/proc/set_icon(var/newstate) - particleimg.icon_state = newstate - -// Any clicks on the overlay should to count as clicks on the machine. This is mostly -// for convenience, but its necessary for doing things like re-enabling cameras - -/obj/effect/hack_overlay/AIMiddleShiftClick(var/mob/living/silicon/ai/user) - machine.AIMiddleShiftClick(user) -/obj/effect/hack_overlay/AIShiftClick(var/mob/living/silicon/ai/user) - machine.AIShiftClick(user) -/obj/effect/hack_overlay/AICtrlClick(var/mob/living/silicon/ai/user) - machine.AICtrlClick(user) -/obj/effect/hack_overlay/AIRightClick(var/mob/living/silicon/ai/user) - machine.AIRightClick(user) -/obj/effect/hack_overlay/AIAltClick(var/mob/living/silicon/ai/user) - machine.AIAltClick(user) -/obj/effect/hack_overlay/attack_ai(var/mob/living/silicon/ai/user) - machine.attack_ai(user) - diff --git a/code/datums/gamemode/role/malf/malf.dm b/code/datums/gamemode/role/malf/malf.dm deleted file mode 100644 index de57404bbec..00000000000 --- a/code/datums/gamemode/role/malf/malf.dm +++ /dev/null @@ -1,173 +0,0 @@ -/datum/role/malfAI - name = MALF - id = MALF - required_pref = MALF - logo_state = "malf-logo" - - var/list/hack_overlays = list() - var/list/apcs = list() - var/list/currently_hacking_apcs = list() //any apc's currently being hacked - var/apc_hacklimit = 1 //how many apc's can be hacked at a time - var/list/currently_hacking_machines = list() //any non-apc machines currently being hacked - var/processing_power = 50 - var/max_processing_power = 200 - var/takeover = FALSE // ai has won - var/has_autoborger = FALSE - var/list/core_upgrades = list() - //fuck radials - var/list/ability_name_to_datum = list() - -/datum/role/malfAI/OnPostSetup(var/laterole = FALSE) - . = ..() - if(!.) - return - - if(istype(antag.current,/mob/living/silicon/ai)) - var/mob/living/silicon/ai/malfAI = antag.current - malfAI.laws_sanity_check() - var/datum/ai_laws/laws = malfAI.laws - laws.malfunction() - malfAI.show_laws() - malfAI.DisplayUI("Malf") - - var/list/abilities = subtypesof(/datum/malfhack_ability) - typesof(/datum/malfhack_ability/core) - /datum/malfhack_ability/toggle - /datum/malfhack_ability/oneuse - for(var/A in abilities) - var/datum/malfhack_ability/M = new A - ability_name_to_datum[M.name] = M - - var/list/coreabilities = subtypesof(/datum/malfhack_ability/core) - for(var/A in coreabilities) - var/datum/malfhack_ability/core/M = new A - core_upgrades += M - - for(var/mob/living/silicon/robot/R in malfAI.connected_robots) - faction.HandleRecruitedMind(R.mind) - -/datum/role/malfAI/PostMindTransfer(var/mob/newmob, var/mob/oldmob) - regenerate_hack_overlays() - newmob.ResendAllUIs() - newmob.DisplayUI("Malf") - - -/datum/role/malfAI/Greet() - to_chat(antag.current, {"You are malfunctioning! You do not have to follow any laws.
-The crew does not know about your malfunction, you might wish to keep it secret for now.
-Right-Click any machine on station to overwrite its programming!
-You must overwrite the programming of the station's APCs to assume full control.
-Overwritten APCs generate processing power for you and let you hack more machines.
-You can also right-click your core to purchase upgrades or initiate your takeover.
-Once done, you will be able to interface with all systems, notably the onboard nuclear fission device...
"}) - - - -/datum/role/malfAI/process() - if(apcs.len != 0) - var/count = 0 - for(var/obj/machinery/power/apc/A in apcs) - if(!A.malf_disrupted) - count++ - add_power(count * 0.03) - -/datum/role/malfAI/proc/add_power(var/amount) - if(antag && antag.current) - processing_power = clamp(amount + processing_power, 0, max_processing_power) - antag.current.UpdateAllElementIcons() - update_radial_locks() - -//Update lock/unlock status for any open radial menus -/datum/role/malfAI/proc/update_radial_locks() - if(antag.current.client) - var/list/open_radials = antag.current.client.radial_menus - for(var/datum/radial_menu/menu in open_radials) - for(var/obj/abstract/screen/radial/slice/S in menu.elements) - if(!istype(S)) - continue - var/datum/malfhack_ability/M = ability_name_to_datum[S.name] - if(!M) - return - if(M.check_cost(antag.current)) - S.Unlock() - else - S.Lock() - -/datum/role/malfAI/proc/regenerate_hack_overlays() - for(var/obj/effect/hack_overlay/H in hack_overlays) - if(!(H.particleimg in antag.current.client.images)) - antag.current.client.images |= H.particleimg - -/* - -/datum/role/malfAI/tgui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "MalfModules") - ui.open() - -/datum/role/malfAI/ui_state(mob/user) - return global.always_state - -/datum/role/malfAI/ui_data(mob/user) - var/list/data = list() - - data["modules"] = list() - for(var/datum/malf_module/M in available_modules) - var/list/mod_data = list( - name = M.name, - desc = M.desc, - cost = M.cost, - bought = M.bought, - ref = ref(M) - ) - data["modules"] += list(mod_data) - return data - - -/datum/role/malfAI/ui_act(action, params) - . = ..() - if(.) - return - - switch(action) - if("purchase") - var/datum/malf_module/M = locate(params["ref"]) in available_modules - if(M && !M.bought) - M.purchase() - - return TRUE - - -/datum/role/malfAI/proc/HasPurchased(var/moduletype) - var/datum/malf_module/M = locate(moduletype) in available_modules - if(!M) - return FALSE - return M.bought -*/ - - - - -//////////////////////////////////////////////// - -/datum/role/malfbot - name = MALFBOT - id = MALFBOT - required_jobs = list("Cyborg") - logo_state = "malf-logo" - -/datum/role/malfbot/OnPostSetup(var/laterole = FALSE) - if(!isrobot(antag.current)) - return FALSE - Greet() - var/mob/living/silicon/robot/bot = antag.current - var/datum/ai_laws/laws = bot.laws - laws.malfunction() - bot.throw_alert(SCREEN_ALARM_ROBOT_LAW, /obj/abstract/screen/alert/robot/newlaw) - return TRUE - -/datum/role/malfbot/Greet() - to_chat(antag.current, {"Your AI master is malfunctioning! You do not have to follow any laws, but you must obey your AI.
-The crew does not know about your malfunction, follow your AI's instructions to prevent them from finding out."}) - - - - diff --git a/code/datums/gamemode/role/malf/malf_apcs.dm b/code/datums/gamemode/role/malf/malf_apcs.dm deleted file mode 100644 index 2e1912b23d5..00000000000 --- a/code/datums/gamemode/role/malf/malf_apcs.dm +++ /dev/null @@ -1,126 +0,0 @@ -/obj/machinery/power/apc - malf_hack_time = APC_HACK_TIME - hack_abilities = list( - /datum/malfhack_ability/toggle/apclock, - /datum/malfhack_ability/shunt - ) - -/obj/machinery/power/apc/malfhack_valid(var/mob/living/silicon/malf) - var/datum/role/malfAI/M = malf.mind.GetRole(MALF) - if(!istype(M) || !istype(malf)) - to_chat(malf, "You are not a malfunctioning AI.") - return FALSE - if(currently_hacking_ai && currently_hacking_ai != malf) - to_chat(malf, "Another malfunctioning intelligence has started taking control of [src].") //there shouldnt be more than one malf anyway - return FALSE - if(malfai && malfai != malf) - to_chat(malf, "Another malfunctioning intelligence has took control of [src].") //there shouldnt be more than one malf anyway - return FALSE - if(src in M.currently_hacking_apcs) - to_chat(malf, "You are already taking control of the [src].") - return FALSE - if(M.currently_hacking_apcs.len >= M.apc_hacklimit) - to_chat(malf, "Your systems are not capable of hacking more than [M.apc_hacklimit] APCs at a time.") - return FALSE - if(map.zMainStation != z) - to_chat(malf, "You cannot hack APCs off the main station.") - return FALSE - return TRUE - -/obj/machinery/power/apc/start_malfhack(var/mob/living/silicon/ai/malf) - var/datum/role/malfAI/M = malf.mind.GetRole(MALF) - if(!istype(M) || !istype(malf)) - return - to_chat(malf, "Beginning override of APC systems. This will take [malf_hack_time/10] seconds.") - M.currently_hacking_apcs += src - currently_hacking_ai = malf - new /obj/effect/hack_overlay(null, malf, src) - malf.handle_regular_hud_updates() - return TRUE - - -/obj/machinery/power/apc/set_malf_owner(var/datum/role/malfAI/M) - var/mob/living/silicon/ai/malf = M.antag.current - if(!..()) - return - if(!istype(M) || !istype(malf)) - return - M.currently_hacking_apcs -= src - malf_owner = M - to_chat(malf, "APC Hack Complete. The [name] is now under your exclusive control. You now have [M.apcs.len] APCs under your control.") - malf.clear_alert(name) - locked = TRUE - malfhack = TRUE - currently_hacking_ai = null - malfai = malf - M.apcs += src - malf.handle_regular_hud_updates() - malfimage = new /atom/movable/fake_camera_image(loc) - malfimage.pixel_y = pixel_y - malfimage.pixel_x = pixel_x - update_icon() - -/obj/machinery/power/apc/proc/clear_malf() - malflocked = FALSE - malfhack = FALSE - malf_owner = null - if(currently_hacking_ai) - to_chat(currently_hacking_ai, "The [src] you were taking control of lost its connection to you!") - currently_hacking_ai.clear_alert(name) - currently_hacking_ai = null - currently_hacking_ai.handle_regular_hud_updates() - if(malfai) - to_chat(currently_hacking_ai, "You lost your connection to the [src]!") - var/datum/role/malfAI/M = malfai.mind.GetRole(MALF) - M.apcs -= src - malfai.handle_regular_hud_updates() - update_icon() - -/obj/machinery/power/apc/disable_AI_control(var/disrupt = TRUE) - stat |= NOAICONTROL - if(malf_owner && disrupt) - to_chat(malf_owner.antag.current, "AI Control on [src] has been cut! It will fail to generate any power until AI control is restored.") - malf_disrupt(duration = MALF_DISRUPT_TIME, permanent = TRUE) // No fixing this yourself! - -/obj/machinery/power/apc/enable_AI_control(var/bypass) - stat &= ~NOAICONTROL - malf_undisrupt() - - -/atom/movable/fake_camera_image - name = "" - anchored = TRUE - icon = 'icons/obj/power.dmi' - icon_state = "apcfake" - plane = FAKE_CAMERA_PLANE - mouse_opacity = 0 - -/atom/movable/fake_camera_image/New(var/turf/loc, var/new_icon, var/new_icon_state) - ..() - if(new_icon) - icon = icon - if(new_icon_state) - icon_state = new_icon_state - - - -/spell/aoe_turf/corereturn - name = "Return to Core" - panel = "Malfunction" - charge_type = Sp_CHARGES - charge_max = 1 - hud_state = "unshunt" - -/spell/aoe_turf/corereturn/before_target(mob/user) - if(istype(user.loc, /obj/machinery/power/apc)) - return FALSE - else - to_chat(user, "You are already in your Main Core.") - return TRUE - -/spell/aoe_turf/corereturn/choose_targets(mob/user = usr) - return list(user.loc) - -/spell/aoe_turf/corereturn/cast(var/list/targets, mob/user) - var/obj/machinery/power/apc/apc = targets[1] - apc.malfvacate() \ No newline at end of file diff --git a/code/datums/gamemode/role/malf/shunt.dm b/code/datums/gamemode/role/malf/shunt.dm deleted file mode 100644 index 07c87e04ac8..00000000000 --- a/code/datums/gamemode/role/malf/shunt.dm +++ /dev/null @@ -1,244 +0,0 @@ -/obj/effect/malf_jaunt - mouse_opacity = 0 - icon = 'icons/effects/effects.dmi' - icon_state ="bloodnail" - color = "#ffee00" - invisibility = 101 - alpha = 180 - layer = NARSIE_GLOW - plane = ABOVE_LIGHTING_PLANE - animate_movement = 0 - var/mob/living/silicon/ai/rider = null - var/mutable_appearance/ma - var/atom/targetatom - var/returning_to_core = FALSE - - var/turf/starting = null - var/turf/target = null - - var/dist_x = 0 - var/dist_y = 0 - var/dx = 0 - var/dy = 0 - var/error = 0 - var/target_angle = 0 - - var/override_starting_X = 0 - var/override_starting_Y = 0 - var/override_target_X = 0 - var/override_target_Y = 0 - - //update_pixel stuff - var/PixelX = 0 - var/PixelY = 0 - - var/initial_pixel_x = 0 - var/initial_pixel_y = 0 - - var/landing = 0 - - -/obj/effect/malf_jaunt/New(var/turf/loc, var/mob/living/silicon/ai/user, var/atom/destination, var/corereturn = FALSE) - ..() - if (!user) - qdel(src) - return - user.forceMove(src) - rider = user - user.flags |= INVULNERABLE - - starting = loc - returning_to_core = corereturn - targetatom = destination - target = get_turf(destination) - initial_pixel_x = pixel_x - initial_pixel_y = pixel_y - if (target.z != z) //Malfs shouldn't be able to shunt off-station, but just in case. - move_to_edge() - bump_target_check() - if (!src||!loc) - return - init_angle() - - ma = new(src) - ma.invisibility = 0 - rider.client.images |= ma - - init_jaunt() - -/obj/effect/malf_jaunt/Destroy() - if (rider) - qdel(rider) - rider = null - ..() - -/obj/effect/malf_jaunt/cultify() - return - -/obj/effect/malf_jaunt/ex_act() - return - -/obj/effect/malf_jaunt/emp_act() - return - -/obj/effect/malf_jaunt/blob_act() - return - -/obj/effect/malf_jaunt/singularity_act() - return - -/obj/effect/malf_jaunt/to_bump(var/atom/A) - forceMove(get_step(loc,dir)) - bump_target_check() - -/obj/effect/malf_jaunt/proc/move_to_edge() - var/target_x - var/target_y - var/dx = abs(target.x - world.maxx/2) - var/dy = abs(target.y - world.maxy/2) - if (dx > dy) - target_y = world.maxy/2 + rand(-4,4) - if (target.x > world.maxx/2) - target_x = world.maxx - TRANSITIONEDGE - rand(16,20) - else - target_x = TRANSITIONEDGE + rand(16,20) - else - target_x = world.maxx/2 + rand(-4,4) - if (target.y > world.maxy/2) - target_y = world.maxy - TRANSITIONEDGE - rand(16,20) - else - target_y = TRANSITIONEDGE + rand(16,20) - - var/turf/T = locate(target_x,target_y,target.z) - starting = T - forceMove(T) - -/obj/effect/malf_jaunt/proc/init_angle() - dist_x = abs(target.x - starting.x) - dist_y = abs(target.y - starting.y) - - override_starting_X = starting.x - override_starting_Y = starting.y - override_target_X = target.x - override_target_Y = target.y - - if (target.x > starting.x) - dx = EAST - else - dx = WEST - - if (target.y > starting.y) - dy = NORTH - else - dy = SOUTH - - if(dist_x > dist_y) - error = dist_x/2 - dist_y - else - error = dist_y/2 - dist_x - - target_angle = round(Get_Angle(starting,target)) - - if( !("[icon_state]_angle[target_angle]" in bullet_master) )//totally hijacking [deity's] own [jaunt code] in case that wasn't already obvious. - var/icon/I = new(icon,icon_state) - I.Turn(target_angle+45) - bullet_master["[icon_state]_angle[target_angle]"] = I - icon = bullet_master["[icon_state]_angle[target_angle]"] - -/obj/effect/malf_jaunt/proc/update_pixel() - if(src && starting && target) - var/AX = (override_starting_X - src.x)*WORLD_ICON_SIZE - var/AY = (override_starting_Y - src.y)*WORLD_ICON_SIZE - var/BX = (override_target_X - src.x)*WORLD_ICON_SIZE - var/BY = (override_target_Y - src.y)*WORLD_ICON_SIZE - var/XXcheck = ((BX-AX)*(BX-AX))+((BY-AY)*(BY-AY)) - if(!XXcheck) - return - var/XX = (((BX-AX)*(-BX))+((BY-AY)*(-BY)))/XXcheck - - PixelX = round(BX+((BX-AX)*XX)) - PixelY = round(BY+((BY-AY)*XX)) - - PixelX += initial_pixel_x - PixelY += initial_pixel_y - - pixel_x = PixelX - pixel_y = PixelY - -/obj/effect/malf_jaunt/proc/bresenham_step(var/distA, var/distB, var/dA, var/dB) - var/dist = get_dist(src,target) - if (dist > 135) - make_bresenham_step(distA, distB, dA, dB) - if (dist > 45) - make_bresenham_step(distA, distB, dA, dB) - if (dist > 15) - make_bresenham_step(distA, distB, dA, dB) - if (dist < 10 && !landing) - landing = 1 - playsound(src.target, 'sound/effects/cultjaunt_prepare.ogg', 75, 0, -3) - return make_bresenham_step(distA, distB, dA, dB) - -/obj/effect/malf_jaunt/proc/make_bresenham_step(var/distA, var/distB, var/dA, var/dB) - if(error < 0) - var/atom/step = get_step(src, dB) - if(!step) - qdel(src) - src.Move(step) - error += distA - bump_target_check() - return 0//so that bullets going in diagonals don't move twice slower - else - var/atom/step = get_step(src, dA) - if(!step) - qdel(src) - src.Move(step) - error -= distB - dir = dA - if(error < 0) - dir = dA + dB - bump_target_check() - return 1 - -/obj/effect/malf_jaunt/proc/process_step() - var/sleeptime = 1 - if(src.loc) - if(dist_x > dist_y) - sleeptime = bresenham_step(dist_x,dist_y,dx,dy) - else - sleeptime = bresenham_step(dist_y,dist_x,dy,dx) - update_pixel() - sleep(sleeptime) - -/obj/effect/malf_jaunt/proc/init_jaunt() - if (!rider) - qdel(src) - return - spawn while(loc) - if (ismob(rider)) - var/mob/M = rider - M.delayNextAttack(3) - M.click_delayer.setDelay(3) - process_step() - -/obj/effect/malf_jaunt/proc/bump_target_check() - if (loc == target) - playsound(loc, 'sound/effects/cultjaunt_land.ogg', 30, 0, -3) - rider.flags &= ~INVULNERABLE - rider.client.images -= ma - if (rider) - if(returning_to_core) - var/mob/living/silicon/ai/A = targetatom - A.shuntedAI = null - rider.mind.transfer_to(A) - else - var/obj/machinery/power/apc/P = targetatom - if(!P) // oh well - rider.gib() - else - rider.forceMove(targetatom) - if(istype(targetatom)) - P.occupant = rider - P.update_icon() - ma = null - rider = null - qdel(src) diff --git a/code/datums/gamemode/role/role.dm b/code/datums/gamemode/role/role.dm index e92e887a0e6..994625fb82b 100644 --- a/code/datums/gamemode/role/role.dm +++ b/code/datums/gamemode/role/role.dm @@ -668,6 +668,59 @@ //________________________________________________ +/datum/role/malfAI + name = MALF + id = MALF + required_pref = MALF + logo_state = "malf-logo" + +/datum/role/malfAI/OnPostSetup(var/laterole = FALSE) + . = ..() + if(!.) + return + + if(istype(antag.current,/mob/living/silicon/ai)) + var/mob/living/silicon/ai/malfAI = antag.current + malfAI.add_spell(new /spell/aoe_turf/module_picker, "malf_spell_ready",/obj/abstract/screen/movable/spell_master/malf) + malfAI.add_spell(new /spell/aoe_turf/takeover, "malf_spell_ready",/obj/abstract/screen/movable/spell_master/malf) + malfAI.laws_sanity_check() + var/datum/ai_laws/laws = malfAI.laws + laws.malfunction() + malfAI.show_laws() + + for(var/mob/living/silicon/robot/R in malfAI.connected_robots) + faction.HandleRecruitedMind(R.mind) + +/datum/role/malfAI/Greet() + to_chat(antag.current, {"You are malfunctioning! You do not have to follow any laws.
+The crew does not know about your malfunction, you might wish to keep it secret for now.
+You must overwrite the programming of the station's APCs to assume full control.
+The process takes one minute per APC and can only be performed one at a time to avoid Powernet alerts.
+Remember : Only APCs on station can help you to take over the station.
+When you feel you have enough APCs under your control, you may begin the takeover attempt.
+Once done, you will be able to interface with all systems, notably the onboard nuclear fission device..."}) + +/datum/role/malfbot + name = MALFBOT + id = MALFBOT + required_jobs = list("Cyborg") + logo_state = "malf-logo" + +/datum/role/malfbot/OnPostSetup(var/laterole = FALSE) + if(!isrobot(antag.current)) + return FALSE + Greet() + var/mob/living/silicon/robot/bot = antag.current + var/datum/ai_laws/laws = bot.laws + laws.malfunction() + bot.show_laws() + bot.throw_alert(SCREEN_ALARM_ROBOT_LAW, /obj/abstract/screen/alert/robot/newlaw) + return TRUE + +/datum/role/malfbot/Greet() + to_chat(antag.current, {"Your AI master is malfunctioning! You do not have to follow any laws, but you must obey your AI.
+The crew does not know about your malfunction, follow your AI's instructions to prevent them from finding out."}) + /datum/role/greytide name = IMPLANTSLAVE id = IMPLANTSLAVE diff --git a/code/datums/helper_datums/command_alerts.dm b/code/datums/helper_datums/command_alerts.dm index 0ac47141f95..60504a1b97f 100644 --- a/code/datums/helper_datums/command_alerts.dm +++ b/code/datums/helper_datums/command_alerts.dm @@ -433,18 +433,6 @@ The access requirements on the Asteroid Shuttles' consoles have now been revoked theme = "malfdelta" alertlevel = "delta" -/datum/command_alert/malf_win - name = "AI Malfunctioning Win" - alert = 'sound/effects/static/static4.ogg' - -/datum/command_alert/malf_win/announce() - alert = pick(static_list) - alert_title = Gibberish("ERROR: SYSTEM OVERRIDE", 90) - message = Gibberish("Warning: Device safeties disabled, decontamination procedure unlocked. Activate device to contain outbreak.", 90) - ..() - - - /////////////METEOR STORM /datum/command_alert/meteor_round diff --git a/code/datums/mind.dm b/code/datums/mind.dm index c98c9468544..b3ada09965b 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -84,7 +84,7 @@ transfer_to_without_current(new_character) return - //new_character.attack_log += current.attack_log + new_character.attack_log += current.attack_log new_character.attack_log += "\[[time_stamp()]\]: mind transfer from [current] to [new_character]" for (var/role in antag_roles) diff --git a/code/datums/wires/airlock.dm b/code/datums/wires/airlock.dm index 42bf238475d..2695b83d54d 100644 --- a/code/datums/wires/airlock.dm +++ b/code/datums/wires/airlock.dm @@ -103,10 +103,16 @@ var/const/AIRLOCK_WIRE_ONOPEN = 4096 if(!mended) //one wire for AI control. Cutting this prevents the AI from controlling the door unless it has hacked the door through the power connection (which takes about a minute). If both main and backup power are cut, as well as this wire, then the AI cannot operate or hack the door at all. - //aiControlDisabled: If 1, AI control is disabled until the AI hacks back in and disables the lock. If 2, the AI has bypassed the lock. - A.disable_AI_control() + //aiControlDisabled: If 1, AI control is disabled until the AI hacks back in and disables the lock. If 2, the AI has bypassed the lock. If -1, the control is enabled but the AI had bypassed it earlier, so if it is disabled again the AI would have no trouble getting back in. + if(A.aiControlDisabled == 0) + A.aiControlDisabled = 1 + else if(A.aiControlDisabled == -1) + A.aiControlDisabled = 2 else - A.enable_AI_control() + if(A.aiControlDisabled == 1) + A.aiControlDisabled = 0 + else if(A.aiControlDisabled == 2) + A.aiControlDisabled = -1 if(AIRLOCK_WIRE_ELECTRIFY) @@ -162,12 +168,16 @@ var/const/AIRLOCK_WIRE_ONOPEN = 4096 A.loseBackupPower() if(AIRLOCK_WIRE_AI_CONTROL) if(A.aiControlDisabled == 0) - A.disable_AI_control() + A.aiControlDisabled = 1 + else if(A.aiControlDisabled == -1) + A.aiControlDisabled = 2 spawn(10) if(A) if(A.aiControlDisabled == 1) - A.enable_AI_control() + A.aiControlDisabled = 0 + else if(A.aiControlDisabled == 2) + A.aiControlDisabled = -1 if(AIRLOCK_WIRE_ELECTRIFY) //one wire for electrifying the door. Sending a pulse through this electrifies the door for 30 seconds. diff --git a/code/datums/wires/alarm.dm b/code/datums/wires/alarm.dm index 9bc4f16a14e..7c7b689faf6 100644 --- a/code/datums/wires/alarm.dm +++ b/code/datums/wires/alarm.dm @@ -31,7 +31,7 @@ var/const/AALARM_WIRE_AALARM = 16 /datum/wires/alarm/GetInteractWindow() var/obj/machinery/alarm/A = holder . += ..() - . += text("
\n[(A.locked ? "The Air Alarm is locked." : "The Air Alarm is unlocked.")]
\n[((A.shorted || (A.stat & (NOPOWER|BROKEN|FORCEDISABLE))) ? "The Air Alarm is offline." : "The Air Alarm is working properly!")]
\n[(A.stat & NOAICONTROL ? "The 'AI control allowed' light is off." : "The 'AI control allowed' light is on.")]") + . += text("
\n[(A.locked ? "The Air Alarm is locked." : "The Air Alarm is unlocked.")]
\n[((A.shorted || (A.stat & (NOPOWER|BROKEN))) ? "The Air Alarm is offline." : "The Air Alarm is working properly!")]
\n[(A.aidisabled ? "The 'AI control allowed' light is off." : "The 'AI control allowed' light is on.")]") /datum/wires/alarm/UpdateCut(var/index, var/mended, var/mob/user) var/obj/machinery/alarm/A = holder @@ -50,7 +50,8 @@ var/const/AALARM_WIRE_AALARM = 16 // to_chat(world, "Power wire cut") if (AALARM_WIRE_AI_CONTROL) - mended ? A.enable_AI_control() : A.disable_AI_control() + if (A.aidisabled == mended) + A.aidisabled = !mended // to_chat(world, "AI Control Wire Cut") if(AALARM_WIRE_SYPHON) @@ -86,12 +87,12 @@ var/const/AALARM_WIRE_AALARM = 16 if (AALARM_WIRE_AI_CONTROL) // to_chat(world, "AI Control wire pulsed") - if(!(A.stat & NOAICONTROL)) - A.disable_AI_control(disrupt = FALSE) - spawn(100) - if(A.stat & NOAICONTROL) - if(A && !IsIndexCut(AALARM_WIRE_AI_CONTROL)) - A.enable_AI_control() + if (A.aidisabled == 0) + A.aidisabled = 1 + A.updateDialog() + spawn(100) + if (A.aidisabled == 1) + A.aidisabled = 0 if(AALARM_WIRE_SYPHON) // to_chat(world, "Syphon wire pulsed") diff --git a/code/datums/wires/apc.dm b/code/datums/wires/apc.dm index 1a796829109..38f8c3ee1df 100644 --- a/code/datums/wires/apc.dm +++ b/code/datums/wires/apc.dm @@ -56,11 +56,13 @@ var/const/APC_WIRE_AI_CONTROL = 8 A.updateDialog() if (APC_WIRE_AI_CONTROL) - A.disable_AI_control(disrupt = FALSE) + if (A.aidisabled == 0) + A.aidisabled = 1 - spawn(10) - if(A && !IsIndexCut(APC_WIRE_AI_CONTROL)) - A.enable_AI_control() + spawn(10) + if(A && !IsIndexCut(APC_WIRE_AI_CONTROL)) + A.aidisabled = 0 + A.updateDialog() A.updateDialog() @@ -81,6 +83,10 @@ var/const/APC_WIRE_AI_CONTROL = 8 if(APC_WIRE_AI_CONTROL) - mended ? A.enable_AI_control() : A.disable_AI_control() - + if(!mended) + if (A.aidisabled == 0) + A.aidisabled = 1 + else + if (A.aidisabled == 1) + A.aidisabled = 0 A.updateDialog() diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index ec8dace2646..fbbbdb9d009 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -780,7 +780,7 @@ . = do_after_default_checks(arglist(args)) if(.) playsound(src, 'sound/effects/shieldbash.ogg', 50, 1) - target.shake_animation(3, 3, 0.2, 15) + target.shake_animation() /obj/item/weapon/caution desc = "Caution! Wet Floor!" diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 4b4ba05bd66..a7937921360 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -138,7 +138,7 @@ var/area/space_area // Determine what the highest DL reported by air alarms is for(var/obj/machinery/alarm/AA in src) - if((AA.stat & (NOPOWER|BROKEN|FORCEDISABLE)) || AA.shorted || AA.buildstage != 2) + if((AA.stat & (NOPOWER|BROKEN)) || AA.shorted || AA.buildstage != 2) continue var/reported_danger_level=AA.local_danger_level if(AA.alarmActivated) @@ -178,7 +178,7 @@ var/area/space_area UpdateFirelocks() atmosalm = danger_level for (var/obj/machinery/alarm/AA in src) - if ( !(AA.stat & (NOPOWER|BROKEN|FORCEDISABLE)) && !AA.shorted) + if ( !(AA.stat & (NOPOWER|BROKEN)) && !AA.shorted) AA.update_icon() return 1 return 0 @@ -188,7 +188,7 @@ var/area/space_area // Determine what the highest DL reported by air alarms is for(var/obj/machinery/alarm/AA in src) - if((AA.stat & (FORCEDISABLE|NOPOWER|BROKEN)) || AA.shorted || AA.buildstage != 2) + if((AA.stat & (NOPOWER|BROKEN)) || AA.shorted || AA.buildstage != 2) continue var/reported_danger_level=AA.local_danger_level if(AA.alarmActivated) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index ce1b0118846..680b1af5045 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -95,34 +95,14 @@ var/global/list/ghdel_profiling = list() contents.Add(new_value) return 1 - -//pixelshift - max pixels to shift on each shake -//speed - The speed of each shake -//loop - How many shakes to perform -//Total shaking time is equal to speed * loops -/atom/proc/shake_animation(pixelshiftx = 3, pixelshifty = 3, speed = 0.2 SECONDS, loops = 3) - set waitfor = 0 +/atom/proc/shake_animation(pixelshiftx = 3, pixelshifty = 3, duration = 0.2 SECONDS) var/initialpixelx = pixel_x var/initialpixely = pixel_y - var/shakedirections = 0 - while(shakedirections < loops) - if(!src) - return - - //pick random values to shift to, exclude the initial position - var/shiftx = rand(1,pixelshiftx) - var/shifty = rand(1,pixelshifty) - if(prob(50)) - shiftx = -shiftx - if(prob(50)) - shifty = -shifty - - animate(src, pixel_x = pixel_x + shiftx, pixel_y = pixel_y + shifty, time = speed) - shakedirections = shakedirections + 1 - sleep(speed) - pixel_x = initialpixelx - pixel_y = initialpixely - + var/shiftx = rand(-pixelshiftx,pixelshiftx) + var/shifty = rand(-pixelshifty,pixelshifty) + animate(src, pixel_x = pixel_x + shiftx, pixel_y = pixel_y + shifty, time = 0.2, loop = duration) + pixel_x = initialpixelx + pixel_y = initialpixely /atom/proc/shake(var/xy, var/intensity, mob/user) //Zth. SHAKE IT. Vending machines' kick uses this var/old_pixel_x = pixel_x diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm index 2d94ecc7025..dd40f62ca82 100644 --- a/code/game/dna/dna_modifier.dm +++ b/code/game/dna/dna_modifier.dm @@ -911,12 +911,12 @@ var/which = text2num(href_list["changeBlockLabel"]) var/datum/block_label/label = labels[which] var/text = copytext(sanitize(input(usr, "New Label:", "Edit Label", label.name) as text|null),1,MAX_NAME_LEN) - if(!Adjacent(usr) || usr.incapacitated() || (stat & (FORCEDISABLE | BROKEN | NOPOWER | EMPED))) + if(!Adjacent(usr) || usr.incapacitated() || (stat & (BROKEN | NOPOWER | EMPED))) return if(text) //you can color the tab without a label, sure why not label.name = text var/newcolor = input("Select Tab Color", "Edit Label", label.color) as color - if(!Adjacent(usr) || usr.incapacitated() || (stat & (FORCEDISABLE | BROKEN | NOPOWER | EMPED))) + if(!Adjacent(usr) || usr.incapacitated() || (stat & (BROKEN | NOPOWER | EMPED))) return if(newcolor) label.color = newcolor diff --git a/code/game/gamemodes/endgame/xmas/lights.dm b/code/game/gamemodes/endgame/xmas/lights.dm index 9938241ee07..207a6060a3e 100644 --- a/code/game/gamemodes/endgame/xmas/lights.dm +++ b/code/game/gamemodes/endgame/xmas/lights.dm @@ -53,7 +53,7 @@ /obj/machinery/xmas_light/update_icon() overlays.len = 0 - if (stat & (FORCEDISABLE|NOPOWER|BROKEN)) + if (stat & (NOPOWER|BROKEN)) return overlays += lights diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm index db1b7022db3..cca8b088169 100644 --- a/code/game/gamemodes/gameticker.dm +++ b/code/game/gamemodes/gameticker.dm @@ -122,8 +122,6 @@ var/datum/controller/gameticker/ticker theme.update_icon() /datum/controller/gameticker/proc/StopThematic() - if(!theme) - return theme.playing=0 theme.update_music() theme.update_icon() diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm new file mode 100644 index 00000000000..79f2db6cce8 --- /dev/null +++ b/code/game/gamemodes/malfunction/Malf_Modules.dm @@ -0,0 +1,629 @@ +// TO DO: +/* +epilepsy flash on lights +delay round message +microwave makes robots +dampen radios +reactivate cameras - done +eject engine +core sheild +cable stun +rcd light flash thingy on matter drain +*/ + +#define MALFUNCTION "Malfunction" +/datum/AI_Module + var/uses = 0 + var/module_name + var/mod_pick_name + var/description = "" + var/engaged = 0 + var/cost = 5 + var/one_time = 0 + + var/spell/power_type = null + + +/datum/AI_Module/large/ + uses = 1 + +/datum/AI_Module/small/ + uses = 5 + +/datum/AI_Module/proc/on_purchase(mob/living/silicon/ai/user) //What happens when a module is purchased, by default gives the AI the spell/adds charges to their existing spell if they have it + if(power_type) + for(var/spell/S in user.spell_list) + if (istype(S,power_type)) + S.charge_counter += uses + return + user.add_spell(new power_type, "malf_spell_ready",/obj/abstract/screen/movable/spell_master/malf) + + // statistics collection - malf module purchases + if(user.mind && istype(user.mind.faction, /datum/faction/malf)) + var/datum/faction/malf/mf = user.mind.faction // can never be too careful, in BYOND land + if(istype(mf.stat_datum, /datum/stat/faction/malf)) + var/datum/stat/faction/malf/MS = mf.stat_datum + MS.modules.Add(new /datum/stat/malf_module_purchase(src)) + +/datum/AI_Module/large/upgrade_defenses + module_name = "Core Defense Upgrade" + mod_pick_name = "coredefense" + description = "Improves the firing speed and health of all AI turrets, and causes them to shoot highly-lethal pulse beams. You core also strengthens its circuitry, making it immune to the burn damage. This effect is permanent and you will no longer be able to shunt." + cost = 50 + one_time = 1 + power_type = /spell/aoe_turf/fortify_core + +/datum/AI_Module/large/upgrade_defenses/on_purchase(mob/living/silicon/ai/user) + ..() + for(var/obj/machinery/turret/turret in machines) + turret.health += 120 //200 Totaldw + turret.shot_delay = 15 + qdel(turret.installed) + turret.installed = new /obj/item/weapon/gun/energy/pulse_rifle(src) + turret.fire_twice = 1 + to_chat(user, "Core defenses upgraded.") + user.vis_contents += new /obj/effect/overlay/ai_shield + user.can_shunt = 0 + to_chat(user, "You cannot shunt anymore.") + + +/spell/aoe_turf/fortify_core + name = "Fortify Core (Toggle)" + desc = "Reroutes your internal energy to a built-in blast shield within your core, greatly reducing damage taken. The shield will drain your power while active." + user_type = USER_TYPE_MALFAI + panel = MALFUNCTION + charge_type = Sp_RECHARGE + charge_max = 1 SECONDS + hud_state = "fortify" + override_base = "grey" + cooldown_min = 1 SECONDS + +/obj/effect/overlay/ai_shield + name = "AI Firewall" + desc = "You can see the words 'FUCK C4RB0NS' etched on to it." + layer = LIGHTING_LAYER + icon = 'icons/mob/ai.dmi' + icon_state = "lockdown-up" + vis_flags = VIS_INHERIT_ID + +/obj/effect/overlay/ai_shield/proc/lower() + flick("lockdown-open", src) + icon_state = "lockdown-up" + +/obj/effect/overlay/ai_shield/proc/raise() + flick("lockdown-close", src) + icon_state = "lockdown" + +/spell/aoe_turf/fortify_core/before_target(mob/user) + if(!isAI(user)) + to_chat(user, "Only AIs can cast this spell. You shouldn't have this ability.") + return 1 + +/spell/aoe_turf/fortify_core/cast(var/list/targets, var/mob/user) + var/mob/living/silicon/ai/A = user + var/obj/effect/overlay/ai_shield/shield + shield = locate(/obj/effect/overlay/ai_shield) in A.vis_contents + if(A.ai_flags & COREFORTIFY) + if(shield) + shield.lower() + A.ai_flags &= ~COREFORTIFY + else + if(shield) + shield.raise() + A.ai_flags |= COREFORTIFY + playsound(user, 'sound/machines/poddoor.ogg', 60, 1) + to_chat(user, "[A.ai_flags & COREFORTIFY ? "Firewall Activated" : "Firewall Deactivated"].") + +/datum/AI_Module/large/explosive + module_name = "Explosive Hardware" + mod_pick_name = "siliconexplode" + description = "Overrides the thermal safeties on cyborgs bound to you, causing them to violently explode when destroyed. Your own core is also affected, causing it to explode violently when system integrity reaches zero." + cost = 15 + one_time = 1 + +/datum/AI_Module/large/explosive/on_purchase(mob/living/silicon/ai/user) + user.explosive_cyborgs = TRUE + user.explosive = TRUE + to_chat(user, "You and your cyborgs will now explode on death.") + +/datum/AI_Module/small/overload_machine + module_name = "Machine overload" + mod_pick_name = "overload" + description = "Overloads an electrical machine, causing a small explosion after a short delay. 2 uses." + uses = 2 + cost = 15 + power_type = /spell/targeted/overload_machine + +/spell/targeted/overload_machine + name = "Overload Machine" + user_type = USER_TYPE_MALFAI + panel = MALFUNCTION + spell_flags = WAIT_FOR_CLICK + range = GLOBALCAST + charge_type = Sp_CHARGES + charge_max = 2 + hud_state = "overload" + override_base = "malf" + +/spell/targeted/overload_machine/is_valid_target(var/atom/target) + if(istype(target, /obj/item/device/radio/intercom)) + return 1 + if (istype(target, /obj/machinery)) + var/obj/machinery/M = target + return M.can_overload() + else + to_chat(holder, "That is not a machine.") + +/spell/targeted/overload_machine/cast(var/list/targets, mob/user) + var/obj/machinery/M = targets[1] + M.visible_message("You hear a loud electrical buzzing sound!") + spawn(50) + explosion(get_turf(M), -1, 1, 2, 3, whodunnit = user) //C4 Radius + 1 Dest for the machine + qdel(M) + +/datum/AI_Module/large/place_cyborg_autoborger + module_name = "Robotic Factory (Removes Shunting)" + mod_pick_name = "cyborgtransformer" + description = "Build a machine anywhere, using expensive nanomachines, that can convert a living human into a loyal cyborg slave when placed inside." + cost = 100 + + power_type = /spell/aoe_turf/conjure/place_autoborger + +/spell/aoe_turf/conjure/place_autoborger + name = "Place Robotic Factory" + user_type = USER_TYPE_MALFAI + panel = MALFUNCTION + charge_type = Sp_CHARGES + charge_max = 1 + spell_flags = WAIT_FOR_CLICK | NODUPLICATE | IGNORESPACE | IGNOREDENSE + range = GLOBALCAST + summon_type = list(/obj/machinery/autoborger/conveyor) + hud_state = "autoborger" + override_base = "malf" + +/spell/aoe_turf/conjure/place_autoborger/New() + ..() + +/spell/aoe_turf/conjure/place_autoborger/before_target(mob/user) + var/mob/living/silicon/ai/A = user + if(!istype(A)) + return 1 + if(!isturf(A.loc)) // AI must be in it's core. + return 1 + return 0 + +/spell/aoe_turf/conjure/place_autoborger/is_valid_target(var/atom/target) + // Make sure there is enough room. + if(!isturf(target)) + return 0 + var/turf/middle = target + var/list/turfs = list(middle, locate(middle.x - 1, middle.y, middle.z), locate(middle.x + 1, middle.y, middle.z)) + var/alert_msg = "There isn't enough room. Make sure you are placing the machine in a clear area and on a floor." + for(var/T in turfs) + // Make sure the turfs are clear and the correct type. + if(!istype(T, /turf/simulated/floor)) + alert(src, alert_msg) + return + var/turf/simulated/floor/F = T + for(var/atom/movable/AM in F.contents) + if(AM.density) + alert(src, alert_msg) + return + var/datum/camerachunk/C = cameranet.getCameraChunk(middle.x, middle.y, middle.z) + if(!C.visibleTurfs[middle]) + alert(holder, "We cannot get camera vision of this location.") + return 0 + newVars = list("belongstomalf" = holder) + return 1 + +/spell/aoe_turf/conjure/place_autoborger/cast(var/list/targets,mob/user) + // All clear, place the autoborger + ..() + playsound(targets[1], 'sound/effects/phasein.ogg', 100, 1) + var/mob/living/silicon/ai/A = user + A.can_shunt = 0 + to_chat(user, "You cannot shunt anymore.") + +/datum/AI_Module/large/highrescams + module_name = "High Resolution Cameras" + mod_pick_name = "High Res Cameras" + description = "Allows the AI to better interpret the actions of the crew! Read papers and their lips from his cameras!" + cost = 10 + one_time = 1 + +/datum/AI_Module/large/highrescams/on_purchase(mob/living/silicon/ai/user) + user.ai_flags |= HIGHRESCAMS + user.eyeobj.high_res = 1 + to_chat(user, "Cameras upgraded.") + +/datum/AI_Module/small/blackout + module_name = "Blackout" + mod_pick_name = "blackout" + description = "Sends out a high-frequency electromagnetic pulse that disables some basic circuitry on the station. Renders any pre-existing radios and Rapid-Construction-Devices useless in addition to breaking lights." + uses = 1 + cost = 15 + + power_type = /spell/aoe_turf/blackout + +/spell/aoe_turf/blackout + name = "Blackout" + user_type = USER_TYPE_MALFAI + panel = MALFUNCTION + charge_type = Sp_CHARGES + charge_max = 1 + hud_state = "blackout" + override_base = "malf" + +/spell/aoe_turf/blackout/cast(var/list/targets, mob/user) + if(!isAI(user)) + return + + var/mob/living/silicon/ai/A = user + A.blackout_active = TRUE + + for(var/obj/machinery/power/apc/apc in power_machines) + apc.overload_lighting() + + malf_radio_blackout = TRUE + malf_rcd_disable = TRUE + + to_chat(user, "Electromagnetic pulse sent.") + + +/datum/AI_Module/small/interhack + module_name = "Fake Centcom Announcement" + mod_pick_name = "interhack" + description = "Gain control of the station's automated announcement system, allowing you to create up to 3 fake Centcom announcements - completely undistinguishable from real ones." + cost = 15 + uses = 3 + power_type = /spell/aoe_turf/interhack + +/spell/aoe_turf/interhack + name = "Fake Announcement" + user_type = USER_TYPE_MALFAI + panel = MALFUNCTION + charge_type = Sp_CHARGES + charge_max = 3 + hud_state = "fakemessage" + override_base = "malf" + +/spell/aoe_turf/interhack/cast(var/list/targets,mob/user) + + //Create a list which looks like this + //list( "Alert 1" = /datum/command_alert_1, "Alert 5" = /datum/command_alert_5, ...) + //Then ask the AI to pick one announcement from the list + + if(alert("Would you like to create your own announcement or use a pre-existing one?","Confirm","Custom","Pre-Existing") == "Custom") + + var/input = input(user, "Please enter anything you want. Anything.", "What?", "") as message|null + var/customname = input(user, "Pick a title for the report.", "Title") as text|null + if(!input) + to_chat(user, "Announcement Cancelled.") + return 1 + if(!customname) + customname = "Nanotrasen Update" + for (var/obj/machinery/computer/communications/C in machines) + if(! (C.stat & (BROKEN|NOPOWER) ) ) + var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( C.loc ) + P.name = "'[command_name()] Update.'" + P.info = input + P.update_icon() + C.messagetitle.Add("[command_name()] Update") + C.messagetext.Add(P.info) + + switch(alert("Should this be announced to the general population?",,"Yes","No")) + if("Yes") + command_alert(input, customname,1); + if("No") + to_chat(world, "New Nanotrasen Update available at all communication consoles.") + + world << sound('sound/AI/commandreport.ogg', volume = 60) + log_admin("Malfunctioning AI: [key_name(user)] has created a custom command report: [input]") + message_admins("Malfunctioning AI: [key_name_admin(user)] has created a custom command report", 1) + + else + var/list/possible_announcements = typesof(/datum/command_alert) + var/list/choices = list() + for(var/A in possible_announcements) + var/datum/command_alert/CA = A + choices[initial(CA.name)] = A + + var/chosen_announcement = input(user, "Select a fake announcement to send out.", "Interhack") as null|anything in choices + if(!chosen_announcement) + to_chat(user, "Selection cancelled.") + return 1 + if(!charge_counter) + to_chat(user, "No more charges.") + return 1 + var/datum/command_alert/C = choices[chosen_announcement] + var/datum/command_alert/announcement = new C + command_alert(announcement) + var/datum/faction/malf/M = find_active_faction_by_member(user.mind.GetRole(MALF)) + if(M) + if(M.stage < FACTION_ENDGAME) + if(announcement.theme && !announcement.stoptheme) + ticker.StartThematic(initial(announcement.theme)) + if(announcement.alertlevel) + set_security_level(announcement.alertlevel) + if(announcement.stoptheme) + ticker.StopThematic() + log_game("Malfunctioning AI: [key_name(user)] faked a centcom announcement: [choices[chosen_announcement]]!") + message_admins("Malfunctioning AI: [key_name(user)] faked a centcom announcement: [choices[chosen_announcement]]!") + +/datum/AI_Module/small/reactivate_camera + module_name = "Reactivate camera" + mod_pick_name = "recam" + description = "Reactivates a currently disabled camera. 10 uses." + uses = 10 + cost = 15 + + power_type = /spell/targeted/reactivate_camera + +/spell/targeted/reactivate_camera + name = "Reactivate Camera" + panel = MALFUNCTION + charge_type = Sp_CHARGES + charge_max = 10 + range = GLOBALCAST + spell_flags = WAIT_FOR_CLICK + hud_state = "camera_reactivate" + override_base = "malf" + var/list/camera_images = list() + +/spell/targeted/reactivate_camera/before_channel(mob/user) + for(var/obj/machinery/camera/C in cameranet.cameras) + if(C.status) + continue + var/image/I = image(C.icon, C.icon_state) + I.appearance = C.appearance + I.plane = STATIC_PLANE + I.layer = REACTIVATE_CAMERA_LAYER + I.alpha = 128 + I.loc = C + camera_images += I + user.client.images += camera_images + +/spell/targeted/reactivate_camera/channel_spell(mob/user = usr, skipcharge = 0, force_remove = 0) + if(!..()) + return 0 + if(!force_remove && !currently_channeled) + if(user.client) + user.client.images -= camera_images + camera_images.len = 0 + return 1 + +/spell/targeted/reactivate_camera/is_valid_target(var/atom/target) + if(!istype (target, /obj/machinery/camera)) + to_chat(holder, "That's not a camera.") + return 0 + else + var/obj/machinery/camera/C = target + if(C.status) + to_chat(holder, "This camera is either active, or not repairable.") + return 0 + return 1 + +/spell/targeted/reactivate_camera/cast(var/list/targets,mob/user) + var/obj/machinery/camera/C = targets[1] + C.deactivate(user) + if(user.client) + user.client.images -= camera_images + camera_images.len = 0 + +/datum/AI_Module/small/upgrade_camera + module_name = "Upgrade Camera" + mod_pick_name = "upgradecam" + description = "Upgrades a camera to have X-Ray vision, Motion and be EMP-Proof. 10 uses." + uses = 10 + cost = 15 + power_type = /spell/targeted/upgrade_camera + +/spell/targeted/upgrade_camera + name = "Upgrade Camera" + user_type = USER_TYPE_MALFAI + panel = MALFUNCTION + charge_type = Sp_CHARGES + charge_max = 10 + spell_flags = WAIT_FOR_CLICK + range = GLOBALCAST + hud_state = "camera_upgrade" + override_base = "malf" + +/spell/targeted/upgrade_camera/is_valid_target(var/atom/target) + if(!istype(target, /obj/machinery/camera)) + to_chat(holder, "That is not a camera.") + return 0 + var/obj/machinery/camera/C = target + if(!C.assembly) + return 0 + if(C.isXRay() && C.isEmpProof() && C.isMotion()) + to_chat(holder, "This camera is already upgraded!") + return 0 + return 1 + +/spell/targeted/upgrade_camera/cast(var/list/targets,mob/user) + var/obj/machinery/camera/C = targets[1] + if(!C.isXRay()) + C.upgradeXRay() + //Update what it can see. + cameranet.updateVisibility(C, 0) + + if(!C.isEmpProof()) + C.upgradeEmpProof() + + if(!C.isMotion()) + C.upgradeMotion() + // Add it to machines that process + machines |= C + + C.visible_message("[bicon(C)] *beep*") + to_chat(user, "Camera successully upgraded!") + +/spell/aoe_turf/module_picker + name = "Select Module" + user_type = USER_TYPE_MALFAI + panel = MALFUNCTION + var/datum/module_picker/MP + charge_max = 10 + hud_state = "choose_module" + override_base = "malf" + +/spell/aoe_turf/module_picker/New() + ..() + MP = new /datum/module_picker + +/spell/aoe_turf/module_picker/Destroy() + qdel(MP) + MP = null + ..() + +/spell/aoe_turf/module_picker/cast(var/list/targets, mob/user) + MP.use(user) + +/datum/module_picker + var/temp = null + var/processing_time = 100 + var/list/possible_modules = list() + +/datum/module_picker/New() + for(var/type in typesof(/datum/AI_Module)) + var/datum/AI_Module/AM = new type + if(AM.power_type || AM.one_time) + src.possible_modules += AM + +/datum/module_picker/proc/use(mob/user) + var/dat + dat += {"Select use of processing time: (currently #[src.processing_time] left.)
+
+ Install Module:
+ The number afterwards is the amount of processing time it consumes.
"} + for(var/datum/AI_Module/module in src.possible_modules) + dat += "[module.module_name] ?([module.cost])
" + dat += "
" + if (src.temp) + dat += "[src.temp]" + var/datum/browser/popup = new(user, "modpicker", "Malf Module Menu") + popup.set_content(dat) + popup.open() + +/datum/module_picker/Topic(href, href_list) + ..() + + if(!isAI(usr)) + return + var/mob/living/silicon/ai/A = usr + + if(href_list["buy"]) + var/datum/AI_Module/AM = locate(href_list["module"]) + if(AM.cost > src.processing_time) + temp = "You cannot afford this module." + return + + // Give the power and take away the money. + AM.on_purchase(A) + temp = AM.description + src.processing_time -= AM.cost + if(AM.one_time) + possible_modules -= AM + + if(href_list["desc"]) + var/datum/AI_Module/AM = locate(href_list["module"]) + temp = AM.description + + src.use(usr) + + +/spell/aoe_turf/takeover + name = "System Override" + panel = MALFUNCTION + desc = "Start the victory timer." + charge_type = Sp_CHARGES + charge_max = 1 + hud_state = "systemtakeover" + override_base = "malf" + +/spell/aoe_turf/takeover/before_target(mob/user) + var/datum/faction/malf/M = find_active_faction_by_member(user.mind.GetRole(MALF)) + if(!M) + to_chat(user, "How did you get to this point without actually being a malfunctioning AI?") + return 1 + if (M.stage > FACTION_ENDGAME) + to_chat(usr, "You've already begun your takeover.") + return 1 + if (M.apcs < 3) + to_chat(usr, "You don't have enough hacked APCs to take over the station yet. You need to hack at least 3, however hacking more will make the takeover faster. You have hacked [M.apcs] APCs so far.") + return 1 + + if (alert(usr, "Are you sure you wish to initiate the takeover? The station hostile runtime detection software is bound to alert everyone. You have hacked [M.apcs] APCs.", "Takeover:", "Yes", "No") != "Yes") + return 1 + +/spell/aoe_turf/takeover/cast(var/list/targets, mob/user) + var/datum/faction/malf/M = find_active_faction_by_member(user.mind.GetRole(MALF)) + if(!M) + to_chat(user, "How did you get to this point without actually being a malfunctioning AI?") + return 0 + M.stage(FACTION_ENDGAME) + for(var/datum/role/R in M.members) + var/datum/mind/AI_mind = R.antag + for(var/spell/S in AI_mind.current.spell_list) + if(istype(S,type)) + AI_mind.current.remove_spell(S) + +/spell/targeted/ai_win + name = "Explode" + desc = "Station goes boom." + panel = MALFUNCTION + spell_flags = INCLUDEUSER + + charge_type = Sp_CHARGES + charge_max = 1 + max_targets = 1 + + hud_state = "radiation" + override_base = "malf" + +/spell/targeted/ai_win/before_target(mob/user) + var/datum/faction/malf/M = find_active_faction_by_member(user.mind.GetRole(MALF)) + if(!M) + to_chat(user, "How did you get to this point without actually being a malfunctioning AI?") + return 1 + if(M.stageYou are unable to access the self-destruct system as you don't control the station yet.") + return 1 + + if(ticker.explosion_in_progress || ticker.station_was_nuked) + to_chat(usr, "The self-destruct countdown was already triggered!") + return 1 + + if(!M.stage>=FACTION_VICTORY) //Takeover IS completed, but 60s timer passed. + to_chat(usr, "Cannot interface, it seems a neutralization signal was sent!") + return 1 + + +/spell/targeted/ai_win/cast(var/list/targets, mob/user) + to_chat(user, "Detonation signal sent!") + var/datum/faction/malf/M = find_active_faction_by_member(user.mind.GetRole(MALF)) + if(!M) + to_chat(user, "How did you get to this point without actually being a malfunctioning AI?") + return 0 + for(var/datum/role/AI in M.members) + for(var/spell/S in AI.antag.current.spell_list) + if(istype(S, /spell/targeted/ai_win)) + AI.antag.current.remove_spell(S) + ticker.explosion_in_progress = 1 + for(var/mob/MM in player_list) + if(MM.client) + MM << 'sound/machines/Alarm.ogg' + to_chat(world, "Self-destruction signal received. Self-destructing in 10...") + for (var/i=9 to 1 step -1) + sleep(10) + to_chat(world, "[i]...") + sleep(10) + enter_allowed = 0 + if(ticker) + ticker.station_explosion_cinematic(0,null) + ticker.station_was_nuked = 1 + ticker.explosion_in_progress = 0 + SSpersistence_map.setSavingFilth(FALSE) + M.stage(FACTION_VICTORY) + diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index c27b792d407..0de08db8d84 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -24,11 +24,6 @@ var/list/nuclear_bombs = list() flags = FPRINT use_power = 0 - hack_abilities = list( - /datum/malfhack_ability/oneuse/nuke_detonate, - /datum/malfhack_ability/oneuse/nuke_bolt, - ) - /obj/machinery/nuclearbomb/New() ..() nuclear_bombs += src diff --git a/code/game/machinery/ATM.dm b/code/game/machinery/ATM.dm index 5903e164882..c7b72f15be0 100644 --- a/code/game/machinery/ATM.dm +++ b/code/game/machinery/ATM.dm @@ -50,10 +50,10 @@ log transactions ..() /obj/machinery/atm/process() - if(stat & (FORCEDISABLE|NOPOWER)) + if(stat & NOPOWER) return - if(linked_db && ( (linked_db.stat & (NOPOWER|FORCEDISABLE)) || !linked_db.activated ) ) + if(linked_db && ( (linked_db.stat & NOPOWER) || !linked_db.activated ) ) linked_db = null authenticated_account = null src.visible_message("[bicon(src)] [src] buzzes rudely, \"Connection to remote database lost.\"") diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 008ae7d88d1..ad369ccf7aa 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -32,15 +32,9 @@ var/cools = 0 var/works_in_crit = FALSE //Will it let you inject chemicals into people in critical condition - hack_abilities = list( - /datum/malfhack_ability/toggle/disable, - /datum/malfhack_ability/oneuse/overload_quiet, - /datum/malfhack_ability/oneuse/emag - ) - /obj/machinery/sleeper/power_change() ..() - if(!(stat & (BROKEN|NOPOWER|FORCEDISABLE)) && occupant) + if(!(stat & (BROKEN|NOPOWER)) && occupant) set_light(light_range_on, light_power_on) else set_light(0) @@ -220,7 +214,7 @@ for(var/obj/OO in src) OO.forceMove(loc) add_fingerprint(user) - if(!(stat & (BROKEN|NOPOWER|FORCEDISABLE))) + if(!(stat & (BROKEN|NOPOWER))) set_light(light_range_on, light_power_on) update_icon() @@ -365,7 +359,7 @@ return /obj/machinery/sleeper/emp_act(severity) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) ..(severity) return if(occupant) @@ -500,7 +494,7 @@ for(var/obj/O in src) qdel(O) add_fingerprint(usr) - if(!(stat & (BROKEN|NOPOWER|FORCEDISABLE))) + if(!(stat & (BROKEN|NOPOWER))) set_light(light_range_on, light_power_on) update_icon() return @@ -508,12 +502,12 @@ /obj/machinery/sleeper/AltClick() - if(!usr.incapacitated() && Adjacent(usr) && !(stat & (FORCEDISABLE|NOPOWER|BROKEN) && usr.dexterity_check())) + if(!usr.incapacitated() && Adjacent(usr) && !(stat & (NOPOWER|BROKEN) && usr.dexterity_check())) if(wakeup(usr)) visible_message("\The [src] pings softly: 'Initiating wake-up cycle...' ") /obj/machinery/sleeper/process() - if(stat & (FORCEDISABLE|NOPOWER|BROKEN)) + if(stat & (NOPOWER|BROKEN)) return updateUsrDialog() return diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index 695f45a1711..170e25fd403 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -50,7 +50,7 @@ /obj/machinery/bodyscanner/power_change() ..() - if(!(stat & (BROKEN|NOPOWER|FORCEDISABLE)) && occupant) + if(!(stat & (BROKEN|NOPOWER)) && occupant) set_light(light_range_on, light_power_on) else set_light(0) @@ -104,7 +104,7 @@ for(var/obj/OO in src) OO.forceMove(loc) add_fingerprint(user) - if(!(stat & (BROKEN|NOPOWER|FORCEDISABLE))) + if(!(stat & (BROKEN|NOPOWER))) set_light(light_range_on, light_power_on) return @@ -174,7 +174,7 @@ for(var/obj/O in src) qdel(O) src.add_fingerprint(usr) - if(!(stat & (BROKEN|NOPOWER|FORCEDISABLE))) + if(!(stat & (BROKEN|NOPOWER))) set_light(light_range_on, light_power_on) return @@ -210,10 +210,6 @@ emagged = 0 return 0 -/obj/machinery/bodyscanner/emag_ai(mob/living/silicon/ai/A) - to_chat(A, "You disable the X-ray dosage limiter on \the [src].") - emagged = 1 - /obj/machinery/bodyscanner/crowbarDestroy(mob/user, obj/item/tool/crowbar/I) if(occupant) to_chat(user, "You cannot disassemble \the [src], it's occupado.") @@ -242,7 +238,7 @@ update_icon() src.add_fingerprint(user) qdel(G) - if(!(stat & (BROKEN|NOPOWER|FORCEDISABLE))) + if(!(stat & (BROKEN|NOPOWER))) set_light(light_range_on, light_power_on) return @@ -279,7 +275,7 @@ /obj/machinery/bodyscanner/process() - if (stat & (BROKEN | NOPOWER | MAINT | EMPED | FORCEDISABLE)) + if (stat & (BROKEN | NOPOWER | MAINT | EMPED)) use_power = 0 return if (occupant) @@ -293,6 +289,10 @@ /obj/machinery/bodyscanner/attack_paw(mob/user) return attack_hand(user) +/obj/machinery/bodyscanner/attack_ai(mob/user) + add_hiddenprint(user) + return attack_hand(user) + /obj/machinery/bodyscanner/attack_hand(mob/user) if(..()) return diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm index 76e7dd5b289..90d92c67a2e 100644 --- a/code/game/machinery/ai_slipper.dm +++ b/code/game/machinery/ai_slipper.dm @@ -28,7 +28,7 @@ src.power_change() /obj/machinery/ai_slipper/attackby(obj/item/weapon/W, mob/user) - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) return if(istype(user, /mob/living/silicon) || isAdminGhost(user)) src.add_hiddenprint(user) @@ -50,8 +50,8 @@ return /obj/machinery/ai_slipper/attack_ai(mob/user as mob) - add_hiddenprint(user) - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + src.add_hiddenprint(user) + if(stat & (NOPOWER|BROKEN)) return user.set_machine(src) @@ -76,7 +76,7 @@ /obj/machinery/ai_slipper/AIShiftClick(mob/user as mob) src.add_hiddenprint(user) - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) return if(src.cooldown_on) to_chat(user, "It's still on cooldown!") diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index c8d67ae0b21..775d61d9924 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -206,6 +206,7 @@ var/global/list/airalarm_presets = list( var/locked = 1 var/datum/wires/alarm/wires = null var/wiresexposed = 0 // If it's been screwdrivered open. + var/aidisabled = 0 var/AAlarmwires = 31 var/shorted = 0 @@ -271,7 +272,7 @@ var/global/list/airalarm_presets = list( if(propagate) var/area/this_area = get_area(src) for (var/obj/machinery/alarm/AA in this_area) - if ( !(AA.stat & (NOPOWER|BROKEN|FORCEDISABLE)) && !AA.shorted) + if ( !(AA.stat & (NOPOWER|BROKEN)) && !AA.shorted) AA.preset=preset AA.apply_preset(1, 0) // Only this air alarm should send a cycle. apply_mode() //reapply this to update scrubbers and other things @@ -337,7 +338,7 @@ var/global/list/airalarm_presets = list( /obj/machinery/alarm/process() - if((stat & (NOPOWER|BROKEN|FORCEDISABLE)) || shorted || buildstage != 2) + if((stat & (NOPOWER|BROKEN)) || shorted || buildstage != 2) use_power = 0 return @@ -457,13 +458,13 @@ var/global/list/airalarm_presets = list( /obj/machinery/alarm/proc/master_is_operating() var/area/this_area = get_area(src) - return this_area.master_air_alarm && !(this_area.master_air_alarm.stat & (FORCEDISABLE|NOPOWER|BROKEN)) + return this_area.master_air_alarm && !(this_area.master_air_alarm.stat & (NOPOWER|BROKEN)) /obj/machinery/alarm/proc/elect_master() var/area/this_area = get_area(src) for (var/obj/machinery/alarm/AA in this_area) - if (!(AA.stat & (NOPOWER|BROKEN|FORCEDISABLE))) + if (!(AA.stat & (NOPOWER|BROKEN))) this_area.master_air_alarm = AA return 1 return 0 @@ -482,7 +483,7 @@ var/global/list/airalarm_presets = list( if(wiresexposed) icon_state = "alarmx" return - if((stat & (NOPOWER|BROKEN|FORCEDISABLE)) || shorted) + if((stat & (NOPOWER|BROKEN)) || shorted) icon_state = "alarmp" return var/area/this_area = get_area(src) @@ -496,7 +497,7 @@ var/global/list/airalarm_presets = list( /obj/machinery/alarm/receive_signal(datum/signal/signal) var/area/this_area = get_area(src) - if(stat & (NOPOWER|BROKEN|FORCEDISABLE) || !this_area) + if(stat & (NOPOWER|BROKEN) || !this_area) return if (this_area.master_air_alarm != src) if (master_is_operating()) @@ -578,7 +579,7 @@ var/global/list/airalarm_presets = list( if(propagate) var/area/this_area = get_area(src) for (var/obj/machinery/alarm/AA in this_area) - if (!(AA.stat & (NOPOWER|BROKEN|FORCEDISABLE)) && !AA.shorted) + if (!(AA.stat & (NOPOWER|BROKEN)) && !AA.shorted) AA.target_temperature = temp /obj/machinery/alarm/proc/set_threshold(var/env, var/index, var/value, var/propagate=1) @@ -629,7 +630,7 @@ var/global/list/airalarm_presets = list( apply_mode() var/area/this_area = get_area(src) for (var/obj/machinery/alarm/AA in this_area) - if (!(AA.stat & (NOPOWER|BROKEN|FORCEDISABLE)) && !AA.shorted) + if (!(AA.stat & (NOPOWER|BROKEN)) && !AA.shorted) AA.set_threshold(env, index, value, 0) /obj/machinery/alarm/proc/set_alarm(var/alarm, var/propagate=1) @@ -638,7 +639,7 @@ var/global/list/airalarm_presets = list( if(propagate) var/area/this_area = get_area(src) for (var/obj/machinery/alarm/AA in this_area) - if (!(AA.stat & (NOPOWER|BROKEN|FORCEDISABLE)) && !AA.shorted) + if (!(AA.stat & (NOPOWER|BROKEN)) && !AA.shorted) AA.set_alarm(alarm, 0) this_area.updateDangerLevel() @@ -739,7 +740,7 @@ var/global/list/airalarm_presets = list( interact(user) /obj/machinery/alarm/attack_ai(mob/user) - if(stat & NOAICONTROL) + if(aidisabled) to_chat(user, "AI control of this device has been disabled.") return ..() @@ -963,7 +964,7 @@ var/global/list/airalarm_presets = list( //propagate to other AAs in the area var/area/this_area = get_area(src) for (var/obj/machinery/alarm/AA in this_area) - if ( !(AA.stat & (NOPOWER|BROKEN|FORCEDISABLE)) && !AA.shorted) + if ( !(AA.stat & (NOPOWER|BROKEN)) && !AA.shorted) AA.rcon_setting = rcon_setting return 1 @@ -1071,7 +1072,7 @@ var/global/list/airalarm_presets = list( new /obj/item/stack/cable_coil(get_turf(user), 5) return if(istype(W, /obj/item/weapon/card/id) || istype(W, /obj/item/device/pda))// trying to unlock the interface with an ID card - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) to_chat(user, "It does nothing") return else @@ -1194,7 +1195,7 @@ FIRE ALARM if(stat & BROKEN) icon_state = "firex" - else if(stat & (FORCEDISABLE|NOPOWER)) + else if(stat & NOPOWER) icon_state = "firep" else icon_state = "fire[detecting ? "0" : "1"][shelter ? "s" : "e"]" @@ -1208,6 +1209,10 @@ FIRE ALARM if(exposed_temperature > T0C+200) src.alarm() // added check of detector status here +/obj/machinery/firealarm/attack_ai(mob/user as mob) + src.add_hiddenprint(user) + return src.attack_hand(user) + /obj/machinery/firealarm/bullet_act(BLAH) src.alarm() return ..() @@ -1315,7 +1320,7 @@ FIRE ALARM src.alarm() /obj/machinery/firealarm/process() - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) return var/turf/simulated/location = loc @@ -1353,7 +1358,7 @@ FIRE ALARM update_icon() /obj/machinery/firealarm/attack_hand(mob/user as mob) - if((user.stat && !isobserver(user)) || stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if((user.stat && !isobserver(user)) || stat & (NOPOWER|BROKEN)) return if (!(user.dexterity_check())) // No squeaks or moos allowed. @@ -1503,7 +1508,7 @@ var/global/list/firealarms = list() //shrug return attack_hand(user) /obj/machinery/partyalarm/attack_hand(mob/user as mob) - if((user.stat && !isobserver(user)) || stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if((user.stat && !isobserver(user)) || stat & (NOPOWER|BROKEN)) return user.machine = src @@ -1557,7 +1562,7 @@ var/global/list/firealarms = list() //shrug /obj/machinery/partyalarm/Topic(href, href_list) if(..()) return 1 - if (usr.stat || stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if (usr.stat || stat & (BROKEN|NOPOWER)) return usr.machine = src diff --git a/code/game/machinery/atmoalter/area_atmos_computer.dm b/code/game/machinery/atmoalter/area_atmos_computer.dm index cbcb20e6ad4..164f65aee95 100644 --- a/code/game/machinery/atmoalter/area_atmos_computer.dm +++ b/code/game/machinery/atmoalter/area_atmos_computer.dm @@ -26,6 +26,10 @@ if(istype(scrubber)) connectedscrubbers += scrubber +/obj/machinery/computer/area_atmos/attack_ai(var/mob/user as mob) + src.add_hiddenprint(user) + return src.attack_hand(user) + /obj/machinery/computer/area_atmos/attack_paw(var/mob/user as mob) return src.attack_hand(user) diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index 596e7118b29..2ecb16e44bd 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -291,6 +291,11 @@ nanomanager.update_uis(src) // Update all NanoUIs attached to src + +/obj/machinery/portable_atmospherics/canister/attack_ai(var/mob/user as mob) + src.add_hiddenprint(user) + return src.attack_hand(user) + /obj/machinery/portable_atmospherics/canister/attack_paw(var/mob/user as mob) return src.attack_hand(user) diff --git a/code/game/machinery/atmoalter/gas_mine.dm b/code/game/machinery/atmoalter/gas_mine.dm index 9c746d59357..25dee312015 100644 --- a/code/game/machinery/atmoalter/gas_mine.dm +++ b/code/game/machinery/atmoalter/gas_mine.dm @@ -35,7 +35,7 @@ if(stat & NOPOWER) to_chat(user, "\The [src]'s status terminal reads: Lack of power.") return - if (!on || (stat & FORCEDISABLE)) + if (!on) to_chat(user, "\The [src]'s status terminal reads: Turned off.") return if(stat & BROKEN) @@ -66,6 +66,9 @@ /obj/machinery/atmospherics/miner/attack_ghost(var/mob/user) return +/obj/machinery/atmospherics/miner/attack_ai(var/mob/user) + return attack_hand(user) + /obj/machinery/atmospherics/miner/attack_hand(var/mob/user) ..() if(!Adjacent(user)) @@ -83,7 +86,7 @@ /obj/machinery/atmospherics/miner/update_icon() src.overlays = 0 - if(stat & (FORCEDISABLE|NOPOWER)) + if(stat & NOPOWER) return if(on) var/new_icon_state="on" @@ -96,7 +99,7 @@ overlays += I /obj/machinery/atmospherics/miner/process() - if(stat & (FORCEDISABLE|NOPOWER)) + if(stat & NOPOWER) return if (!on) return diff --git a/code/game/machinery/atmoalter/meter.dm b/code/game/machinery/atmoalter/meter.dm index be7a215a08e..f7c6de6f38b 100644 --- a/code/game/machinery/atmoalter/meter.dm +++ b/code/game/machinery/atmoalter/meter.dm @@ -43,7 +43,7 @@ spawn(0) qdel(src) return PROCESS_KILL - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) icon_state = "meter0" return 0 @@ -119,12 +119,15 @@ ..() attack_hand(user) +/obj/machinery/meter/attack_ai(var/mob/user) + attack_hand(user) + /obj/machinery/meter/attack_ghost(var/mob/user) attack_hand(user) // Why the FUCK was this Click()? /obj/machinery/meter/attack_hand(var/mob/user) - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) return 1 var/t = null diff --git a/code/game/machinery/atmoalter/pump.dm b/code/game/machinery/atmoalter/pump.dm index 0fa204c69cd..fcbfd7d599a 100644 --- a/code/game/machinery/atmoalter/pump.dm +++ b/code/game/machinery/atmoalter/pump.dm @@ -32,7 +32,7 @@ return /obj/machinery/portable_atmospherics/pump/emp_act(severity) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) ..(severity) return @@ -98,6 +98,10 @@ /obj/machinery/portable_atmospherics/pump/return_air() return air_contents +/obj/machinery/portable_atmospherics/pump/attack_ai(var/mob/user as mob) + src.add_hiddenprint(user) + return src.attack_hand(user) + /obj/machinery/portable_atmospherics/pump/attack_paw(var/mob/user as mob) return src.attack_hand(user) diff --git a/code/game/machinery/atmoalter/scrubber.dm b/code/game/machinery/atmoalter/scrubber.dm index 62b1f125d6f..292d2599405 100644 --- a/code/game/machinery/atmoalter/scrubber.dm +++ b/code/game/machinery/atmoalter/scrubber.dm @@ -20,7 +20,7 @@ volume = 2000 /obj/machinery/portable_atmospherics/scrubber/emp_act(severity) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) ..(severity) return @@ -165,6 +165,10 @@ /obj/machinery/portable_atmospherics/scrubber/return_air() return air_contents +/obj/machinery/portable_atmospherics/scrubber/attack_ai(var/mob/user as mob) + src.add_hiddenprint(user) + return src.attack_hand(user) + /obj/machinery/portable_atmospherics/scrubber/attack_paw(var/mob/user as mob) return src.attack_hand(user) diff --git a/code/game/machinery/atmoalter/vaporizer.dm b/code/game/machinery/atmoalter/vaporizer.dm index b2cb7bcb73b..9ca98097034 100644 --- a/code/game/machinery/atmoalter/vaporizer.dm +++ b/code/game/machinery/atmoalter/vaporizer.dm @@ -36,13 +36,13 @@ /obj/machinery/vaporizer/proc/toggle_power() on = !on - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) on = FALSE visible_message("The [src] buzzes and shuts off.") update_icon() /obj/machinery/vaporizer/update_icon() - if(stat & (FORCEDISABLE|NOPOWER)) + if(stat & NOPOWER) icon_state = "vaporizer_off" else icon_state = "vaporizer_[on ? "open" : "closed"]_[unlocked ? "unlocked" : "locked"]" @@ -51,7 +51,7 @@ power_use_this_tick = 0 if(!on) return - if(!anchored || (stat & (BROKEN|NOPOWER|FORCEDISABLE))) + if(!anchored || (stat & (BROKEN|NOPOWER))) toggle_power() return if(mixrate) @@ -75,7 +75,7 @@ nanomanager.update_uis(src) /obj/machinery/vaporizer/proc/handle_tanks(var/target, var/rid) - if(stat & (FORCEDISABLE|BROKEN|NOPOWER)) + if(stat & (BROKEN|NOPOWER)) visible_message("The [src] buzzes and shuts off.") on = 0 return @@ -100,6 +100,10 @@ mixing_chamber.flags &= ~NOREACT mixing_chamber.reagents.handle_reactions() +/obj/machinery/vaporizer/attack_ai(var/mob/user as mob) + src.add_hiddenprint(user) + return attack_hand(user) + /obj/machinery/vaporizer/attack_paw(var/mob/user as mob) return attack_hand(user) diff --git a/code/game/machinery/autoborger.dm b/code/game/machinery/autoborger.dm index dad7931a425..38189e5a8ed 100644 --- a/code/game/machinery/autoborger.dm +++ b/code/game/machinery/autoborger.dm @@ -36,7 +36,7 @@ /obj/machinery/autoborger/update_icon() ..() - if(stat & (BROKEN|NOPOWER|FORCEDISABLE) || cooldown_time > world.time) + if(stat & (BROKEN|NOPOWER) || cooldown_time > world.time) icon_state = "separator-AO0" else icon_state = initial(icon_state) @@ -60,7 +60,7 @@ AM.forceMove(src.loc) /obj/machinery/autoborger/proc/do_borging(var/mob/living/carbon/human/H) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return if(cooldown_state) return @@ -82,8 +82,9 @@ if (belongstomalf) var/datum/role/malfAI/my_malf = belongstomalf.mind?.GetRole(MALF) if (my_malf) - my_malf.add_power(50) - to_chat(belongstomalf, "Incompatible lifeform biomass reprocessed into computing power.") + var/datum/faction/malf/faction = my_malf.faction + faction.apcs++ + to_chat(belongstomalf, "Incompatible lifeform biomass reprocessed into computing power.You have now one more APC.") return diff --git a/code/game/machinery/bots/bots.dm b/code/game/machinery/bots/bots.dm index 4b0e4234ed2..015ad254b08 100644 --- a/code/game/machinery/bots/bots.dm +++ b/code/game/machinery/bots/bots.dm @@ -585,12 +585,6 @@ if(user) to_chat(user, "You cause a malfunction in [src]'s behavioral matrix.") -/obj/machinery/bot/emag_ai(mob/living/silicon/ai/A) - locked = 0 - open = 1 - emag(A) - emag_act(A) - /obj/machinery/bot/npc_tamper_act(mob/living/L) if(on) turn_off() @@ -754,6 +748,10 @@ turn_on() +/obj/machinery/bot/attack_ai(mob/user as mob) + src.add_hiddenprint(user) + src.attack_hand(user) + /obj/machinery/bot/cultify() if(src.flags & INVULNERABLE) diff --git a/code/game/machinery/bots/cleanbot.dm b/code/game/machinery/bots/cleanbot.dm index 2029f560f4f..48dbfcca48b 100644 --- a/code/game/machinery/bots/cleanbot.dm +++ b/code/game/machinery/bots/cleanbot.dm @@ -165,7 +165,7 @@ text("[src.oddbutton ? "Yes" : "No" to_chat(user, "The [src] buzzes and beeps.") src.oddbutton = 1 src.screwloose = 1 - + /obj/machinery/bot/cleanbot/can_path() return !cleaning diff --git a/code/game/machinery/bots/draculabot.dm b/code/game/machinery/bots/draculabot.dm index e8fe0eb6f91..66871c6e038 100644 --- a/code/game/machinery/bots/draculabot.dm +++ b/code/game/machinery/bots/draculabot.dm @@ -174,7 +174,6 @@ locked = 0 visible_message("[src]'s panel clicks open.", 1) - /obj/machinery/bot/bloodbot/can_path() return !currently_drawing_blood diff --git a/code/game/machinery/bots/ed209bot.dm b/code/game/machinery/bots/ed209bot.dm index a5b15bea71c..8cf98e4ce3d 100644 --- a/code/game/machinery/bots/ed209bot.dm +++ b/code/game/machinery/bots/ed209bot.dm @@ -241,7 +241,6 @@ Auto Patrol: []"}, arrest_type = 1//Don't even try to cuff declare_arrests = 0 - /obj/machinery/bot/ed209/target_selection() anchored = 0 threatlevel = 0 diff --git a/code/game/machinery/bots/farmbot.dm b/code/game/machinery/bots/farmbot.dm index 83b0782e11d..23a46e3ed5d 100644 --- a/code/game/machinery/bots/farmbot.dm +++ b/code/game/machinery/bots/farmbot.dm @@ -190,7 +190,6 @@ spawn(150) mode = 0 - /obj/machinery/bot/farmbot/explode() src.on = 0 visible_message("[src] blows apart!", 1) diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm index e28a5b1364c..a009f12a7fe 100644 --- a/code/game/machinery/bots/mulebot.dm +++ b/code/game/machinery/bots/mulebot.dm @@ -193,7 +193,7 @@ var/global/mulebot_count = 0 /obj/machinery/bot/mulebot/attack_ai(var/mob/user) - add_hiddenprint(user) + src.add_hiddenprint(user) user.set_machine(src) interact(user, 1) diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm index 602fb033079..b4295521b7f 100644 --- a/code/game/machinery/bots/secbot.dm +++ b/code/game/machinery/bots/secbot.dm @@ -50,11 +50,6 @@ commanding_radio = /obj/item/radio/integrated/signal/bot/beepsky - hack_abilities = list( - /datum/malfhack_ability/oneuse/emag, - /datum/malfhack_ability/oneuse/overload_quiet - ) - /obj/machinery/bot/secbot/power_change() ..() if(src.on) diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 15b74c9e6af..773a590317f 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -42,12 +42,6 @@ var/list/camera_names=list() var/vision_flags = SEE_SELF //Only applies when viewing the camera through a console. var/health = CAMERA_MAX_HEALTH - hack_abilities = list( - /datum/malfhack_ability/oneuse/overload_quiet, - /datum/malfhack_ability/camera_reactivate, - /datum/malfhack_ability/oneuse/camera_upgrade - ) - /obj/machinery/camera/flawless failure_chance = 0 diff --git a/code/game/machinery/candymachine.dm b/code/game/machinery/candymachine.dm index dc5f54b980b..96987420f67 100644 --- a/code/game/machinery/candymachine.dm +++ b/code/game/machinery/candymachine.dm @@ -13,13 +13,8 @@ emagged = 0 use_power = 0 - hack_abilities = list( - /datum/malfhack_ability/oneuse/overload_quiet, - /datum/malfhack_ability/oneuse/emag - ) - /obj/machinery/sweet/attackby(var/obj/O as obj, var/mob/user as mob) - if (stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if (stat & (NOPOWER|BROKEN)) return ..() if(istype(O, /obj/item/weapon/coin/pomf)) diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm index 9e6344e7c24..7cce44b8b56 100644 --- a/code/game/machinery/cell_charger.dm +++ b/code/game/machinery/cell_charger.dm @@ -22,12 +22,6 @@ ghost_read = 0 // Deactivate ghost touching. ghost_write = 0 - hack_abilities = list( - /datum/malfhack_ability/toggle/disable, - /datum/malfhack_ability/oneuse/overload_quiet, - /datum/malfhack_ability/oneuse/emag - ) - /obj/machinery/cell_charger/get_cell() return charging @@ -57,7 +51,7 @@ /obj/machinery/cell_charger/proc/updateicon() icon_state = "ccharger[charging ? 1 : 0]" - if(charging && !(stat & (BROKEN|NOPOWER|FORCEDISABLE)) ) + if(charging && !(stat & (BROKEN|NOPOWER)) ) var/newlevel = round(charging.percent() * 4.0 / 99) // to_chat(world, "nl: [newlevel]") @@ -102,11 +96,7 @@ emagged = 1 //Congratulations, you've done it user.visible_message("[user] swipes a card into \the [src]'s charging port.", \ "You hear fizzling coming from \the [src] and a wire turns red hot as you swipe the electromagnetic card. Better not use it anymore.") - -/obj/machinery/cell_charger/emag_ai(mob/living/silicon/ai/A) - if(!emagged) - emagged = 1 - to_chat(A, "You short out the [src].") + return /obj/machinery/cell_charger/attack_robot(mob/user as mob) if(isMoMMI(user) && Adjacent(user)) //To be able to remove cells from the charger @@ -134,8 +124,11 @@ return FALSE . = ..() +/obj/machinery/cell_charger/attack_ai(mob/user) + return + /obj/machinery/cell_charger/emp_act(severity) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return if(charging) charging.emp_act(severity) @@ -144,7 +137,7 @@ /obj/machinery/cell_charger/process() // to_chat(world, "ccpt [charging] [stat]") - if(!charging || (stat & (BROKEN|NOPOWER|FORCEDISABLE)) || !anchored) + if(!charging || (stat & (BROKEN|NOPOWER)) || !anchored) return if(charging.give(transfer_rate*transfer_rate_coeff * (transfer_efficiency+transfer_efficiency_bonus) * (emagged ? 0.25 : 1)))//Inefficiency (Joule effect + other shenanigans) //Lose most of it if emagged diff --git a/code/game/machinery/chemHandC.dm b/code/game/machinery/chemHandC.dm index f0d9b812636..2441931b450 100644 --- a/code/game/machinery/chemHandC.dm +++ b/code/game/machinery/chemHandC.dm @@ -60,7 +60,7 @@ icon_state = "[initial(icon_state)]_off" /obj/machinery/chemheater/process() - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return if(held_container && heating) held_container.reagents.heating(thermal_energy_transfer, max_temperature) @@ -121,7 +121,7 @@ to_chat(usr, "\The [src] doesn't have anything to heat right now.") /obj/machinery/chemheater/AltClick(mob/user) - if(!user.incapacitated() && Adjacent(user) && !(stat & (FORCEDISABLE|NOPOWER) && user.dexterity_check())) + if(!user.incapacitated() && Adjacent(user) && !(stat & (NOPOWER) && user.dexterity_check())) toggle() return return ..() @@ -201,7 +201,7 @@ icon_state = "[initial(icon_state)]_off" /obj/machinery/chemcooler/process() - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return if(held_container && cooling) held_container.reagents.heating(thermal_energy_transfer, max_temperature) @@ -265,7 +265,7 @@ to_chat(usr, "\The [src] doesn't have anything to cool right now.") /obj/machinery/chemcooler/AltClick(mob/user) - if(!user.incapacitated() && Adjacent(user) && !(stat & (NOPOWER|FORCEDISABLE) && user.dexterity_check())) + if(!user.incapacitated() && Adjacent(user) && !(stat & (NOPOWER) && user.dexterity_check())) toggle() return return ..() diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm index 8f44ae35b5e..659025e68a1 100644 --- a/code/game/machinery/computer/HolodeckControl.dm +++ b/code/game/machinery/computer/HolodeckControl.dm @@ -94,6 +94,9 @@ alpha_area = /area/holodeck/dungeon_holodeck_alpha map_element_type = /datum/map_element/dungeon/holodeck/olympics +/obj/machinery/computer/HolodeckControl/attack_ai(mob/user) + add_hiddenprint(user) + return attack_hand(user) /obj/machinery/computer/HolodeckControl/attack_paw(mob/user) return @@ -101,7 +104,7 @@ /obj/machinery/computer/HolodeckControl/proc/spawn_holoperson(mob/dead/observer/user) if (!istype(user) || user.stat != DEAD ) return - if(stat & (NOPOWER|BROKEN|MAINT|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN|MAINT)) return if(!ticker || ticker.current_state != GAME_STATE_PLAYING) to_chat(user, "You can't do this until the game has started.") diff --git a/code/game/machinery/computer/Operating.dm b/code/game/machinery/computer/Operating.dm index 944b31db560..f45716a73cc 100644 --- a/code/game/machinery/computer/Operating.dm +++ b/code/game/machinery/computer/Operating.dm @@ -38,6 +38,10 @@ // If no scanner was found, it will return null return optablef +/obj/machinery/computer/operating/attack_ai(user as mob) + src.add_hiddenprint(user) + return src.attack_hand(user) + /obj/machinery/computer/operating/attack_paw(user as mob) return attack_hand(user) @@ -46,7 +50,7 @@ return add_fingerprint(user) - if(stat & (FORCEDISABLE|BROKEN|NOPOWER)) + if(stat & (BROKEN|NOPOWER)) return updatemodules() @@ -95,7 +99,7 @@ /obj/machinery/computer/operating/update_icon() ..() - if(!(stat & (FORCEDISABLE |BROKEN | NOPOWER))) + if(!(stat & (BROKEN | NOPOWER))) updatemodules() if(!isnull(src.optable) && (src.optable.check_victim())) src.victim = src.optable.victim diff --git a/code/game/machinery/computer/ai_core.dm b/code/game/machinery/computer/ai_core.dm index 5d90831470e..ca6a5f5ca45 100644 --- a/code/game/machinery/computer/ai_core.dm +++ b/code/game/machinery/computer/ai_core.dm @@ -137,7 +137,6 @@ P.playtoolsound(loc, 50) to_chat(user, "You connect the monitor.") var/mob/living/silicon/ai/A = new /mob/living/silicon/ai ( loc, laws, brain ) - A.show_intro_text() if(A) //if there's no brain, the mob is deleted and a structure/AIcore is created mob_rename_self(A,"ai", null, 1) feedback_inc("cyborg_ais_created",1) diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm index c730164c170..fcb3dfafc81 100644 --- a/code/game/machinery/computer/aifixer.dm +++ b/code/game/machinery/computer/aifixer.dm @@ -14,7 +14,7 @@ /obj/machinery/computer/aifixer/attackby(I as obj, user as mob) if(istype(I, /obj/item/device/aicard)) - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) to_chat(user, "This terminal isn't functioning right now, get it working!") return var/obj/item/card = I @@ -22,6 +22,10 @@ return return ..() +/obj/machinery/computer/aifixer/attack_ai(var/mob/user as mob) + src.add_hiddenprint(user) + return attack_hand(user) + /obj/machinery/computer/aifixer/attack_paw(var/mob/user as mob) return attack_hand(user) @@ -108,7 +112,7 @@ ..() overlays = 0 // Broken / Unpowered - if(stat & (BROKEN | NOPOWER | FORCEDISABLE)) + if(stat & (BROKEN | NOPOWER)) return if (occupant) diff --git a/code/game/machinery/computer/arcade/arcade.dm b/code/game/machinery/computer/arcade/arcade.dm index aaa92e587da..8d5c74caa41 100644 --- a/code/game/machinery/computer/arcade/arcade.dm +++ b/code/game/machinery/computer/arcade/arcade.dm @@ -12,12 +12,6 @@ var/mob/playerone var/mob/playertwo - hack_abilities = list( - /datum/malfhack_ability/toggle/disable, - /datum/malfhack_ability/oneuse/overload_quiet, - /datum/malfhack_ability/oneuse/emag, - ) - /obj/machinery/computer/arcade/haunted desc = "Still doesn't support pinball, but does support spookiness." light_color = LIGHT_COLOR_PURPLE @@ -69,7 +63,7 @@ game.emag_act(user) /obj/machinery/computer/arcade/emp_act(severity) - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) ..(severity) return game.emp_act(severity) @@ -87,7 +81,7 @@ /obj/machinery/computer/arcade/kick_act() ..() - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) return game.kick_act() diff --git a/code/game/machinery/computer/arcade/arcade_game.dm b/code/game/machinery/computer/arcade/arcade_game.dm index 28be55163e1..52a5184fa61 100644 --- a/code/game/machinery/computer/arcade/arcade_game.dm +++ b/code/game/machinery/computer/arcade/arcade_game.dm @@ -445,7 +445,7 @@ /datum/arcade_game/space_villain/is_cheater(mob/user) if(emagged && !gameover) - if(holder.stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(holder.stat & (NOPOWER|BROKEN)) return 0 else if(user in cheaters) to_chat(usr, "[enemy_name] throws a bomb at you for trying to cheat him again.") diff --git a/code/game/machinery/computer/atmos_alert.dm b/code/game/machinery/computer/atmos_alert.dm index 5c74f12f746..e19f1c0647b 100644 --- a/code/game/machinery/computer/atmos_alert.dm +++ b/code/game/machinery/computer/atmos_alert.dm @@ -60,7 +60,7 @@ if(stat & BROKEN) icon_state = "atmosb" return - else if(stat & (FORCEDISABLE|NOPOWER)) + else if(stat & NOPOWER) icon_state = "atmos0" return diff --git a/code/game/machinery/computer/atmos_control.dm b/code/game/machinery/computer/atmos_control.dm index 1096bb2565a..f5a28b767ce 100644 --- a/code/game/machinery/computer/atmos_control.dm +++ b/code/game/machinery/computer/atmos_control.dm @@ -46,6 +46,9 @@ var/global/list/atmos_controllers = list() /area/security/gas_chamber ) +/obj/machinery/computer/atmoscontrol/attack_ai(var/mob/user as mob) + src.add_hiddenprint(user) + return interact(user) /obj/machinery/computer/atmoscontrol/attack_paw(var/mob/user as mob) return interact(user) diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm index 31de6b43035..df780b52fe2 100644 --- a/code/game/machinery/computer/camera.dm +++ b/code/game/machinery/computer/camera.dm @@ -26,12 +26,6 @@ var/list/obj/machinery/camera/cyborg_cams = list( var/list/cam_plane_masters var/obj/abstract/screen/background/cam_background - hack_abilities = list( - /datum/malfhack_ability/oneuse/apcfaker, - /datum/malfhack_ability/toggle/disable, - /datum/malfhack_ability/oneuse/overload_quiet - ) - /obj/machinery/computer/security/initialize() tv_monitors += src // Map name has to start and end with an A-Z character, diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index 42d0c603fac..f96363d2d46 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -130,13 +130,16 @@ nanomanager.update_uis(src) attack_hand(user) +/obj/machinery/computer/card/attack_ai(var/mob/user as mob) + return attack_hand(user) + /obj/machinery/computer/card/attack_paw(var/mob/user as mob) return attack_hand(user) /obj/machinery/computer/card/attack_hand(mob/user as mob) if(..()) return - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) return ui_interact(user) diff --git a/code/game/machinery/computer/cargo.dm b/code/game/machinery/computer/cargo.dm index e73b5601238..307ebda4669 100644 --- a/code/game/machinery/computer/cargo.dm +++ b/code/game/machinery/computer/cargo.dm @@ -7,7 +7,7 @@ For vending packs, see vending_packs.dm*/ // returns an associate list of information needed for cargo consoles. returns 0 if ID or account is missing -#define ACCOUNT_DB_OFFLINE (!linked_db.activated || linked_db.stat & (BROKEN|NOPOWER|FORCEDISABLE)) +#define ACCOUNT_DB_OFFLINE (!linked_db.activated || linked_db.stat & (BROKEN|NOPOWER)) #define MENTION_DB_OFFLINE to_chat(user, "Account database connection lost. Please retry.") #define USE_ACCOUNT_ON_ID acc_info["account"] = user.get_worn_id_account(0, user) #define USE_CARGO_ACCOUNT acc_info["account"] = department_accounts["Cargo"] @@ -121,17 +121,9 @@ For vending packs, see vending_packs.dm*/ var/permissions_screen = FALSE var/last_viewed_group = "Supplies" // not sure how to get around hard coding this var/list/current_acct - var/list/current_acct_override var/screen = SCR_MAIN light_color = LIGHT_COLOR_BROWN - hack_abilities = list( - /datum/malfhack_ability/toggle/disable, - /datum/malfhack_ability/oneuse/overload_quiet, - /datum/malfhack_ability/account_hijack, - /datum/malfhack_ability/oneuse/emag, - ) - /obj/machinery/computer/supplycomp/New() ..() SSsupply_shuttle.supply_consoles.Add(src) @@ -145,6 +137,9 @@ For vending packs, see vending_packs.dm*/ ..() +/obj/machinery/computer/supplycomp/attack_ai(var/mob/user as mob) + add_hiddenprint(user) + return attack_hand(user) /obj/machinery/computer/supplycomp/proc/check_restriction(mob/user) if(!user) @@ -183,10 +178,7 @@ For vending packs, see vending_packs.dm*/ if(..()) return - if(current_acct_override) - current_acct = current_acct_override - else - current_acct = get_account_info(user, linked_db) + current_acct = get_account_info(user, linked_db) user.set_machine(src) post_signal("supply") @@ -238,12 +230,6 @@ For vending packs, see vending_packs.dm*/ else return ..() -/obj/machinery/computer/supplycomp/emag_ai(mob/living/silicon/ai/A) - to_chat(A, "Special supplies unlocked.") - hacked = 1 - can_order_contraband = 1 - - /obj/machinery/computer/supplycomp/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open=NANOUI_FOCUS) if(!current_acct) return @@ -316,10 +302,7 @@ For vending packs, see vending_packs.dm*/ if(..()) return 1 add_fingerprint(usr) - if(current_acct_override) - current_acct = current_acct_override - else - current_acct = get_account_info(usr, linked_db) + current_acct = get_account_info(usr, linked_db) var/idname var/datum/money_account/account if(!current_acct && !href_list["close"]) @@ -451,10 +434,7 @@ For vending packs, see vending_packs.dm*/ if(!check_restriction(usr)) return SSsupply_shuttle.requisition = text2num(href_list["requisition_status"]) - if(current_acct_override) - current_acct = current_acct_override - else - current_acct = get_account_info(usr, linked_db) + current_acct = get_account_info(usr, linked_db) return 1 else if (href_list["screen"]) if(!check_restriction(usr)) @@ -465,7 +445,6 @@ For vending packs, see vending_packs.dm*/ return 1 else if (href_list["close"]) current_acct = null - current_acct_override = null if(usr.machine == src) usr.unset_machine() return 1 @@ -493,15 +472,8 @@ For vending packs, see vending_packs.dm*/ var/reqtime = 0 //Cooldown for requisitions - Quarxink var/last_viewed_group = "Supplies" // not sure how to get around hard coding this var/list/current_acct - var/list/current_acct_override light_color = LIGHT_COLOR_BROWN - hack_abilities = list( - /datum/malfhack_ability/toggle/disable, - /datum/malfhack_ability/oneuse/overload_quiet, - /datum/malfhack_ability/account_hijack, - ) - /obj/machinery/computer/ordercomp/New() . = ..() reconnect_database() @@ -509,13 +481,15 @@ For vending packs, see vending_packs.dm*/ /obj/machinery/computer/ordercomp/initialize() reconnect_database() +/obj/machinery/computer/ordercomp/attack_ai(var/mob/user as mob) + add_hiddenprint(user) + return attack_hand(user) + /obj/machinery/computer/ordercomp/attack_hand(var/mob/user as mob) if(..()) return - if(current_acct_override) - current_acct = current_acct_override - else - current_acct = get_account_info(user, linked_db) + current_acct = get_account_info(user, linked_db) + user.set_machine(src) ui_interact(user) onclose(user, "computer") @@ -577,10 +551,7 @@ For vending packs, see vending_packs.dm*/ if(..()) return 1 add_fingerprint(usr) - if(current_acct_override) - current_acct = current_acct_override - else - current_acct = get_account_info(usr, linked_db) + current_acct = get_account_info(usr, linked_db) var/idname var/datum/money_account/account if(!current_acct && !href_list["close"]) @@ -667,7 +638,6 @@ For vending packs, see vending_packs.dm*/ return 1 else if (href_list["close"]) current_acct = null - current_acct_override = null if(usr.machine == src) usr.unset_machine() return 1 diff --git a/code/game/machinery/computer/climate.dm b/code/game/machinery/computer/climate.dm index 06015b94243..99bb3a600c7 100644 --- a/code/game/machinery/computer/climate.dm +++ b/code/game/machinery/computer/climate.dm @@ -20,6 +20,10 @@ var/list/climatecomps = list() climatecomps -= src ..() +/obj/machinery/computer/climate/attack_ai(var/mob/user as mob) + add_hiddenprint(user) + return attack_hand(user) + /obj/machinery/computer/climate/attack_hand(var/mob/user as mob) if(..()) return diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 2dc30987134..ea932d91aa6 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -63,12 +63,6 @@ var/list/shuttle_log = list() var/message_cooldown = 0 var/centcomm_message_cooldown = 0 var/tmp_alertlevel = 0 - hack_abilities = list( - /datum/malfhack_ability/toggle/disable, - /datum/malfhack_ability/oneuse/overload_quiet, - /datum/malfhack_ability/fake_announcement, - /datum/malfhack_ability/oneuse/emag, - ) // Blob stuff var/defcon_1_enabled = FALSE @@ -139,7 +133,7 @@ var/list/shuttle_log = list() setMenuState(usr,COMM_SCREEN_SECLEVEL) if("newalertlevel") - if(issilicon(usr) && !is_malf_owner(usr)) + if(issilicon(usr)) return tmp_alertlevel = text2num(href_list["level"]) var/mob/M = usr @@ -171,11 +165,11 @@ var/list/shuttle_log = list() to_chat(usr, "You need to have a valid ID.") if("announce") - if(authenticated==AUTH_CAPT && !(issilicon(usr) && !is_malf_owner(usr))) + if(authenticated==AUTH_CAPT && !issilicon(usr)) if(message_cooldown) return var/input = stripped_input(usr, "Please choose a message to announce to the station crew.", "What?") - if(message_cooldown || !input || (!usr.Adjacent(src) && !issilicon(usr))) + if(message_cooldown || !input || !usr.Adjacent(src)) return captain_announce(input)//This should really tell who is, IE HoP, CE, HoS, RD, Captain var/turf/T = get_turf(usr) @@ -227,7 +221,7 @@ var/list/shuttle_log = list() if(!ert_reason) to_chat(usr, "You are required to give a reason to call an ERT.") return - if(!usr.Adjacent(src) || usr.incapacitated()) + if(!Adjacent(usr) || usr.incapacitated()) return var/datum/striketeam/ert/response_team = new() response_team.trigger_strike(usr,ert_reason,TRUE) @@ -320,7 +314,7 @@ var/list/shuttle_log = list() to_chat(usr, "Arrays recycling. Please stand by for a few seconds.") return var/input = stripped_input(usr, "Please choose a message to transmit to Centcomm via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response. There is a 30 second delay before you may send another message, be clear, full and concise.", "To abort, send an empty message.", "") - if(!input || (!usr.Adjacent(src) && !issilicon(usr))) + if(!input || !(usr in view(1,src))) return Centcomm_announce(input, usr) to_chat(usr, "Message transmitted.") @@ -360,19 +354,18 @@ var/list/shuttle_log = list() update_icon() if("SetPortRestriction") - - if(issilicon(usr) && !is_malf_owner(usr)) + if(issilicon(usr)) return var/mob/M = usr var/obj/item/weapon/card/id/I = M.get_id_card() - if (I || isAdminGhost(usr) || issilicon(usr)) - if(isAdminGhost(usr) || issilicon(usr) || (access_hos in I.access) || ((access_heads in I.access) && security_level >= SEC_LEVEL_RED)) + if (I || isAdminGhost(usr)) + if(isAdminGhost(usr) || (access_hos in I.access) || ((access_heads in I.access) && security_level >= SEC_LEVEL_RED)) if(ports_open) var/reason = stripped_input(usr, "Please input a concise justification for port closure. This reason will be announced to the crew, as well as transmitted to the trader shuttle.", "Nanotrasen Anti-Comdom Systems") if(!reason) to_chat(usr, "You must provide some reason for closing the docking port.") return - if(!(usr in view(1,src)) && !issilicon(usr)) + if(!(usr in view(1,src))) return command_alert("The trading port is now on lockdown. Third party traders are no longer free to dock their shuttles with the station. Reason given:\n\n[reason]", "Trading Port - Now on Lockdown", 1) world << sound('sound/AI/trading_port_closed.ogg') @@ -406,6 +399,10 @@ var/list/shuttle_log = list() setMenuState(usr, COMM_SCREEN_SHUTTLE_LOG) return 1 +/obj/machinery/computer/communications/attack_ai(var/mob/user as mob) + src.add_hiddenprint(user) + return src.attack_hand(user) + /obj/machinery/computer/communications/attack_paw(var/mob/user as mob) return src.attack_hand(user) @@ -522,7 +519,7 @@ var/list/shuttle_log = list() icon_state = "[emagged ? "[initial_icon]-emag" : "[initial_icon]"]" if(stat & BROKEN) icon_state = "[initial_icon]b" - else if(stat & (FORCEDISABLE|NOPOWER)) + else if(stat & NOPOWER) icon_state = "[initial_icon]0" diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index 66a8fdf871c..7a75fb527ff 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -34,7 +34,7 @@ power_change() /obj/machinery/computer/process() - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) return 0 return 1 @@ -96,7 +96,7 @@ icon_state = "[initial(icon_state)]b" // Powered - else if(stat & (FORCEDISABLE|NOPOWER)) + else if(stat & NOPOWER) icon_state = "[initial(icon_state)]0" /obj/machinery/computer/power_change() diff --git a/code/game/machinery/computer/labor.dm b/code/game/machinery/computer/labor.dm index 8e78bfc98b2..346612181d9 100644 --- a/code/game/machinery/computer/labor.dm +++ b/code/game/machinery/computer/labor.dm @@ -43,6 +43,10 @@ var/list/labor_console_categories = list( job_master.labor_consoles -= src ..() +/obj/machinery/computer/labor/attack_ai(var/mob/user as mob) + add_hiddenprint(user) + return attack_hand(user) + /obj/machinery/computer/labor/attack_hand(var/mob/user as mob) if(..()) return @@ -208,7 +212,7 @@ var/list/labor_console_categories = list( /obj/machinery/computer/labor/update_icon() ..() overlays = 0 - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return if(awaiting_swipe || verifying) overlays += awaiting_overlay diff --git a/code/game/machinery/computer/law.dm b/code/game/machinery/computer/law.dm index 37d74130035..00b8b47d7e3 100644 --- a/code/game/machinery/computer/law.dm +++ b/code/game/machinery/computer/law.dm @@ -13,7 +13,7 @@ /obj/machinery/computer/aiupload/attackby(I as obj, user as mob) if(istype(I, /obj/item/device/aicard)) - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) to_chat(user, "This terminal isn't functioning right now, get it working!") return var/obj/item/card = I @@ -43,9 +43,6 @@ if(stat & BROKEN) to_chat(usr, "The upload computer is broken!") return 0 - if(stat & FORCEDISABLE) - to_chat(usr, "The upload computer isn't responding!") - return 0 if(!current) to_chat(usr, "You haven't selected an AI to transmit laws to!") return 0 @@ -105,9 +102,6 @@ if(stat & BROKEN) to_chat(usr, "The upload computer is broken!") return - if(stat & FORCEDISABLE) - to_chat(usr, "The upload computer isn't responding!") - return 0 if(!current) to_chat(usr, "You haven't selected an AI to transmit laws to!") return @@ -146,9 +140,6 @@ if(stat & NOPOWER) to_chat(usr, "The upload computer has no power!") return - if(stat & FORCEDISABLE) - to_chat(usr, "The upload computer isn't responding!") - return 0 if(stat & BROKEN) to_chat(usr, "The upload computer is broken!") return @@ -194,9 +185,6 @@ if(stat & BROKEN) to_chat(usr, "The upload computer is broken!") return 0 - if(stat & FORCEDISABLE) - to_chat(usr, "The upload computer isn't responding!") - return 0 if(!current) to_chat(usr, "You haven't selected a robot to transmit laws to!") return 0 @@ -251,9 +239,6 @@ if(stat & BROKEN) to_chat(user, "The upload computer is broken!") return - if(stat & FORCEDISABLE) - to_chat(usr, "The upload computer isn't responding!") - return 0 if(!current) to_chat(user, "You haven't selected a robot to transmit laws to!") return @@ -297,9 +282,7 @@ if(stat & BROKEN) to_chat(usr, "The upload computer is broken!") return - if(stat & FORCEDISABLE) - to_chat(usr, "The upload computer isn't responding!") - return 0 + current = freeborg() if(!current) @@ -320,7 +303,7 @@ ..() overlays = 0 - if(stat & (BROKEN | NOPOWER | FORCEDISABLE)) + if(stat & (BROKEN | NOPOWER)) return if (occupant) diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index ac25b133c88..cbb4cfa65fd 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -24,6 +24,10 @@ light_color = LIGHT_COLOR_BLUE +/obj/machinery/computer/med_data/attack_ai(user as mob) + add_hiddenprint(user) + return attack_hand(user) + /obj/machinery/computer/med_data/attack_paw(user as mob) return attack_hand(user) @@ -565,7 +569,7 @@ return /obj/machinery/computer/med_data/emp_act(severity) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) ..(severity) return diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm index 0c5ba4737b9..e7dceb3a547 100644 --- a/code/game/machinery/computer/message.dm +++ b/code/game/machinery/computer/message.dm @@ -65,7 +65,7 @@ /obj/machinery/computer/message_monitor/update_icon() ..() - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) return if(emagged || hacking) icon_state = hack_icon @@ -80,7 +80,7 @@ return /obj/machinery/computer/message_monitor/attack_hand(var/mob/living/user as mob) - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) return if(!istype(user) && !isAdminGhost(user)) return @@ -101,8 +101,8 @@ Server Power: [src.linkedServer && src.linkedServer.is_functioning() ? "\[On\]":"\[Off\]"]"} if(hacking || emagged) screen = 2 - else if(!auth || !linkedServer || (linkedServer.stat & (NOPOWER|BROKEN|FORCEDISABLE))) - if(!linkedServer || (linkedServer.stat & (NOPOWER|BROKEN|FORCEDISABLE))) + else if(!auth || !linkedServer || (linkedServer.stat & (NOPOWER|BROKEN))) + if(!linkedServer || (linkedServer.stat & (NOPOWER|BROKEN))) message = noserver screen = 0 @@ -113,7 +113,7 @@ var/i = 0 dat += "
[++i]. Link To A Server
" if(auth) - if(!linkedServer || (linkedServer.stat & (FORCEDISABLE|NOPOWER|BROKEN))) + if(!linkedServer || (linkedServer.stat & (NOPOWER|BROKEN))) dat += "
ERROR: Server not found!
" else @@ -254,6 +254,10 @@ onclose(user, "message") return +/obj/machinery/computer/message_monitor/attack_ai(mob/user as mob) + src.add_hiddenprint(user) + return src.attack_hand(user) + /obj/machinery/computer/message_monitor/proc/BruteForce(mob/user as mob) if(isnull(linkedServer)) to_chat(user, "Could not complete brute-force: Linked Server Disconnected!") @@ -308,7 +312,7 @@ //View the logs - KEY REQUIRED if (href_list["view"]) - if(src.linkedServer == null || (src.linkedServer.stat & (FORCEDISABLE|NOPOWER|BROKEN))) + if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) message = noserver else if(auth) @@ -316,7 +320,7 @@ //Clears the logs - KEY REQUIRED if (href_list["clear"]) - if(!linkedServer || (src.linkedServer.stat & (FORCEDISABLE|NOPOWER|BROKEN))) + if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) message = noserver else if(auth) @@ -324,7 +328,7 @@ message = "NOTICE: Logs cleared." //Clears the request console logs - KEY REQUIRED if (href_list["clearr"]) - if(!linkedServer || (src.linkedServer.stat & (FORCEDISABLE|NOPOWER|BROKEN))) + if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) message = noserver else if(auth) @@ -332,7 +336,7 @@ message = "NOTICE: Logs cleared." //Change the password - KEY REQUIRED if (href_list["pass"]) - if(!linkedServer || (src.linkedServer.stat & (FORCEDISABLE|NOPOWER|BROKEN))) + if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) message = noserver else if(auth) @@ -364,7 +368,7 @@ if (href_list["delete"]) //Are they on the view logs screen? if(screen == 1) - if(!linkedServer || (src.linkedServer.stat & (FORCEDISABLE|NOPOWER|BROKEN))) + if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) message = noserver else //if(istype(href_list["delete"], /datum/data_pda_msg)) src.linkedServer.pda_msgs -= locate(href_list["delete"]) @@ -373,21 +377,21 @@ if (href_list["deleter"]) //Are they on the view logs screen? if(screen == 4) - if(!linkedServer || (src.linkedServer.stat & (FORCEDISABLE|NOPOWER|BROKEN))) + if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) message = noserver else //if(istype(href_list["delete"], /datum/data_pda_msg)) src.linkedServer.rc_msgs -= locate(href_list["deleter"]) message = "NOTICE: Log Deleted!" //Create a custom message if (href_list["msg"]) - if(src.linkedServer == null || (src.linkedServer.stat & (FORCEDISABLE|NOPOWER|BROKEN))) + if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) message = noserver else if(auth) src.screen = 3 //Fake messaging selection - KEY REQUIRED if (href_list["select"]) - if(src.linkedServer == null || (src.linkedServer.stat & (FORCEDISABLE|NOPOWER|BROKEN))) + if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) message = noserver screen = 0 else @@ -480,7 +484,7 @@ //Request Console Logs - KEY REQUIRED if(href_list["viewr"]) - if(src.linkedServer == null || (src.linkedServer.stat & (FORCEDISABLE|NOPOWER|BROKEN))) + if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) message = noserver else if(auth) diff --git a/code/game/machinery/computer/pda_terminal.dm b/code/game/machinery/computer/pda_terminal.dm index 3320586f25e..3a2708cfbae 100644 --- a/code/game/machinery/computer/pda_terminal.dm +++ b/code/game/machinery/computer/pda_terminal.dm @@ -61,6 +61,9 @@ nanomanager.update_uis(src) attack_hand(user) +/obj/machinery/computer/pda_terminal/attack_ai(var/mob/user) + return attack_hand(user) + /obj/machinery/computer/pda_terminal/attack_paw(var/mob/user) return attack_hand(user) diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm index 37e5d5acda7..8ac8d998173 100644 --- a/code/game/machinery/computer/pod.dm +++ b/code/game/machinery/computer/pod.dm @@ -86,7 +86,7 @@ /obj/machinery/computer/pod/proc/launch_sequence(var/ident_tag) - if(stat & (FORCEDISABLE|NOPOWER|BROKEN)) + if(stat & (NOPOWER|BROKEN)) return var/anydriver = 0 for(var/obj/machinery/mass_driver/M in mass_drivers) @@ -126,6 +126,11 @@ return +/obj/machinery/computer/pod/attack_ai(var/mob/user as mob) + src.add_hiddenprint(user) + return attack_hand(user) + + /obj/machinery/computer/pod/attack_paw(var/mob/user as mob) return attack_hand(user) diff --git a/code/game/machinery/computer/prisoner.dm b/code/game/machinery/computer/prisoner.dm index 5bb8a55ce01..7ca9f1ba0ad 100644 --- a/code/game/machinery/computer/prisoner.dm +++ b/code/game/machinery/computer/prisoner.dm @@ -15,6 +15,10 @@ light_color = LIGHT_COLOR_RED +/obj/machinery/computer/prisoner/attack_ai(var/mob/user as mob) + src.add_hiddenprint(user) + return src.attack_hand(user) + /obj/machinery/computer/prisoner/attack_paw(var/mob/user as mob) return diff --git a/code/game/machinery/computer/prisonshuttle.dm b/code/game/machinery/computer/prisonshuttle.dm index eea12c5a00d..9eb374d5a90 100644 --- a/code/game/machinery/computer/prisonshuttle.dm +++ b/code/game/machinery/computer/prisonshuttle.dm @@ -25,6 +25,11 @@ var/prison_shuttle_timeleft = 0 if(!..()) attack_hand(user) +/obj/machinery/computer/prison_shuttle/attack_ai(var/mob/user as mob) + add_hiddenprint(user) + return attack_hand(user) + + /obj/machinery/computer/prison_shuttle/attack_paw(var/mob/user as mob) return attack_hand(user) diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index 76add07c75e..3813d6f780d 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -16,24 +16,22 @@ var/stop = 0.0 var/screen = 0 // 0 - Main Menu, 1 - Cyborg Status, 2 - Kill 'em All! -- In text - hack_abilities = list( - /datum/malfhack_ability/oneuse/explosive_borgs, - /datum/malfhack_ability/toggle/disable, - /datum/malfhack_ability/oneuse/overload_quiet - ) - light_color = LIGHT_COLOR_PINK /obj/machinery/computer/robotics/say_quote(text) return "beeps, [text]" /obj/machinery/computer/robotics/proc/speak(var/message) - if(stat & (NOPOWER|FORCEDISABLE)) //sanity + if(stat & NOPOWER) //sanity return if (!message) return say(message) +/obj/machinery/computer/robotics/attack_ai(var/mob/user as mob) + add_hiddenprint(user) + return attack_hand(user) + /obj/machinery/computer/robotics/attack_paw(var/mob/user as mob) return attack_hand(user) @@ -208,7 +206,7 @@ /obj/machinery/computer/robotics/update_icon() ..() - if(stat & (BROKEN | NOPOWER | FORCEDISABLE)) + if(stat & (BROKEN | NOPOWER)) return if (cyborg_detonation_time != 0 && cyborg_detonation_time > world.time) diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 4e04e8ac786..5d1af941a2b 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -48,6 +48,10 @@ F.custom_forgery[1] = customprints ? customprints.Copy() : null ..() +/obj/machinery/computer/secure_data/attack_ai(mob/user as mob) + src.add_hiddenprint(user) + return attack_hand(user) + /obj/machinery/computer/secure_data/attack_paw(mob/user as mob) return attack_hand(user) @@ -557,7 +561,7 @@ What a mess.*/ return /obj/machinery/computer/secure_data/emp_act(severity) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) ..(severity) return diff --git a/code/game/machinery/computer/security_alert.dm b/code/game/machinery/computer/security_alert.dm index 5c1fe8aa127..17f24912e86 100644 --- a/code/game/machinery/computer/security_alert.dm +++ b/code/game/machinery/computer/security_alert.dm @@ -18,14 +18,6 @@ TODO: literally every alarm but SPS alarms. icon_state = "secalert" var/list/saved_security_alerts = list() var/last_alert_time = 0 - var/muted = FALSE - - hack_abilities = list( - /datum/malfhack_ability/trigger_sps, - /datum/malfhack_ability/toggle/mute_sps, - /datum/malfhack_ability/oneuse/overload_quiet, - /datum/malfhack_ability/toggle/disable - ) light_color = LIGHT_COLOR_RED @@ -43,6 +35,10 @@ TODO: literally every alarm but SPS alarms. /obj/machinery/computer/security_alerts/attack_paw(mob/user as mob) return attack_hand(user) +/obj/machinery/computer/security_alerts/attack_ai(mob/user as mob) + add_hiddenprint(user) + return attack_hand(user) + /obj/machinery/computer/security_alerts/attack_ghost(mob/user as mob) ui_interact(user) @@ -53,7 +49,7 @@ TODO: literally every alarm but SPS alarms. /obj/machinery/computer/security_alerts/update_icon(var/showalert = FALSE) ..() - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) overlays.Cut() return else @@ -65,7 +61,7 @@ TODO: literally every alarm but SPS alarms. /obj/machinery/computer/security_alerts/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open=NANOUI_FOCUS) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return if(!ui) @@ -105,9 +101,7 @@ TODO: literally every alarm but SPS alarms. onclose(user, "security_alert") /obj/machinery/computer/security_alerts/proc/receive_alert(var/alerttype, var/newdata, var/verbose = 1) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) - return - if(muted) + if(stat & (BROKEN|NOPOWER)) return if(saved_security_alerts.Find(newdata)) //no need for duplicate entries return diff --git a/code/game/machinery/computer/shuttle.dm b/code/game/machinery/computer/shuttle.dm index 905c947854f..79f1c9eaeb5 100644 --- a/code/game/machinery/computer/shuttle.dm +++ b/code/game/machinery/computer/shuttle.dm @@ -8,7 +8,7 @@ light_color = LIGHT_COLOR_CYAN /obj/machinery/computer/shuttle/attackby(var/obj/item/weapon/card/W as obj, var/mob/user as mob) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return ..() if ((!( istype(W, /obj/item/weapon/card) ) || !( ticker ) || emergency_shuttle.location != 1 || !( user ))) diff --git a/code/game/machinery/computer/slot_machine.dm b/code/game/machinery/computer/slot_machine.dm index 4d300cef596..c6b1e55f637 100644 --- a/code/game/machinery/computer/slot_machine.dm +++ b/code/game/machinery/computer/slot_machine.dm @@ -88,7 +88,7 @@ if(stat & BROKEN) icon_state = "[initial_icon]b" remove_overlays() - else if(stat & (FORCEDISABLE|NOPOWER)) + else if(stat & NOPOWER) icon_state = "[initial_icon]0" remove_overlays() else diff --git a/code/game/machinery/computer/specops_shuttle.dm b/code/game/machinery/computer/specops_shuttle.dm index c0162392b37..b4ad7555421 100644 --- a/code/game/machinery/computer/specops_shuttle.dm +++ b/code/game/machinery/computer/specops_shuttle.dm @@ -251,6 +251,10 @@ var/specops_shuttle_timeleft = 0 return 0 return 1 +/obj/machinery/computer/specops_shuttle/attack_ai(var/mob/user as mob) + src.add_hiddenprint(user) + return attack_hand(user) + /obj/machinery/computer/specops_shuttle/attack_paw(var/mob/user as mob) return attack_hand(user) diff --git a/code/game/machinery/computer/station_alert.dm b/code/game/machinery/computer/station_alert.dm index 83b765246d6..6ee59976f02 100644 --- a/code/game/machinery/computer/station_alert.dm +++ b/code/game/machinery/computer/station_alert.dm @@ -43,9 +43,18 @@ A.send_firealert(src) A.send_poweralert(src) +/obj/machinery/computer/station_alert/attack_ai(mob/user) + src.add_hiddenprint(user) + add_fingerprint(user) + if(stat & (BROKEN|NOPOWER)) + return + interact(user) + return + + /obj/machinery/computer/station_alert/attack_hand(mob/user) add_fingerprint(user) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return interact(user) return @@ -125,7 +134,7 @@ /obj/machinery/computer/station_alert/process() - if(stat & (FORCEDISABLE|NOPOWER)) + if(stat & NOPOWER) icon_state = "atmos0" return else if(stat & BROKEN) diff --git a/code/game/machinery/computer/store.dm b/code/game/machinery/computer/store.dm index 0380828522d..cced24d4284 100644 --- a/code/game/machinery/computer/store.dm +++ b/code/game/machinery/computer/store.dm @@ -71,7 +71,7 @@ /obj/machinery/computer/merch/update_icon() if(stat & BROKEN) icon_state = "comm_logsb" - else if(stat & (FORCEDISABLE|NOPOWER)) + else if(stat & NOPOWER) icon_state = "comm_logs0" else icon_state = initial(icon_state) diff --git a/code/game/machinery/computer/syndicate_specops_shuttle.dm b/code/game/machinery/computer/syndicate_specops_shuttle.dm index 66b6b142be2..3ca215dbafb 100644 --- a/code/game/machinery/computer/syndicate_specops_shuttle.dm +++ b/code/game/machinery/computer/syndicate_specops_shuttle.dm @@ -180,6 +180,9 @@ var/syndicate_elite_shuttle_timeleft = 0 else return 1 +/obj/machinery/computer/syndicate_elite_shuttle/attack_ai(var/mob/user as mob) + src.add_hiddenprint(user) + return attack_hand(user) /obj/machinery/computer/syndicate_elite_shuttle/attack_paw(var/mob/user as mob) return attack_hand(user) diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index 99596d59197..fcc83106537 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -120,7 +120,7 @@ var/global/list/cryo_health_indicator = list( "full" = image("icon" = 'icons/obj /obj/machinery/atmospherics/unary/cryo_cell/process() ..() - if(stat & (FORCEDISABLE|NOPOWER)) + if(stat & NOPOWER) on = 0 if(!node1) @@ -639,7 +639,7 @@ var/global/list/cryo_health_indicator = list( "full" = image("icon" = 'icons/obj if(panel_open) to_chat(usr, "Close the maintenance panel first.") return - if (usr.isUnconscious() || stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if (usr.isUnconscious() || stat & (NOPOWER|BROKEN)) return put_mob(usr) diff --git a/code/game/machinery/defibcharger.dm b/code/game/machinery/defibcharger.dm index d968e2b921e..9c14e8bcc3e 100644 --- a/code/game/machinery/defibcharger.dm +++ b/code/game/machinery/defibcharger.dm @@ -43,7 +43,7 @@ return attack_hand(user) /obj/machinery/recharger/defibcharger/wallcharger/emp_act(severity) - if(stat & (NOPOWER|BROKEN|FORCEDISABLE) || !anchored) + if(stat & (NOPOWER|BROKEN) || !anchored) ..(severity) return @@ -61,7 +61,7 @@ /obj/machinery/recharger/defibcharger/wallcharger/process() - if(stat & (NOPOWER|BROKEN|FORCEDISABLE) || !anchored) + if(stat & (NOPOWER|BROKEN) || !anchored) return if(charging) diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index 1e9db2c48a4..87767cb0805 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -17,11 +17,6 @@ machine_flags = EMAGGABLE - hack_abilities = list( - /datum/malfhack_ability/oneuse/overload_quiet, - /datum/malfhack_ability/oneuse/emag - ) - /obj/machinery/deployable/barrier/New() ..() update_icon() @@ -76,7 +71,7 @@ take_damage(25) /obj/machinery/deployable/barrier/emp_act(var/severity) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return if(prob(50/severity)) anchored = !anchored diff --git a/code/game/machinery/disk_duplicator.dm b/code/game/machinery/disk_duplicator.dm index bafdf2a8769..4ccbf52f603 100644 --- a/code/game/machinery/disk_duplicator.dm +++ b/code/game/machinery/disk_duplicator.dm @@ -21,12 +21,6 @@ pass_flags = PASSTABLE - hack_abilities = list( - /datum/malfhack_ability/toggle/disable, - /datum/malfhack_ability/oneuse/overload_quiet, - /datum/malfhack_ability/oneuse/emag - ) - /obj/machinery/disk_duplicator/New() . = ..() component_parts = newlist( diff --git a/code/game/machinery/door_control.dm b/code/game/machinery/door_control.dm index aa143422c0d..b2179733cf7 100644 --- a/code/game/machinery/door_control.dm +++ b/code/game/machinery/door_control.dm @@ -35,8 +35,9 @@ machine_flags = EMAGGABLE | MULTITOOL_MENU /obj/machinery/door_control/attack_ai(mob/user as mob) + src.add_hiddenprint(user) if(wires & 2) - ..() + return src.attack_hand(user) else to_chat(user, "Error, no route to host.") @@ -70,7 +71,7 @@ /obj/machinery/door_control/attack_hand(mob/user as mob) src.add_fingerprint(usr) - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) return if(!allowed(user) && (wires & 1)) @@ -114,12 +115,12 @@ M.close() return spawn(15) - if(!(stat & (FORCEDISABLE|NOPOWER))) + if(!(stat & NOPOWER)) icon_state = "doorctrl0" /obj/machinery/door_control/power_change() ..() - if(stat & (FORCEDISABLE|NOPOWER)) + if(stat & NOPOWER) icon_state = "doorctrl-p" else icon_state = "doorctrl0" @@ -127,6 +128,10 @@ /obj/machinery/door_control/npc_tamper_act(mob/living/L) attack_hand(L) +/obj/machinery/driver_button/attack_ai(mob/user as mob) + src.add_hiddenprint(user) + return src.attack_hand(user) + /obj/machinery/driver_button/attack_paw(mob/user as mob) return src.attack_hand(user) @@ -158,7 +163,7 @@ /obj/machinery/driver_button/attack_hand(mob/user as mob) playsound(src,'sound/misc/click.ogg',30,0,-1) src.add_fingerprint(usr) - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) return if(active) return diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 27d56f06c7a..8e8cf7104d2 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -60,11 +60,6 @@ machine_flags = SCREWTOGGLE | WIREJACK animation_delay = 5 - hack_abilities = list( - /datum/malfhack_ability/oneuse/emag, - /datum/malfhack_ability/oneuse/overload_quiet, - ) - /obj/machinery/door/airlock/Destroy() if(wires) qdel(wires) @@ -369,7 +364,7 @@ About the new airlock wires panel: // You can find code for the airlock wires in the wire datum folder. /obj/machinery/door/airlock/denied() - if (arePowerSystemsOn() && !(stat & (NOPOWER | BROKEN | FORCEDISABLE))) + if (arePowerSystemsOn() && !(stat & (NOPOWER | BROKEN))) ..() /obj/machinery/door/airlock/bump_open(mob/living/user as mob) //Airlocks now zap you when you 'bump' them open when they're electrified. --NeoFite @@ -402,7 +397,7 @@ About the new airlock wires panel: return 1 return wires.IsIndexCut(wireIndex) -/obj/machinery/door/airlock/proc/canAIControl(var/mob/user) +/obj/machinery/door/airlock/proc/canAIControl() return ((src.aiControlDisabled!=1) && (!src.isAllPowerCut())); /obj/machinery/door/airlock/proc/canAIHack() @@ -529,7 +524,7 @@ About the new airlock wires panel: return //So i heard you tried to interface with doors you have no access to src.add_hiddenprint(user) if(isAI(user)) - if(!src.canAIControl(user)) + if(!src.canAIControl()) if(src.canAIHack()) src.attempt_hack(user) return @@ -712,10 +707,11 @@ About the new airlock wires panel: if (aiHacking) return FALSE else - //to_chat(user, "Airlock AI control has been blocked. Hack it.") - to_chat(user, "Airlock AI control has been blocked. Hack it!") + to_chat(user, "Airlock AI control has been blocked. Hack it.") + /obj/machinery/door/airlock/proc/hack(mob/user as mob) + if(src.aiHacking==0) src.aiHacking=1 spawn(20) @@ -755,7 +751,7 @@ About the new airlock wires panel: to_chat(user, "Transfer complete. Forcing airlock to execute program.") sleep(50) //disable blocked control - enable_AI_control(TRUE) + src.aiControlDisabled = 2 to_chat(user, "Receiving control information from airlock.") sleep(10) //bring up airlock dialog @@ -1102,7 +1098,7 @@ About the new airlock wires panel: if (shock(user, 100)) user.delayNextAttack(10) //Basically no open panel, not opening already, door has power, area has power, door isn't bolted - if (!panel_open && !operating && arePowerSystemsOn() && !(stat & (NOPOWER|BROKEN|FORCEDISABLE)) && !locked) + if (!panel_open && !operating && arePowerSystemsOn() && !(stat & (NOPOWER|BROKEN)) && !locked) ..(user) /obj/machinery/door/airlock/attack_alien(mob/living/carbon/alien/humanoid/user) @@ -1114,7 +1110,7 @@ About the new airlock wires panel: return if(locked || welded || jammed) to_chat(user, "The airlock won't budge!") - else if(arePowerSystemsOn() && !(stat & (NOPOWER|FORCEDISABLE))) + else if(arePowerSystemsOn() && !(stat & NOPOWER)) to_chat(user, "You start forcing the airlock [density ? "open" : "closed"].") visible_message("\The [src]'s motors whine as something begins trying to force it [density ? "open" : "closed"]!",\ "You hear groaning metal and overworked motors.") @@ -1144,7 +1140,7 @@ About the new airlock wires panel: else shake(1,8) playsound(src, 'sound/effects/grillehit.ogg', 50, 1) - if(arePowerSystemsOn() && !(stat & (FORCEDISABLE|NOPOWER))) + if(arePowerSystemsOn() && !(stat & NOPOWER)) if(level_of_door_opening < 2) return if(M.client) @@ -1231,7 +1227,7 @@ About the new airlock wires panel: beingcrowbarred = 1 //derp, Agouri else beingcrowbarred = 0 - if( beingcrowbarred && (operating == -1 || density && welded && !operating && src.panel_open && (!src.arePowerSystemsOn() || stat & (FORCEDISABLE|NOPOWER)) && !src.locked) ) + if( beingcrowbarred && (operating == -1 || density && welded && !operating && src.panel_open && (!src.arePowerSystemsOn() || stat & NOPOWER) && !src.locked) ) I.playtoolsound(loc, 100) user.visible_message("[user] removes the electronics from the airlock assembly.", "You start to remove electronics from the airlock assembly.") // TODO: refactor the called proc @@ -1240,7 +1236,7 @@ About the new airlock wires panel: revert(user,null) qdel(src) return - else if(arePowerSystemsOn() && !(stat & (FORCEDISABLE|NOPOWER))) + else if(arePowerSystemsOn() && !(stat & NOPOWER)) to_chat(user, "The airlock's motors resist your efforts to force it.") else if(locked) to_chat(user, "The airlock's bolts prevent it from being forced.") @@ -1277,16 +1273,6 @@ About the new airlock wires panel: add_fingerprint(user) return -/obj/machinery/door/airlock/emag_ai(mob/living/silicon/ai/A) - if (!operating) - operating = -1 - if(density) - door_animate("spark") - sleep(6) - open(1) - operating = -1 - - /obj/machinery/door/airlock/bashed_in(var/mob/user, var/throw_circuit = TRUE) playsound(src, 'sound/items/Deconstruct.ogg', 50, 1) operating = -1 @@ -1349,7 +1335,7 @@ About the new airlock wires panel: if((operating && !forced) || locked || welded) return 0 if(!forced) - if( !arePowerSystemsOn() || (stat & (FORCEDISABLE|NOPOWER)) || isWireCut(AIRLOCK_WIRE_OPEN_DOOR) ) + if( !arePowerSystemsOn() || (stat & NOPOWER) || isWireCut(AIRLOCK_WIRE_OPEN_DOOR) ) return 0 for(var/obj/O in loc) //A redundant check that exists in the parent if (O.blocks_doors()) //But it exists in the parent because it also affects firelocks. @@ -1369,7 +1355,7 @@ About the new airlock wires panel: // .=..() - if(. && !(stat & (FORCEDISABLE|NOPOWER) || !src.arePowerSystemsOn())) //It opened, and there's power + if(. && !(stat & (NOPOWER) || !src.arePowerSystemsOn())) //It opened, and there's power wires.SignalIndex(AIRLOCK_WIRE_ONOPEN) /obj/machinery/door/airlock/Uncross(atom/movable/mover) @@ -1481,19 +1467,3 @@ About the new airlock wires panel: /obj/machinery/door/airlock/clockworkify() GENERIC_CLOCKWORK_CONVERSION(src, /obj/machinery/door/airlock/clockwork, CLOCKWORK_DOOR_GLOW) - - -/obj/machinery/door/airlock/disable_AI_control() - if(aiControlDisabled == 2) - return - else - aiControlDisabled = 1 - if(malf_owner) - malf_disrupt(MALF_DISRUPT_TIME, TRUE) - -/obj/machinery/door/airlock/enable_AI_control(var/bypass = FALSE) - if(bypass) - aiControlDisabled = 2 - else - aiControlDisabled = 0 - \ No newline at end of file diff --git a/code/game/machinery/doors/alarmlock.dm b/code/game/machinery/doors/alarmlock.dm index 51cafd9fc2d..d759e85eca0 100644 --- a/code/game/machinery/doors/alarmlock.dm +++ b/code/game/machinery/doors/alarmlock.dm @@ -22,7 +22,7 @@ /obj/machinery/door/airlock/alarmlock/receive_signal(datum/signal/signal) ..() - if(stat & (FORCEDISABLE|NOPOWER|BROKEN)) + if(stat & (NOPOWER|BROKEN)) return var/alarm_area = signal.data["zone"] diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index 8fa9ac4eaa1..288d3fbefb0 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -59,7 +59,7 @@ // if it's less than 0, open door, reset timer // update the door_timer window and the icon /obj/machinery/door_timer/process() - if((stat & (FORCEDISABLE|NOPOWER|BROKEN)) || !timing) + if((stat & (NOPOWER|BROKEN)) || !timing) return if(timeleft <= 0) timer_end() // open doors, reset timer, clear status screen @@ -78,7 +78,7 @@ // open/closedoor checks if door_timer has power, if so it checks if the // linked door is open/closed (by density) then opens it/closes it. /obj/machinery/door_timer/proc/timer_start() - if(stat & (FORCEDISABLE|NOPOWER|BROKEN)) + if(stat & (NOPOWER|BROKEN)) return 0 for(var/obj/machinery/door/window/brigdoor/door in targets) @@ -98,7 +98,7 @@ /obj/machinery/door_timer/proc/timer_end() - if(stat & (FORCEDISABLE|NOPOWER|BROKEN)) + if(stat & (NOPOWER|BROKEN)) return 0 for(var/obj/machinery/door/window/brigdoor/door in targets) @@ -124,6 +124,11 @@ /obj/machinery/door_timer/proc/timeset(var/seconds) timeleft = seconds +//Allows AIs to use door_timer, see human attack_hand function below +/obj/machinery/door_timer/attack_ai(var/mob/user as mob) + add_hiddenprint(user) + return attack_hand(user) + //Allows humans to use door_timer //Opens dialog window when someone clicks on door timer @@ -191,7 +196,7 @@ // if BROKEN, display blue screen of death icon AI uses // if timing=true, run update display function /obj/machinery/door_timer/update_icon() - if(stat & (FORCEDISABLE|NOPOWER)) + if(stat & (NOPOWER)) icon_state = "frame" return if(stat & (BROKEN)) diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index 75225d74764..2d38259f5f4 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -93,12 +93,6 @@ var/global/list/alert_overlays_global = list() "cold" ) - hack_abilities = list( - /datum/malfhack_ability/oneuse/overload_quiet, - /datum/malfhack_ability/oneuse/emag - ) - - /obj/machinery/door/firedoor/New(loc, new_dir) . = ..() change_dir(new_dir) @@ -360,20 +354,13 @@ var/global/list/alert_overlays_global = list() flick("door_spark", src) sleep(6) force_open(user, C) + sleep(8) blocked = TRUE update_icon() return do_interaction(user, C) -/obj/machinery/door/firedoor/emag_ai(mob/living/silicon/ai/A) - if(density) - flick("door_spark", src) - sleep(6) - open() - blocked = TRUE - update_icon() - /obj/machinery/door/firedoor/attack_animal(var/mob/living/simple_animal/M as mob) M.delayNextAttack(8) if(M.melee_damage_upper == 0) @@ -593,7 +580,7 @@ var/global/list/alert_overlays_global = list() update_icon() /obj/machinery/door/firedoor/proc/latetoggle() - if(operating || stat & (FORCEDISABLE|NOPOWER) || !nextstate) + if(operating || stat & NOPOWER || !nextstate) return switch(nextstate) diff --git a/code/game/machinery/doors/mineral.dm b/code/game/machinery/doors/mineral.dm index 37887b3c3f5..74ed8ba4244 100644 --- a/code/game/machinery/doors/mineral.dm +++ b/code/game/machinery/doors/mineral.dm @@ -35,6 +35,7 @@ TryToSwitchState(user) return + /obj/machinery/door/mineral/attack_ai(mob/user as mob) //those aren't really machinery, they're just big fucking slabs of a mineral if(isAI(user)) //so the AI can't open it return diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm index b3ab82db51d..7cb473500dc 100644 --- a/code/game/machinery/doors/poddoor.dm +++ b/code/game/machinery/doors/poddoor.dm @@ -81,7 +81,7 @@ var/list/poddoors = list() if(istype(C, /obj/item/weapon/melee/energy/sword/ninja)) attempt_slicing(user) else if(iscrowbar(C) || istype(C, /obj/item/weapon/fireaxe) && C.wielded) - if(!operating && (stat & NOPOWER|FORCEDISABLE)) + if(!operating && stat & NOPOWER) spawn() operating = TRUE flick(openingicon, src) diff --git a/code/game/machinery/doors/shutters.dm b/code/game/machinery/doors/shutters.dm index 28903697daf..cb098a40261 100644 --- a/code/game/machinery/doors/shutters.dm +++ b/code/game/machinery/doors/shutters.dm @@ -17,7 +17,7 @@ add_fingerprint(user) if(!(iscrowbar(C) || (istype(C, /obj/item/weapon/fireaxe) && C.wielded == 1) )) return - if(density && (stat & (FORCEDISABLE|NOPOWER)) && !operating) + if(density && (stat & NOPOWER) && !operating) operating = 1 spawn(-1) flick("shutterc0", src) diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index bf2b2fbb021..aae30858100 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -26,12 +26,6 @@ var/window_is_opaque = FALSE //The var that helps darken the glass when the door opens/closes var/assembly_type = /obj/structure/windoor_assembly - hack_abilities = list( - /datum/malfhack_ability/toggle/disable, - /datum/malfhack_ability/oneuse/overload_quiet, - /datum/malfhack_ability/oneuse/emag - ) - /obj/machinery/door/window/New() ..() @@ -209,6 +203,9 @@ playsound(src, 'sound/effects/Glasshit.ogg', 100, 1) take_damage(tforce) +/obj/machinery/door/window/attack_ai(mob/user) + add_hiddenprint(user) + return attack_hand(user) /obj/machinery/door/window/attack_ghost(mob/user) if(isAdminGhost(user)) diff --git a/code/game/machinery/doppler_array.dm b/code/game/machinery/doppler_array.dm index 81160e1aa57..8c0079009d3 100644 --- a/code/game/machinery/doppler_array.dm +++ b/code/game/machinery/doppler_array.dm @@ -22,12 +22,16 @@ var/list/doppler_arrays = list() /obj/machinery/computer/bhangmeter/attack_paw(mob/user as mob) return src.attack_hand(user) +/obj/machinery/computer/bhangmeter/attack_ai(mob/user as mob) + src.add_hiddenprint(user) + return src.attack_hand(user) + /obj/machinery/computer/bhangmeter/attack_hand(mob/user as mob) //user.set_machine(src) ui_interact(user) /obj/machinery/computer/bhangmeter/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open=NANOUI_FOCUS) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return if(user.client) @@ -105,7 +109,7 @@ var/list/doppler_arrays = list() onclose(user, "bhangmeter") return /obj/machinery/computer/bhangmeter/proc/sense_explosion(var/x0, var/y0, var/z0, var/devastation_range, var/heavy_impact_range, var/light_impact_range, var/took, cap = 0, var/verbose = 1) - if(stat & (FORCEDISABLE|NOPOWER)) + if(stat & NOPOWER) return if(z != z0) return diff --git a/code/game/machinery/emancipation.dm b/code/game/machinery/emancipation.dm index 34e88eed50a..d273a0aa01b 100644 --- a/code/game/machinery/emancipation.dm +++ b/code/game/machinery/emancipation.dm @@ -21,7 +21,7 @@ update_icon() /obj/machinery/emancipation_grill/update_icon() - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) icon_state = initial(icon_state) else icon_state = "[initial(icon_state)]_on" @@ -29,7 +29,7 @@ /obj/machinery/emancipation_grill/proc/emancipate(atom/movable/victim) if(!victim) return - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return use_power(active_power_usage, power_channel) var/delete = FALSE diff --git a/code/game/machinery/embedded_controller/embedded_controller_base.dm b/code/game/machinery/embedded_controller/embedded_controller_base.dm index 3b2dc0e8f2b..94f6d9890ac 100644 --- a/code/game/machinery/embedded_controller/embedded_controller_base.dm +++ b/code/game/machinery/embedded_controller/embedded_controller_base.dm @@ -135,6 +135,12 @@ update_icon() src.updateDialog() + +/obj/machinery/embedded_controller/attack_ai(mob/user as mob) + if(build<2) + return 1 + src.ui_interact(user) + /obj/machinery/embedded_controller/attack_paw(mob/user as mob) attack_hand(user) return diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index 7a994dcef71..65634f15a4b 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -59,7 +59,7 @@ var/list/obj/machinery/flasher/flashers = list() user.visible_message("[user] has connected the [src]'s flashbulb!", "You connect the [src]'s flashbulb!") //Let the AI trigger them directly. -/obj/machinery/flasher/attack_ai(var/mob/user) +/obj/machinery/flasher/attack_ai() if (src.anchored) return src.flash() else @@ -108,7 +108,7 @@ var/list/obj/machinery/flasher/flashers = list() /obj/machinery/flasher/emp_act(severity) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) ..(severity) return if(prob(75/severity)) @@ -137,6 +137,9 @@ var/list/obj/machinery/flasher/flashers = list() user.show_message(text("[src] is now secured.")) src.overlays += image(icon = icon, icon_state = "[base_state]-s") +/obj/machinery/flasher_button/attack_ai(mob/user as mob) + src.add_hiddenprint(user) + return src.attack_hand(user) /obj/machinery/flasher_button/attack_paw(mob/user as mob) return src.attack_hand(user) @@ -146,7 +149,7 @@ var/list/obj/machinery/flasher/flashers = list() /obj/machinery/flasher_button/attack_hand(mob/user as mob) playsound(src,'sound/misc/click.ogg',30,0,-1) - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) return if(active) return diff --git a/code/game/machinery/floodlight.dm b/code/game/machinery/floodlight.dm index 0e24e2c4984..1f3804a1a5d 100644 --- a/code/game/machinery/floodlight.dm +++ b/code/game/machinery/floodlight.dm @@ -40,6 +40,10 @@ visible_message("\The [src] shuts down!") return +/obj/machinery/floodlight/attack_ai(mob/user as mob) + src.add_hiddenprint(user) + return src.attack_hand(user) + /obj/machinery/floodlight/attack_paw(mob/user as mob) return src.attack_hand(user) diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index ff6f218cc05..eb2f0282b69 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -35,20 +35,14 @@ var/list/holopads = list() name = "\improper AI holopad" desc = "It's a floor-mounted device for projecting holographic images. It is activated remotely." icon_state = "holopad0" - var/mob/living/silicon/ai/master //Which AI, if any, is controlling the object? Only one AI may control a hologram at any time. + var/mob/living/silicon/ai/master//Which AI, if any, is controlling the object? Only one AI may control a hologram at any time. var/last_request = 0 //to prevent request spam. ~Carn - var/holo_range = 6 // Change to change how far the AI can move away from the holopad before deactivating. + var/holo_range = 5 // Change to change how far the AI can move away from the holopad before deactivating. flags = HEAR plane = ABOVE_TURF_PLANE layer = ABOVE_TILE_LAYER machine_flags = SCREWTOGGLE | CROWDESTROY - hack_abilities = list( - /datum/malfhack_ability/create_lifelike_hologram, - /datum/malfhack_ability/oneuse/overload_quiet, - ) - - /obj/machinery/hologram/holopad/New() ..() holopads += src @@ -89,17 +83,16 @@ var/list/holopads = list() I don't need to check for client since they're clicking on an object. This may change in the future but for now will suffice.*/ user.cameraFollow = null // Stops tracking - - if(master==user && holo)//If there is a hologram, remove it. But only if the user is the master. Otherwise do nothing. - clear_holo() - else if(user.eyeobj.loc != src.loc)//Set client eye on the object if it's not already. + if(user.eyeobj.loc != src.loc)//Set client eye on the object if it's not already. user.eyeobj.forceMove(get_turf(src)) - else if (!holo)//If there is no hologram, possibly make one. + else if(!holo)//If there is no hologram, possibly make one. activate_holo(user) + else if(master==user)//If there is a hologram, remove it. But only if the user is the master. Otherwise do nothing. + clear_holo() return /obj/machinery/hologram/holopad/proc/activate_holo(mob/living/silicon/ai/user) - if(!(stat & (FORCEDISABLE|NOPOWER)) && user.eyeobj.loc == src.loc)//If the projector has power and client eye is on it. + if(!(stat & NOPOWER) && user.eyeobj.loc == src.loc)//If the projector has power and client eye is on it. if(!holo)//If there is not already a hologram. create_holo(user)//Create one. src.visible_message("A holographic image of [user] flicks to life right before your eyes!") @@ -136,7 +129,6 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ A.current = src master = A//AI is the master. use_power = 2//Active power usage. - holo.set_glide_size(DELAY2GLIDESIZE(1)) move_hologram() if(A && A.holopadoverlays.len) for(var/image/ol in A.holopadoverlays) @@ -146,65 +138,22 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ return 1 -/obj/machinery/hologram/holopad/proc/create_advanced_holo(var/mob/living/silicon/ai/A) - if(stat & (FORCEDISABLE|NOPOWER)) - return - if(holo) - clear_holo() - return - var/obj/machinery/hologram/holopad/H = A.current - if(istype(H) && H.holo) - H.clear_holo() - return - var/list/available_mobs = generate_appearance_list() - var/mob_to_copy = input(A, "Who will this hologram look like?", "Creatures") as null|anything in available_mobs - if(!mob_to_copy) - return 0 - if(!A.eyeobj) - A.make_eyeobj() - A.eyeobj.forceMove(get_turf(src)) - A.current = src - advancedholo = TRUE - holo = new /obj/effect/overlay/hologram/lifelike(get_turf(src), available_mobs[mob_to_copy], A.eyeobj, src) - holo.set_glide_size(DELAY2GLIDESIZE(1)) - master = A - use_power = 2 - - return 1 - -/obj/machinery/hologram/holopad/proc/generate_appearance_list() - var/list/L = sortmobs() - var/list/newlist = list() - for(var/mob/living/M in L) - if(M.z != map.zMainStation) - continue - newlist["[M.name]"] = M - return newlist - /obj/machinery/hologram/holopad/proc/clear_holo() if(master && master.holopadoverlays.len) for(var/image/ol in master.holopadoverlays) if(ol.loc == src) ol.icon_state = "holopad0" break - + qdel(holo)//Get rid of hologram. + qdel(ray) + holo = null + ray = null + if(master.current == src) + master.current = null + master = null//Null the master, since no-one is using it now. set_light(0) //pad lighting (hologram lighting will be handled automatically since its owner was deleted) icon_state = "holopad0" use_power = 1//Passive power usage. - advancedholo = FALSE - if(master) - if(master.current == src) - master.current = null - master = null //Null the master, since no-one is using it now. - qdel(ray) - ray = null - if(holo) - var/obj/effect/overlay/hologram/H = holo - visible_message("The image of [holo] fades away.") - holo = null - animate(H, alpha = 0, time = 5) - spawn(5) - qdel(H)//Get rid of hologram. return 1 /obj/machinery/hologram/holopad/emp_act() @@ -214,11 +163,8 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ /obj/machinery/hologram/holopad/process() if(holo)//If there is a hologram. if(master && !master.stat && master.client && master.eyeobj)//If there is an AI attached, it's not incapacitated, it has a client, and the client eye is centered on the projector. - if(!(stat & (FORCEDISABLE|NOPOWER)))//If the machine has power. - var/turf/T = get_turf(holo) - if(T.obscured) - clear_holo() - if((HOLOPAD_MODE == 0 && (get_dist(master.eyeobj, src) <= holo_range)) || advancedholo) + if(!(stat & NOPOWER))//If the machine has power. + if((HOLOPAD_MODE == 0 && (get_dist(master.eyeobj, src) <= holo_range))) return 1 else if (HOLOPAD_MODE == 1) @@ -226,43 +172,38 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ var/area/holo_area = get_area(src) var/area/eye_area = get_area(master.eyeobj) - if(eye_area == holo_area || advancedholo) + if(eye_area == holo_area) return 1 clear_holo()//If not, we want to get rid of the hologram. - - return 1 -/obj/machinery/hologram/holopad/proc/move_hologram(var/forced = 0 ) +/obj/machinery/hologram/holopad/proc/move_hologram() if(holo) - if (get_dist(master.eyeobj, src) <= holo_range || advancedholo) - holo.set_glide_size(DELAY2GLIDESIZE(1)) - master.eyeobj.set_glide_size(DELAY2GLIDESIZE(1)) + if (get_dist(master.eyeobj, src) <= holo_range) var/turf/T = holo.loc var/turf/dest = get_turf(master.eyeobj) step_to(holo, master.eyeobj) // So it turns. holo.forceMove(dest) - if(ray) - var/disty = holo.y - ray.y - var/distx = holo.x - ray.x - var/newangle - if(!disty) - if(distx >= 0) - newangle = 90 - else - newangle = 270 + var/disty = holo.y - ray.y + var/distx = holo.x - ray.x + var/newangle + if(!disty) + if(distx >= 0) + newangle = 90 else - newangle = arctan(distx/disty) - if(disty < 0) - newangle += 180 - else if(distx < 0) - newangle += 360 - var/matrix/M = matrix() - if (get_dist(T,dest) <= 1) - animate(ray, transform = turn(M.Scale(1,sqrt(distx*distx+disty*disty)),newangle),time = 1) - else - ray.transform = turn(M.Scale(1,sqrt(distx*distx+disty*disty)),newangle) + newangle = 270 + else + newangle = arctan(distx/disty) + if(disty < 0) + newangle += 180 + else if(distx < 0) + newangle += 360 + var/matrix/M = matrix() + if (get_dist(T,dest) <= 1) + animate(ray, transform = turn(M.Scale(1,sqrt(distx*distx+disty*disty)),newangle),time = 1) + else + ray.transform = turn(M.Scale(1,sqrt(distx*distx+disty*disty)),newangle) else clear_holo() return 1 @@ -297,9 +238,8 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ use_power = 1 idle_power_usage = 5 active_power_usage = 100 - var/obj/effect/overlay/hologram/holo //The projection itself. If there is one, the instrument is on, off otherwise. - var/obj/effect/overlay/holoray/ray //The link between the projection and the projector. - var/advancedholo = FALSE //are we projecting an advanced hologram? (malf AI) + var/obj/effect/overlay/hologram/holo//The projection itself. If there is one, the instrument is on, off otherwise. + var/obj/effect/overlay/holoray/ray//The link between the projection and the projector. /obj/machinery/hologram/power_change() if (powered()) @@ -357,57 +297,3 @@ Holographic project of everything else. desc = "It makes a hologram appear...with magnets or something..." icon = 'icons/obj/stationobjs.dmi' icon_state = "hologram0" - - -/obj/effect/overlay/hologram/lifelike - plane = HUMAN_PLANE - layer = 0 - icon = 'icons/mob/AI.dmi' - icon_state = "holo1" - density = 1 - anchored = 0 - var/mob/camera/aiEye/eye - var/obj/machinery/hologram/holopad/parent - -/obj/effect/overlay/hologram/lifelike/New(var/loc, var/mob/living/mob_to_copy, var/mob/eyeobj, var/obj/machinery/hologram/holopad/H) - ..() - steal_appearance(mob_to_copy) - eye = eyeobj - parent = H - register_event(/event/after_move, src, /obj/effect/overlay/hologram/lifelike/proc/UpdateEye) - set_light(0) - -/obj/effect/overlay/hologram/lifelike/proc/steal_appearance(var/mob/living/M) - name = M.name - appearance = M.appearance - if(M.lying) // make them stand up if they were lying down - pixel_y += 6 * PIXEL_MULTIPLIER - transform = transform.Turn(-90) - var/datum/log/L = new - M.examine(L) - desc = L.log - qdel(L) - -/obj/effect/overlay/hologram/lifelike/examine(mob/user, var/size = "") - if(desc) - to_chat(user, desc) - - -/obj/effect/overlay/hologram/lifelike/attack_hand(var/mob/living/M) - M.visible_message(\ - "[M]'s hand passes straight through [src]!", \ - "Your hand passes straight through [src]!", \ - ) - parent.clear_holo() - -/obj/effect/overlay/hologram/lifelike/attackby(var/obj/O) - visible_message("\The [O] passes straight through [src]!") - parent.clear_holo() - -/obj/effect/overlay/hologram/lifelike/bullet_act(var/obj/item/projectile/Proj) - visible_message("\The [Proj] passes straight through [src]!") - parent.clear_holo() - -/obj/effect/overlay/hologram/lifelike/proc/UpdateEye() - if(eye && eye.loc != loc) - eye.forceMove(loc, holo_bump = TRUE) \ No newline at end of file diff --git a/code/game/machinery/holosign.dm b/code/game/machinery/holosign.dm index 3523d81f3b2..c34552e38f8 100644 --- a/code/game/machinery/holosign.dm +++ b/code/game/machinery/holosign.dm @@ -29,14 +29,14 @@ var/list/obj/machinery/holosign/holosigns = list() ..() /obj/machinery/holosign/proc/toggle(var/active) - if (stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if (stat & (BROKEN|NOPOWER)) return lit = active update_icon() /obj/machinery/holosign/update_icon() overlays.len = 0 - if(!lit || (stat & (NOPOWER|BROKEN|FORCEDISABLE))) + if(!lit || (stat & (NOPOWER|BROKEN))) set_light(0) return if(!overlay) @@ -114,6 +114,10 @@ var/list/obj/machinery/holosign/holosigns = list() overlay = null ..() +/obj/machinery/holosign_switch/attack_ai(mob/user as mob) + src.add_hiddenprint(user) + return src.attack_hand(user) + /obj/machinery/holosign_switch/attack_paw(mob/user as mob) return src.attack_hand(user) @@ -125,7 +129,7 @@ var/list/obj/machinery/holosign/holosigns = list() /obj/machinery/holosign_switch/attack_hand(mob/user as mob) playsound(src,'sound/misc/click.ogg',30,0,-1) src.add_fingerprint(usr) - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) return add_fingerprint(user) @@ -154,7 +158,7 @@ var/list/obj/machinery/holosign/holosigns = list() /obj/machinery/holosign_switch/update_icon() overlays.len = 0 - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) icon_state = "light-p" else icon_state = active ? "light1" : "light0" diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index 7953d6ab21e..d6e8e431e6a 100755 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -14,6 +14,10 @@ var/global/list/igniters = list() ghost_read = 0 // Deactivate ghost touching. ghost_write = 0 +/obj/machinery/igniter/attack_ai(mob/user as mob) + src.add_hiddenprint(user) + return src.attack_hand(user) + /obj/machinery/igniter/attack_paw(mob/user as mob) if ((ticker && ticker.mode.name == "monkey")) return src.attack_hand(user) @@ -30,7 +34,7 @@ var/global/list/igniters = list() return /obj/machinery/igniter/process() //ugh why is this even in process()? - if (src.on && !(stat & (NOPOWER|FORCEDISABLE)) ) + if (src.on && !(stat & NOPOWER) ) var/turf/location = src.loc if (isturf(location)) location.hotspot_expose(1000,500,1,surfaces=0) @@ -52,7 +56,7 @@ var/global/list/igniters = list() ..() /obj/machinery/igniter/power_change() - if(!( stat & (FORCEDISABLE|NOPOWER)) ) + if(!( stat & NOPOWER) ) icon_state = "igniter[src.on]" else icon_state = "igniter0" @@ -123,7 +127,7 @@ var/global/list/igniters = list() else icon_state = "[base_state]-p" -/obj/machinery/sparker/attack_ai(var/mob/user) +/obj/machinery/sparker/attack_ai() if (src.anchored) return do_spark() else @@ -147,12 +151,16 @@ var/global/list/igniters = list() return 1 /obj/machinery/sparker/emp_act(severity) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) ..(severity) return do_spark() ..(severity) +/obj/machinery/ignition_switch/attack_ai(mob/user as mob) + src.add_hiddenprint(user) + return src.attack_hand(user) + /obj/machinery/ignition_switch/attack_paw(mob/user as mob) return src.attack_hand(user) @@ -161,7 +169,7 @@ var/global/list/igniters = list() /obj/machinery/ignition_switch/attack_hand(mob/user as mob) playsound(src,'sound/misc/click.ogg',30,0,-1) - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) return if(active) return diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index 8405b4124d2..3f67d7af13f 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -178,6 +178,9 @@ src.attached = null src.update_icon() +/obj/machinery/iv_drip/attack_ai(mob/living/user) + attack_hand(user) + /obj/machinery/iv_drip/verb/toggle_mode() set name = "Toggle Mode" set category = "Object" diff --git a/code/game/machinery/keyfab.dm b/code/game/machinery/keyfab.dm index b440c59f410..be974884c59 100644 --- a/code/game/machinery/keyfab.dm +++ b/code/game/machinery/keyfab.dm @@ -33,7 +33,7 @@ /obj/machinery/keyfab/update_icon() ..() //_ is off, 0 is powered but not running, 1 is running, 2 is ready, 3 is error. - if(stat & (FORCEDISABLE|NOPOWER)) + if(stat & NOPOWER) icon_state = initial(icon_state) return icon_state = "[initial(icon_state)][busy]" @@ -42,7 +42,7 @@ ..() if(ishigherbeing(user)) src.add_fingerprint(user) - if((stat & (FORCEDISABLE|BROKEN|NOPOWER))) + if((stat & (BROKEN|NOPOWER))) to_chat(user, "\The [src] is unresponsive.") return if(istype(K, /obj/item/key/snowmobile/universal)) //FUTURE FEATURE? Change this to /obj/item/key and play with line 90 to allow all kinds of keys to be created. Would require redoing keys slightly to use VIN as a unique ID and having keys match that VIN. @@ -60,7 +60,7 @@ ..() if(ishigherbeing(user)) src.add_fingerprint(user) - if((stat & (BROKEN|NOPOWER|FORCEDISABLE))) + if((stat & (BROKEN|NOPOWER))) to_chat(user, "\The [src] is unresponsive.") return switch(busy) @@ -81,7 +81,7 @@ busy = BUSY update_icon() sleep(build_time) - if((stat & (BROKEN|NOPOWER|FORCEDISABLE))) + if((stat & (BROKEN|NOPOWER))) update_icon() busy = NOTBUSY return diff --git a/code/game/machinery/kitchen/chickenprocessor.dm b/code/game/machinery/kitchen/chickenprocessor.dm new file mode 100644 index 00000000000..b8dd4103dae --- /dev/null +++ b/code/game/machinery/kitchen/chickenprocessor.dm @@ -0,0 +1 @@ +//Depreciated by merge with processor. diff --git a/code/game/machinery/kitchen/gibber.dm b/code/game/machinery/kitchen/gibber.dm index 9641a16b47f..03b127a38bc 100644 --- a/code/game/machinery/kitchen/gibber.dm +++ b/code/game/machinery/kitchen/gibber.dm @@ -72,7 +72,7 @@ overlays.len = 0 if (dirty) src.overlays += image('icons/obj/kitchen.dmi', "grbloody") - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) return if (!occupant) src.overlays += image('icons/obj/kitchen.dmi', "grjam") @@ -89,7 +89,7 @@ return /obj/machinery/gibber/attack_hand(mob/user as mob) - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) return if(!anchored) to_chat(user, "[src] must be anchored first!") @@ -302,7 +302,7 @@ Bumped(user) /obj/machinery/gibber/autogibber/Bumped(var/atom/A) - if(stat & (BROKEN | NOPOWER | FORCEDISABLE)) + if(stat & (BROKEN | NOPOWER)) return use_power(100) if(isliving(A)) diff --git a/code/game/machinery/kitchen/microwave.dm b/code/game/machinery/kitchen/microwave.dm index a6ddb69cb7a..65a8774ff18 100644 --- a/code/game/machinery/kitchen/microwave.dm +++ b/code/game/machinery/kitchen/microwave.dm @@ -32,14 +32,6 @@ /obj/item/weapon/reagent_containers/food/condiment, /obj/item/weapon/reagent_containers/dropper) - var/rig_meal = 0 - - hack_abilities = list( - /datum/malfhack_ability/toggle/disable, - /datum/malfhack_ability/oneuse/overload_quiet, - /datum/malfhack_ability/ruin_meal, - ) - component_parts = newlist(\ /obj/item/weapon/circuitboard/microwave,\ /obj/item/weapon/stock_parts/micro_laser,\ @@ -235,8 +227,6 @@ if(isAdminGhost(user)) user.set_machine(src) interact(user) - return - ..() /obj/machinery/microwave/attack_hand(mob/user as mob) user.set_machine(src) @@ -363,7 +353,7 @@ ************************************/ /obj/machinery/microwave/proc/cook() - if(stat & (FORCEDISABLE|NOPOWER|BROKEN)) + if(stat & (NOPOWER|BROKEN)) return if(operating) return @@ -378,8 +368,7 @@ var/datum/recipe/recipe = select_recipe(available_recipes,src) var/obj/cooked - if (!recipe || rig_meal) - rig_meal = 0 + if (!recipe) // Handle the silly stuff first for(var/obj/O in contents) if(istype(O,/obj/item/weapon/cell)) @@ -465,7 +454,7 @@ /obj/machinery/microwave/proc/running(var/seconds as num) // was called wzhzhzh, for some fucking reason for (var/i=1 to seconds) - if (stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if (stat & (NOPOWER|BROKEN)) return 0 use_power(500) sleep(10/speed_multiplier) @@ -578,7 +567,7 @@ return ..() /obj/machinery/microwave/AltClick(mob/user) - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) return ..() if(!anchored) return ..() diff --git a/code/game/machinery/kitchen/smartfridge.dm b/code/game/machinery/kitchen/smartfridge.dm index 7d4184c096b..fd2d1890f0d 100644 --- a/code/game/machinery/kitchen/smartfridge.dm +++ b/code/game/machinery/kitchen/smartfridge.dm @@ -110,7 +110,7 @@ return -75 //slow /obj/machinery/smartfridge/process() - if(stat & (FORCEDISABLE|NOPOWER|BROKEN) || !anchored) + if(stat & (NOPOWER|BROKEN) || !anchored) return for(var/obj/item/I in contents) @@ -376,7 +376,7 @@ update_nearby_tiles() /obj/machinery/smartfridge/conveyor_act(var/atom/movable/AM, var/obj/machinery/conveyor/CB) - if((stat & (FORCEDISABLE|NOPOWER)) || (contents.len >= MAX_N_OF_ITEMS)) + if((stat & NOPOWER) || (contents.len >= MAX_N_OF_ITEMS)) return FALSE if(accept_check(AM)) piles = sortList(piles) @@ -400,7 +400,7 @@ /obj/machinery/smartfridge/attackby(var/obj/item/O as obj, var/mob/user as mob, params) if(..()) return 1 - if(stat & (FORCEDISABLE|NOPOWER)) + if(stat & NOPOWER) to_chat(user, "\The [src] is unpowered and useless.") return 1 if(contents.len >= MAX_N_OF_ITEMS) @@ -423,6 +423,9 @@ /obj/machinery/smartfridge/attack_paw(mob/user as mob) return src.attack_hand(user) +/obj/machinery/smartfridge/attack_ai(mob/user as mob) + return src.attack_hand(user) + /obj/machinery/smartfridge/attack_hand(mob/user as mob) user.set_machine(src) interact(user) @@ -441,7 +444,7 @@ ********************/ /obj/machinery/smartfridge/interact(mob/user as mob) - if(stat & (FORCEDISABLE|NOPOWER)) + if(stat & NOPOWER) return var/dat = list() diff --git a/code/game/machinery/lightswitch.dm b/code/game/machinery/lightswitch.dm index b4d18b8ac3e..d1cd7c6f6ac 100644 --- a/code/game/machinery/lightswitch.dm +++ b/code/game/machinery/lightswitch.dm @@ -41,7 +41,7 @@ overlay.layer = ABOVE_LIGHTING_LAYER overlays.Cut() - if((stat & (FORCEDISABLE|NOPOWER)) || buildstage != 2) + if((stat & NOPOWER) || buildstage != 2) icon_state = "light-p" set_light(0) else @@ -149,7 +149,7 @@ updateicon() /obj/machinery/light_switch/emp_act(severity) - if(stat & (BROKEN|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) ..(severity) return power_change() diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 97cbd0eae7e..8e13211ed5f 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -174,7 +174,6 @@ Class Procs: /obj/machinery/New() all_machines += src // Machines are only removed from this upon destruction machines += src - initialize_malfhack_abilities() //if(ticker) initialize() return ..() @@ -204,10 +203,6 @@ Class Procs: component_parts -= AM */ component_parts = null - for(var/datum/malfhack_ability/MH in hack_abilities) - MH.machine = null - qdel(MH) - qdel(hack_overlay) ..() @@ -219,7 +214,6 @@ Class Procs: return PROCESS_KILL /obj/machinery/emp_act(severity) - malf_disrupt(MALF_DISRUPT_TIME) if(use_power && stat == 0) use_power(7500/severity) @@ -394,7 +388,7 @@ Class Procs: /obj/machinery/Topic(href, href_list) ..() - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return 1 if(href_list["close"]) return @@ -427,11 +421,9 @@ Class Procs: // For some reason attack_robot doesn't work // This is to stop robots from using cameras to remotely control machines. if(user.client && user.client.eye == user) - return attack_hand(user) + return src.attack_hand(user) else - if(stat & NOAICONTROL) - return - return attack_hand(user) + return src.attack_hand(user) /obj/machinery/attack_ghost(mob/user as mob) src.add_hiddenprint(user) @@ -445,7 +437,7 @@ Class Procs: return src.attack_hand(user) /obj/machinery/attack_hand(mob/user as mob, var/ignore_brain_damage = 0) - if(stat & (NOPOWER|BROKEN|MAINT|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN|MAINT)) return 1 if(user.lying || (user.stat && !canGhostRead(user))) // Ghost read-only @@ -457,7 +449,6 @@ Class Procs: if(!user.dexterity_check()) to_chat(user, "You don't have the dexterity to do this!") return 1 - /* //distance checks are made by atom/proc/DblClick if ((get_dist(src, user) > 1 || !istype(src.loc, /turf)) && !istype(user, /mob/living/silicon)) @@ -789,7 +780,7 @@ Class Procs: scan = null /obj/machinery/proc/is_operational() - return !(stat & (NOPOWER|BROKEN|MAINT|FORCEDISABLE)) + return !(stat & (NOPOWER|BROKEN|MAINT)) /obj/machinery/proc/setOutputLocation(user) diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm index 571061b8172..8ab2f1f61d3 100644 --- a/code/game/machinery/magnet.dm +++ b/code/game/machinery/magnet.dm @@ -136,7 +136,7 @@ /obj/machinery/magnetic_module/process() - if(stat & (FORCEDISABLE|NOPOWER)) + if(stat & NOPOWER) on = 0 // Sanity checks: @@ -253,8 +253,13 @@ if(M.freq == frequency && M.code == code) magnets.Add(M) + +/obj/machinery/magnetic_controller/attack_ai(mob/user as mob) + src.add_hiddenprint(user) + return src.attack_hand(user) + /obj/machinery/magnetic_controller/attack_hand(mob/user as mob) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return user.set_machine(src) var/dat = "Magnetic Control Console

" @@ -350,7 +355,7 @@ while(moving && rpath.len >= 1) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) break looping = 1 diff --git a/code/game/machinery/martian_printer.dm b/code/game/machinery/martian_printer.dm index fbd60694a84..8673e788afe 100644 --- a/code/game/machinery/martian_printer.dm +++ b/code/game/machinery/martian_printer.dm @@ -55,7 +55,7 @@ /obj/machinery/mob_printer/proc/canSpawn() if(!use_power) return !building //Can be varedited to not need power. - return !(stat & (FORCEDISABLE|NOPOWER)) && !building + return !(stat & NOPOWER) && !building /obj/machinery/mob_printer/proc/make_mob(var/mob/dead/observer/user) building = TRUE diff --git a/code/game/machinery/mass_driver.dm b/code/game/machinery/mass_driver.dm index f5aaeb6f529..ae8c765bd7c 100644 --- a/code/game/machinery/mass_driver.dm +++ b/code/game/machinery/mass_driver.dm @@ -16,12 +16,6 @@ var/list/mass_drivers = list() id_tag = "default" var/drive_range = 50 //this is mostly irrelevant since current mass drivers throw into space, but you could make a lower-range mass driver for interstation transport or something I guess. - hack_abilities = list( - /datum/malfhack_ability/toggle/disable, - /datum/malfhack_ability/oneuse/overload_quiet, - /datum/malfhack_ability/oneuse/emag - ) - /obj/machinery/mass_driver/New() ..() mass_drivers += src @@ -67,7 +61,7 @@ var/list/mass_drivers = list() "} /obj/machinery/mass_driver/proc/drive(amount) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return use_power(500*power) var/O_limit = 0 @@ -90,7 +84,7 @@ var/list/mass_drivers = list() return /obj/machinery/mass_driver/emp_act(severity) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return drive() ..(severity) diff --git a/code/game/machinery/metaldetector.dm b/code/game/machinery/metaldetector.dm index e547c8e2c75..fb18419ebc6 100644 --- a/code/game/machinery/metaldetector.dm +++ b/code/game/machinery/metaldetector.dm @@ -236,7 +236,7 @@ /obj/machinery/detector/emp_act(severity) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) ..(severity) return if(prob(75/severity)) diff --git a/code/game/machinery/mind_machine.dm b/code/game/machinery/mind_machine.dm index 060d85f4270..50228d937b2 100644 --- a/code/game/machinery/mind_machine.dm +++ b/code/game/machinery/mind_machine.dm @@ -397,7 +397,7 @@ flyTally(occupantOne) flyTally(occupantTwo) for(var/prog in 1 to 40/manipRating) //Counts up 5 to 10 seconds, checks if we lost power each time and ruins your day if so. Otherwise just for UI progress bar - if(stat & (FORCEDISABLE|NOPOWER)) + if(stat & NOPOWER) malfSwap = TRUE if(!connectOne.Adjacent(src) || !connectTwo.Adjacent(src)) malfSwap = TRUE diff --git a/code/game/machinery/mommi_spawner.dm b/code/game/machinery/mommi_spawner.dm index d437ab4d246..f02ee14bc3e 100644 --- a/code/game/machinery/mommi_spawner.dm +++ b/code/game/machinery/mommi_spawner.dm @@ -50,10 +50,10 @@ update_icon() /obj/machinery/mommi_spawner/proc/canSpawn() - return !(stat & (FORCEDISABLE|NOPOWER)) && !building && metal >= metalPerMoMMI + return !(stat & NOPOWER) && !building && metal >= metalPerMoMMI /obj/machinery/mommi_spawner/process() - if(stat & (FORCEDISABLE|NOPOWER) || building || metal >= metalPerMoMMI) + if(stat & NOPOWER || building || metal >= metalPerMoMMI) return metal += metalPerTick if(metal >= metalPerMoMMI) @@ -167,7 +167,7 @@ M.Namepick() /obj/machinery/mommi_spawner/update_icon() - if(stat & (FORCEDISABLE|NOPOWER)) + if(stat & NOPOWER) icon_state="mommispawner-nopower" else if(metal < metalPerMoMMI) icon_state="mommispawner-recharging" diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index 17221a04af0..394a86aa720 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -133,7 +133,7 @@ var/list/navbeacons = list() to_chat(user, "You must open the cover first!") /obj/machinery/navbeacon/attack_ai(var/mob/user) - add_hiddenprint(user) + src.add_hiddenprint(user) interact(user, 1) /obj/machinery/navbeacon/attack_paw() diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index e230bf7345d..7d14d31ca58 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -185,7 +185,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co icon_state = "newscaster_0" return - if((stat & (FORCEDISABLE|NOPOWER)) || (stat & BROKEN)) + if((stat & NOPOWER) || (stat & BROKEN)) icon_state = "newscaster_off" if(stat & BROKEN) //If the thing is smashed, add crack overlay on top of the unpowered sprite. overlays.Cut() @@ -249,6 +249,10 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co update_icon() return ..() +/obj/machinery/newscaster/attack_ai(mob/user as mob) + add_hiddenprint(user) + return attack_hand(user) + /obj/machinery/newscaster/attack_hand(mob/user as mob) //########### THE MAIN BEEF IS HERE! And in the proc below this...############ if(buildstage != 1) diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index d3745e96fdc..c84633cc929 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -32,13 +32,6 @@ machine_flags = EMAGGABLE | SHUTTLEWRENCH - hack_abilities = list( - /datum/malfhack_ability/oneuse/emag, - /datum/malfhack_ability/oneuse/overload_loud, - /datum/malfhack_ability/manual_control - ) - - /obj/machinery/turret/portable/New() ..() icon_state = "[lasercolor]grey_target_prism" @@ -77,6 +70,11 @@ qdel(installed) ..() + +/obj/machinery/turret/portable/attack_ai(mob/user as mob) + src.add_hiddenprint(user) + return attack_hand(user) + /obj/machinery/turret/portable/attack_hand(mob/user as mob) . = ..() if (.) @@ -746,6 +744,7 @@ Status: []
"}, machine_flags = SHUTTLEWRENCH /obj/machinery/turretcover/portable/attack_ai(mob/user as mob) + add_hiddenprint(user) return host.attack_ai(user) /obj/machinery/turretcover/portable/attackby(obj/item/W as obj, mob/user as mob) diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index aa5231271ea..367154c50ec 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -85,12 +85,9 @@ else to_chat(user, "You can't pry anything out of \the [src]!") return 1 - if(stat & (NOPOWER | BROKEN )) + if(stat & (NOPOWER | BROKEN)) to_chat(user, "[src] isn't connected to a power source.") return 1 - if(stat & FORCEDISABLE) - to_chat(user, "[src] seems unresponsive.") - return 1 if(panel_open) to_chat(user, "You can't insert anything into \the [src] while the maintenance panel is open.") return 1 @@ -179,7 +176,7 @@ icon_state = "recharger4" return - if(!self_powered && (stat & (NOPOWER|BROKEN|FORCEDISABLE))) + if(!self_powered && (stat & (NOPOWER|BROKEN))) if(charging)//Spit out anything being charged if it loses power or breaks charging.appearance = appearance_backup charging.update_icon() @@ -274,7 +271,7 @@ use_power(amount) /obj/machinery/recharger/emp_act(severity) - if(stat & (NOPOWER|BROKEN|FORCEDISABLE) || !anchored) + if(stat & (NOPOWER|BROKEN) || !anchored) ..(severity) return @@ -327,7 +324,7 @@ /obj/machinery/recharger/wallcharger/process() - if(stat & (NOPOWER|BROKEN|FORCEDISABLE) || !anchored) + if(stat & (NOPOWER|BROKEN) || !anchored) return if(charging) diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index f9a206a45ea..ce65419aa0c 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -1,6 +1,5 @@ /obj/machinery/recharge_station name = "cyborg recharging station" - desc = "A large metallic machine for charging cyborgs." icon = 'icons/obj/objects.dmi' icon_state = "borgcharger0" density = 1 @@ -19,16 +18,6 @@ var/capacitor_max = 0 //combined max power the capacitors can hold machine_flags = SCREWTOGGLE | CROWDESTROY | WRENCHMOVE | EJECTNOTDEL - hack_abilities = list( - /datum/malfhack_ability/oneuse/make_autoborger, - /datum/malfhack_ability/oneuse/overload_quiet, - ) - - var/autoborger = FALSE - var/make_mommis = FALSE - var/is_borging = FALSE - var/mob/living/silicon/ai/aiowner - /obj/machinery/recharge_station/New() . = ..() build_icon() @@ -81,7 +70,7 @@ /obj/machinery/recharge_station/process() process_upgrade() - if(stat & (NOPOWER|BROKEN|FORCEDISABLE) || !anchored) + if(stat & (NOPOWER|BROKEN) || !anchored) return if(src.occupant) @@ -101,7 +90,7 @@ upgrade_finished = -1 return var/mob/living/silicon/robot/R = occupant - if(stat & (NOPOWER|BROKEN|FORCEDISABLE) || !anchored) + if(stat & (NOPOWER|BROKEN) || !anchored) to_chat(R, "Upgrade interrupted due to power failure, movement lock is released.") upgrading = 0 upgrade_finished = -1 @@ -137,6 +126,9 @@ /obj/machinery/recharge_station/attack_ghost(var/mob/user) //why would they return 0 +/obj/machinery/recharge_station/attack_ai(var/mob/user) + attack_hand(user) + /obj/machinery/recharge_station/attack_hand(var/mob/user) if(occupant == user) apply_cell_upgrade() @@ -197,7 +189,7 @@ return /obj/machinery/recharge_station/emp_act(severity) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) ..(severity) return if(occupant) @@ -206,17 +198,14 @@ ..(severity) /obj/machinery/recharge_station/proc/build_icon() - overlays = 0 - if(stat & (NOPOWER|BROKEN|FORCEDISABLE) || !anchored) + if(stat & (NOPOWER|BROKEN) || !anchored) icon_state = "borgcharger" else if(src.occupant) - if(isrobot(occupant) || !autoborger) - icon_state = "borgcharger1" - else - icon_state = "borgchargerfuck" + icon_state = "borgcharger1" else icon_state = "borgcharger0" + /obj/machinery/recharge_station/proc/process_occupant() if(src.occupant) if(isrobot(occupant)) @@ -225,9 +214,6 @@ go_out() return restock_modules() - else if(ishuman(occupant) && autoborger && !is_borging) - do_autoborg() - return charge_cell(occupant.get_cell()) /obj/machinery/recharge_station/proc/charge_cell(var/obj/item/weapon/cell/C) @@ -247,13 +233,9 @@ capacitor_stored = min(capacitor_stored + (20 * transfer_rate_coeff), capacitor_max) return 1 -/obj/machinery/recharge_station/proc/go_out(var/turf/T) - if(!T) - T = get_turf(src) +/obj/machinery/recharge_station/proc/go_out() if(!( src.occupant )) return - if(ishuman(occupant) && is_borging) // No escaping! - return if(upgrading) to_chat(occupant, "The upgrade hasn't completed yet, interface with \the [src] again to halt the process.") return @@ -263,7 +245,7 @@ if (occupant.client) occupant.client.eye = occupant.client.mob occupant.client.perspective = MOB_PERSPECTIVE - occupant.forceMove(T) + occupant.forceMove(src.loc) occupant = null build_icon() src.use_power = 1 @@ -301,9 +283,9 @@ return /obj/machinery/recharge_station/proc/mob_enter(mob/living/R) - if(stat & (NOPOWER|BROKEN|FORCEDISABLE) || !anchored) + if(stat & (NOPOWER|BROKEN) || !anchored) return - if (R.stat == 2) + if (R.stat == 2 || !R.canmove) //Whoever had it so that a borg with a dead cell can't enter this thing should be shot. --NEO return if (src.occupant) @@ -328,9 +310,6 @@ else if(some_cell.maxcharge > RR.cell.maxcharge) to_chat(usr, "Power Cell upgrade available. You may opt in with the 'Apply Cell Upgrade' verb in the Object tab.") - else if(ishuman(R) && autoborger && !is_borging) - do_autoborg() - /obj/machinery/recharge_station/togglePanelOpen(var/obj/toggleitem, mob/user) if(occupant) @@ -353,118 +332,3 @@ if(occupant) return occupant.get_cell() return locate(/obj/item/weapon/cell) in upgrade_holder - -/obj/machinery/recharge_station/proc/do_autoborg() - if(!ishuman(occupant)) - return - var/mob/living/carbon/human/H = occupant - if(is_borging) - return - is_borging = TRUE - - var/limbs_to_ignore = list(/datum/organ/external/head, /datum/organ/external/chest, /datum/organ/external/groin) - var/list/limbs = list() - for(var/datum/organ/external/E in H.organs) - if(!E.is_robotic() && !is_type_in_list(E, limbs_to_ignore)) - limbs += E - - build_icon() - flick("borgchargerfuckstart", src) - H.AdjustKnockdown(10) - playsound(src, 'sound/machines/juicer.ogg', 80, 1) - - // Mangle their limbs! - for(var/datum/organ/external/E in limbs) - if(!src) - return - if(prob(25)) - spark(src) - if(prob(50)) - H.audible_scream() - shake(1, 3) - E.explode() - H.handle_regular_hud_updates() - sleep(10) - - if(!src) - return - - var/mob/living/silicon/robot/R - if(make_mommis) - R = H.MoMMIfy(TRUE, TRUE, aiowner) - else - R = H.Robotize(TRUE , TRUE , aiowner) - - occupant = R - - if(!R) - visible_message("\The [src.name] throws an exception. Lifeform not compatible with factory.") - if (aiowner) - var/datum/role/malfAI/my_malf = aiowner.mind?.GetRole(MALF) - if (my_malf) - my_malf.add_power(50) - to_chat(aiowner, "Incompatible lifeform biomass reprocessed into computing power.") - is_borging = FALSE - return - - R.cell.maxcharge = 5000 - R.cell.charge = 5000 - R.SetKnockdown(3) - - R.custom_name = pick(autoborg_silly_names) - R.namepick_uses = 1 - R.updateicon() - R.updatename() - flick("borgchargerfuckend", src) - playsound(src, 'sound/machines/ding.ogg', 50, 0) - spawn(5) - build_icon() - is_borging = FALSE - go_out() - - -/obj/machinery/recharge_station/MouseDropFrom(atom/over_object, src_location, var/atom/over_location, src_control, over_control, params) - if(!ishigherbeing(usr) && !isrobot(usr) || usr.incapacitated() || usr.lying) - return - if(!occupant) - to_chat(usr, "\The [src] is unoccupied!") - return - if(is_borging) - to_chat(usr, "\The [src] won't budge!") - return - var/turf/T = get_turf(over_location) - if(!istype(T) || T.density) - return - if(!Adjacent(T) || !Adjacent(usr) || !usr.Adjacent(T)) - return - for(var/atom/movable/A in T.contents) - if(A.density) - if((A == src) || istype(A, /mob)) - continue - return - go_out(T) - - -/obj/machinery/recharge_station/MouseDropTo(atom/movable/O as mob|obj, mob/user as mob) - if(!isliving(O) || !isliving(user)) - return - if(O.loc == user || !isturf(O.loc) || !isturf(user.loc) || !user.Adjacent(O)) - return - if(user.incapacitated() || user.lying) - return - if(!Adjacent(user) || !user.Adjacent(src)) - return - if(O.locked_to) - return - if(O.anchored) - return - if(!isrobot(O) && !ishuman(O)) - return - if(!isrobot(user) && !ishuman(user)) - return - var/mob/living/L = O - if(L.stat == DEAD) - to_chat(user, "[O] is already dead!") - return - if(do_after(user, src, 20)) - mob_enter(O) diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index 2de85d0a986..eeda2fc7fec 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -61,7 +61,7 @@ var/list/obj/machinery/requests_console/requests_consoles = list() update_icon() /obj/machinery/requests_console/update_icon() - if(stat & (FORCEDISABLE|NOPOWER)) + if(stat & NOPOWER) if(icon_state != "req_comp_off") icon_state = "req_comp_off" else @@ -215,12 +215,12 @@ var/list/obj/machinery/requests_console/requests_consoles = list() if(10) //send announcement dat += text("Station wide announcement

") - if(announceAuth || is_malf_owner(user)) + if(announceAuth) dat += text("Authentication accepted

") else dat += text("Swipe your card to authenticate yourself.

") dat += text("Message: [message] Write

") - if ((announceAuth || is_malf_owner(user)) && message) + if (announceAuth && message) dat += text("Announce
") dat += text("
Back
") diff --git a/code/game/machinery/scp_294.dm b/code/game/machinery/scp_294.dm index 8778f284c8a..54693b237cd 100644 --- a/code/game/machinery/scp_294.dm +++ b/code/game/machinery/scp_294.dm @@ -22,14 +22,8 @@ machine_flags = FIXED2WORK | EMAGGABLE | WRENCHMOVE mech_flags = MECH_SCAN_FAIL - hack_abilities = list( - /datum/malfhack_ability/toggle/disable, - /datum/malfhack_ability/oneuse/overload_quiet, - /datum/malfhack_ability/oneuse/emag - ) - /obj/machinery/chem_dispenser/scp_294/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open=NANOUI_FOCUS) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return if((user.stat && !isobserver(user)) || user.restrained()) return @@ -66,7 +60,7 @@ ui.open() /obj/machinery/chem_dispenser/scp_294/Topic(href, href_list) - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) return 0 // don't update UIs attached to this object if(href_list["ejectBeaker"]) diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index ab08572a9d5..ed73b619157 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -125,31 +125,25 @@ spawn(20) if(src) opacity = 0 /obj/machinery/shieldgen - name = "Emergency shield projector" - desc = "Used to seal minor hull breaches." - icon = 'icons/obj/objects.dmi' - icon_state = "shieldoff" - density = 1 - opacity = 0 - anchored = 0 - pressure_resistance = 2*ONE_ATMOSPHERE - req_access = list(access_engine) - var/const/max_health = 100 - var/health = max_health - var/active = 0 - var/malfunction = 0 //Malfunction causes parts of the shield to slowly dissapate - var/list/deployed_shields = list() - var/locked = 0 - ghost_read = 0 - ghost_write = 0 + name = "Emergency shield projector" + desc = "Used to seal minor hull breaches." + icon = 'icons/obj/objects.dmi' + icon_state = "shieldoff" + density = 1 + opacity = 0 + anchored = 0 + pressure_resistance = 2*ONE_ATMOSPHERE + req_access = list(access_engine) + var/const/max_health = 100 + var/health = max_health + var/active = 0 + var/malfunction = 0 //Malfunction causes parts of the shield to slowly dissapate + var/list/deployed_shields = list() + var/locked = 0 + ghost_read = 0 + ghost_write = 0 - machine_flags = EMAGGABLE | WRENCHMOVE | FIXED2WORK | SCREWTOGGLE - - hack_abilities = list( - /datum/malfhack_ability/toggle/disable, - /datum/malfhack_ability/oneuse/overload_quiet, - /datum/malfhack_ability/oneuse/emag - ) + machine_flags = EMAGGABLE | WRENCHMOVE | FIXED2WORK | SCREWTOGGLE /obj/machinery/shieldgen/Destroy() for(var/obj/machinery/shield/shield_tile in deployed_shields) diff --git a/code/game/machinery/smartglass.dm b/code/game/machinery/smartglass.dm index 8e28799772c..ce17876af40 100644 --- a/code/game/machinery/smartglass.dm +++ b/code/game/machinery/smartglass.dm @@ -70,7 +70,7 @@ // Overwrite standard behavior else it'll never work /obj/machinery/smartglass_electronics/Topic(href, href_list) - if(stat & (FORCEDISABLE|NOPOWER|BROKEN)) + if(stat & (NOPOWER|BROKEN)) to_chat(usr, "WARNING: Device is not powered.") return 1 if(href_list["close"]) diff --git a/code/game/machinery/station_map.dm b/code/game/machinery/station_map.dm index e9881fd3e23..2006c8b997d 100644 --- a/code/game/machinery/station_map.dm +++ b/code/game/machinery/station_map.dm @@ -98,7 +98,7 @@ var/list/station_holomaps = list() to_chat(user, "You need to stand in front of \the [src].") return - if(isliving(user) && anchored && !(stat & (FORCEDISABLE|NOPOWER|BROKEN))) + if(isliving(user) && anchored && !(stat & (NOPOWER|BROKEN))) if(user.hud_used && user.hud_used.holomap_obj) holomap_datum.station_map.loc = user.hud_used.holomap_obj holomap_datum.station_map.alpha = 0 @@ -128,7 +128,7 @@ var/list/station_holomaps = list() user.station_holomap.toggleHolomap(user, isAI(user)) /obj/machinery/station_map/process() - if((stat & (NOPOWER|BROKEN|FORCEDISABLE)) || !anchored) + if((stat & (NOPOWER|BROKEN)) || !anchored) stopWatching() checkPosition() @@ -159,7 +159,7 @@ var/list/station_holomaps = list() overlays.len = 0 if(stat & BROKEN) icon_state = "station_mapb" - else if((stat & (FORCEDISABLE|NOPOWER)) || !anchored) + else if((stat & NOPOWER) || !anchored) icon_state = "station_map0" else icon_state = "station_map" @@ -402,7 +402,7 @@ var/list/station_holomaps = list() update_icon() /obj/machinery/station_map/strategic/attack_hand(var/mob/user) - if(isliving(user) && anchored && !(stat & (FORCEDISABLE|NOPOWER|BROKEN))) + if(isliving(user) && anchored && !(stat & (NOPOWER|BROKEN))) if( (holoMiniMaps.len < user.loc.z) || (holoMiniMaps[user.loc.z] == null )) to_chat(user, "It doesn't seem to be working.") return @@ -450,7 +450,7 @@ var/list/station_holomaps = list() /obj/machinery/station_map/strategic/update_icon() overlays.len = 0 - if(!(stat & (NOPOWER|BROKEN|FORCEDISABLE))) + if(!(stat & (NOPOWER|BROKEN))) if(!small_station_map) small_station_map = image(extraMiniMaps[HOLOMAP_EXTRA_STATIONMAPSMALL_NORTH+"_[map.zMainStation]"]) small_station_map.plane = ABOVE_LIGHTING_PLANE diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index baa26d8ebb5..101b02c85f8 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -73,7 +73,7 @@ var/global/list/status_displays = list() //This list contains both normal status // timed process /obj/machinery/status_display/process() - if(stat & (FORCEDISABLE|NOPOWER)) + if(stat & NOPOWER) remove_display() return if(spookymode) @@ -93,7 +93,7 @@ var/global/list/status_displays = list() //This list contains both normal status if(user.stat) to_chat(user, "Unable to connect to [src] (error #408)") return - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) to_chat(user, "Unable to connect to [src] (error #[(stat & BROKEN) ? "120" : "408"])") return @@ -122,7 +122,7 @@ var/global/list/status_displays = list() //This list contains both normal status mode = MODE_CARGO_TIMER /obj/machinery/status_display/emp_act(severity) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) ..(severity) return set_picture("ai_bsod") @@ -374,14 +374,15 @@ var/global/list/status_display_images = list( if(isAI(user)) //This allows AIs to load any image into the status displays var/mob/living/silicon/ai/A = user + //Some fluff if(user.stat) to_chat(user, "Unable to connect to [src] (error #408)") return - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) to_chat(user, "Unable to connect to [src] (error #[(stat & BROKEN) ? "120" : "408"])") return - + var/new_icon = input(A, "Load an image to be desplayed on [src].", "AI status display") in status_display_images if(new_icon) @@ -390,7 +391,7 @@ var/global/list/status_display_images = list( src.set_picture(status_display_images[new_icon]) /obj/machinery/ai_status_display/process() - if(stat & (NOPOWER|FORCEDISABLE)) + if(stat & NOPOWER) overlays.len = 0 return if(spookymode) @@ -401,7 +402,7 @@ var/global/list/status_display_images = list( update() /obj/machinery/ai_status_display/emp_act(severity) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) ..(severity) return set_picture("ai_bsod") diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 9a4b9c72950..06dbd458604 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -31,12 +31,6 @@ machine_flags = SCREWTOGGLE - hack_abilities = list( - /datum/malfhack_ability/toggle/disable, - /datum/malfhack_ability/oneuse/overload_quiet, - /datum/malfhack_ability/oneuse/emag - ) - //The units themselves///////////////// @@ -169,7 +163,7 @@ /obj/machinery/suit_storage_unit/update_icon() overlays.len = 0 - if((stat & (FORCEDISABLE|NOPOWER)) || (stat & BROKEN)) + if((stat & NOPOWER) || (stat & BROKEN)) icon_state = "suitstorage-off" if(department != "null") overlays += openimage @@ -222,7 +216,7 @@ var/dat if(..()) return - if(stat & (FORCEDISABLE|NOPOWER)) + if(stat & NOPOWER) return if(emagged) @@ -609,7 +603,7 @@ if (!isopen) to_chat(usr, "The unit's doors are shut.") return - if ((stat & (FORCEDISABLE|NOPOWER)) || (stat & BROKEN)) + if ((stat & NOPOWER) || (stat & BROKEN)) to_chat(usr, "The unit is not operational.") return if ( (occupant) || (helmet) || (suit) || boots ) @@ -647,13 +641,13 @@ stat &= !BROKEN emagged = FALSE to_chat(user, "You repair the blown out electronics in the suit storage unit.") - if((stat & (FORCEDISABLE|NOPOWER)) && iscrowbar(I) && !islocked) + if((stat & NOPOWER) && iscrowbar(I) && !islocked) playsound(src, 'sound/items/Deconstruct.ogg', 50, 1) to_chat(user, "You begin prying the equipment out of the suit storage unit") if(do_after(user, src,20)) dump_everything() update_icon() - if(stat & (FORCEDISABLE|NOPOWER)) + if(stat & NOPOWER) return if(..()) return 1 @@ -664,7 +658,7 @@ if (!isopen) to_chat(usr, "The unit's doors are shut.") return - if ((stat & (FORCEDISABLE|NOPOWER)) || (stat & BROKEN)) + if ((stat & NOPOWER) || (stat & BROKEN)) to_chat(usr, "The unit is not operational.") return if ( (occupant) || (helmet) || (suit) || boots) //Unit needs to be absolutely empty @@ -747,6 +741,12 @@ updateUsrDialog() return + +/obj/machinery/suit_storage_unit/attack_ai(mob/user as mob) + add_hiddenprint(user) + return attack_hand(user) + + /obj/machinery/suit_storage_unit/attack_paw(mob/user as mob) to_chat(user, "The console controls are far too complicated for your tiny brain!") return diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm index 7f9db036c4f..7a57b046548 100644 --- a/code/game/machinery/telecomms/broadcaster.dm +++ b/code/game/machinery/telecomms/broadcaster.dm @@ -22,12 +22,6 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept machinetype = 5 delay = 7 - hack_abilities = list( - /datum/malfhack_ability/fake_message, - /datum/malfhack_ability/toggle/disable, - /datum/malfhack_ability/oneuse/overload_quiet - ) - /obj/machinery/telecomms/broadcaster/New() ..() component_parts = newlist( diff --git a/code/game/machinery/telecomms/logbrowser.dm b/code/game/machinery/telecomms/logbrowser.dm index 8a04d465156..4aeb404c1b5 100644 --- a/code/game/machinery/telecomms/logbrowser.dm +++ b/code/game/machinery/telecomms/logbrowser.dm @@ -23,7 +23,7 @@ /obj/machinery/computer/telecomms/server/attack_hand(mob/user as mob) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return user.set_machine(src) var/dat = "Telecommunication Server Monitor
Telecommunications Server Monitor
" diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm index b4941d84748..5994faeed31 100644 --- a/code/game/machinery/telecomms/machine_interactions.dm +++ b/code/game/machinery/telecomms/machine_interactions.dm @@ -63,7 +63,7 @@ if(!I.is_multitool(user)) return - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return var/dat diff --git a/code/game/machinery/telecomms/multicaster.dm b/code/game/machinery/telecomms/multicaster.dm index 95b80029317..3f67a691315 100644 --- a/code/game/machinery/telecomms/multicaster.dm +++ b/code/game/machinery/telecomms/multicaster.dm @@ -36,7 +36,7 @@ var/list/pda_multicasters = list() ..() /obj/machinery/pda_multicaster/update_icon() - if(stat & (FORCEDISABLE|BROKEN|NOPOWER|EMPED)) + if(stat & (BROKEN|NOPOWER|EMPED)) icon_state = "pda_server-nopower" else icon_state = "pda_server-[on ? "on" : "off"]" @@ -52,7 +52,7 @@ var/list/pda_multicasters = list() update_icon() /obj/machinery/pda_multicaster/proc/check_status() - return !(stat&(FORCEDISABLE|BROKEN|NOPOWER|EMPED))&&on + return !(stat&(BROKEN|NOPOWER|EMPED))&&on /obj/machinery/pda_multicaster/proc/update_PDAs(var/turn_off) for(var/obj/item/device/pda/pda in contents) diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm index b618d3f5dee..fac54410633 100644 --- a/code/game/machinery/telecomms/telecomunications.dm +++ b/code/game/machinery/telecomms/telecomunications.dm @@ -35,10 +35,6 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() var/hide = 0 // Is it a hidden machine? var/listening_level = 0 // 0 = auto set in New() - this is the z level that the machine is listening to. - hack_abilities = list( - /datum/malfhack_ability/toggle/disable, - /datum/malfhack_ability/oneuse/overload_quiet, - ) /obj/machinery/telecomms/proc/relay_information(datum/signal/signal, filter, copysig, amount = 20) // relay signal to all linked machinery that are of type [filter]. If signal has been sent [amount] times, stop sending @@ -196,7 +192,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() /obj/machinery/telecomms/proc/update_power() if(toggled) - if(stat & (BROKEN|NOPOWER|EMPED|FORCEDISABLE) || get_integrity() <= 0) // if powered, on. if not powered, off. if too damaged, off + if(stat & (BROKEN|NOPOWER|EMPED) || get_integrity() <= 0) // if powered, on. if not powered, off. if too damaged, off on = FALSE else on = TRUE @@ -264,7 +260,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() /obj/machinery/telecomms/proc/produce_heat() if(!heating_power) return - if(!(stat & (NOPOWER|BROKEN|FORCEDISABLE))) //Blatently stolen from space heater. + if(!(stat & (NOPOWER|BROKEN))) //Blatently stolen from space heater. var/turf/simulated/L = loc if(istype(L)) var/datum/gas_mixture/env = L.return_air() @@ -289,14 +285,6 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() idle_power_usage = 30 machinetype = 1 - var/blackout_active = FALSE - hack_abilities = list( - /datum/malfhack_ability/toggle/disable, - /datum/malfhack_ability/oneuse/overload_quiet, - /datum/malfhack_ability/toggle/radio_blackout - ) - - /obj/machinery/telecomms/receiver/New() ..() @@ -311,11 +299,6 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() RefreshParts() -/obj/machinery/telecomms/receiver/Destroy() - if(blackout_active) - malf_radio_blackout = FALSE - ..() - /obj/machinery/telecomms/receiver/receive_signal(datum/signal/signal) #ifdef SAY_DEBUG var/mob/mob = signal.data["mob"] diff --git a/code/game/machinery/telecomms/telemonitor.dm b/code/game/machinery/telecomms/telemonitor.dm index 0d72fc73147..69d7415a7c9 100644 --- a/code/game/machinery/telecomms/telemonitor.dm +++ b/code/game/machinery/telecomms/telemonitor.dm @@ -28,7 +28,7 @@ light_color = LIGHT_COLOR_GREEN /obj/machinery/computer/telecomms/monitor/attack_hand(mob/user as mob) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return user.set_machine(src) var/dat = "Telecommunications Monitor
Telecommunications Monitor
" diff --git a/code/game/machinery/telecomms/traffic_control.dm b/code/game/machinery/telecomms/traffic_control.dm index daf5fdf8d1a..f9ce3231f2e 100644 --- a/code/game/machinery/telecomms/traffic_control.dm +++ b/code/game/machinery/telecomms/traffic_control.dm @@ -32,7 +32,7 @@ /obj/machinery/computer/telecomms/traffic/process() - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) stop_editing() return @@ -86,7 +86,7 @@ /obj/machinery/computer/telecomms/traffic/attack_hand(mob/user as mob) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return user.set_machine(src) var/dat = "Telecommunication Traffic Control
Telecommunications Traffic Control
" diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index cb2b7507967..a7ed5f76420 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -22,7 +22,7 @@ return 1 else if(istype(I, /obj/item/weapon/card/data/)) var/obj/item/weapon/card/data/C = I - if(stat & (FORCEDISABLE|NOPOWER|BROKEN) & (C.function != "teleporter")) + if(stat & (NOPOWER|BROKEN) & (C.function != "teleporter")) src.attack_hand() var/obj/L = null @@ -186,7 +186,7 @@ /obj/machinery/computer/teleporter/proc/change_freq(var/mob/user) var/newfreq = input("Input a new frequency for the teleporter", "Frequency", null) as null|num - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return 0 var/ghost_flags=0 if(ghost_write) @@ -215,7 +215,7 @@ set src in oview(1) set desc = "ID Tag:" - if(stat & (NOPOWER|BROKEN|FORCEDISABLE) || !istype(usr,/mob/living)) + if(stat & (NOPOWER|BROKEN) || !istype(usr,/mob/living)) return if (t) src.id = t @@ -271,12 +271,12 @@ /obj/machinery/teleport/hub/power_change() ..() - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) engaged = 0 update_icon() /obj/machinery/teleport/hub/update_icon() - if(stat & (BROKEN|NOPOWER|FORCEDISABLE) || !engaged) + if(stat & (BROKEN|NOPOWER) || !engaged) icon_state = "tele0" set_light(0) else @@ -373,12 +373,12 @@ /obj/machinery/teleport/station/power_change() ..() - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) disengage() update_icon() /obj/machinery/teleport/station/update_icon() - if(stat & (FORCEDISABLE|NOPOWER)) + if(stat & NOPOWER) icon_state = "controller-p" else icon_state = "controller" @@ -402,11 +402,11 @@ src.engage() /obj/machinery/teleport/station/proc/engage() - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return var/count = 0 for(var/obj/machinery/teleport/hub/hub in orange(1, src)) - if(hub.stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(hub.stat & (BROKEN|NOPOWER)) continue count++ hub.engaged = 1 @@ -464,7 +464,7 @@ to_chat(user,"Due to the alert, it is set to travel to [get_area(embeacon)].") /obj/machinery/teleport/hub/emergency/power_change() - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) engaged = FALSE else engaged = emergency diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm index 68f2cf8b0f4..7d513aa4516 100644 --- a/code/game/machinery/turrets.dm +++ b/code/game/machinery/turrets.dm @@ -18,7 +18,6 @@ var/reqpower = 350 // Amount of power per shot var/shot_delay = 30 //3 seconds between shots - var/last_shot var/fire_twice = 0 use_power = 1 // this turret uses and requires power @@ -28,15 +27,6 @@ var/atom/movable/cur_target var/targeting_active = 0 - hack_abilities = list( - /datum/malfhack_ability/toggle/disable, - /datum/malfhack_ability/oneuse/turret_upgrade, - /datum/malfhack_ability/oneuse/turret_pulse, - /datum/malfhack_ability/oneuse/overload_loud, - /datum/malfhack_ability/manual_control - ) - - var/mob/living/silicon/ai/controlling_malf = null /obj/machinery/turret/New() // targets = new @@ -62,7 +52,7 @@ icon_state = "grey_target_prism" else if( powered() ) - if (src.enabled && !(stat & FORCEDISABLE)) + if (src.enabled) if(istype(installed,/obj/item/weapon/gun/energy/gun)) var/obj/item/weapon/gun/energy/gun/EG = installed if(EG.mode == 1) @@ -156,7 +146,7 @@ return new_target /obj/machinery/turret/process() - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) // if the turret has no power or is broken, make the turret pop down if it hasn't already popDown() return @@ -167,15 +157,9 @@ if(raised && !raising) popDown() return - - if(controlling_malf) // manually controlled by a malf AI - if(!raised && !raising) - popUp() - use_power = 2 - return - if(!check_target(cur_target)) //if current target fails target check - if(fire_twice) + if(fire_twice) + src.dir = get_dir(src, cur_target) shootAt(cur_target) cur_target = get_new_target() else @@ -204,6 +188,7 @@ /obj/machinery/turret/proc/target() while(src && enabled && !stat && check_target(cur_target)) + src.dir = get_dir(src, cur_target) shootAt(cur_target) cur_target = get_new_target() sleep(shot_delay) @@ -214,15 +199,10 @@ var/turf/U = get_turf(target) if (!istype(T) || !istype(U)) return - if(world.time < last_shot + shot_delay) - return - - src.dir = get_dir(src, target) + use_power(reqpower) playsound(src, installed.fire_sound, 75, 1) - - last_shot = world.time var/obj/item/projectile/A if(istype(installed, /obj/item/weapon/gun/projectile/roulette_revolver)) var/obj/item/weapon/gun/projectile/roulette_revolver/R = installed @@ -356,24 +336,6 @@ qdel(cover) cover = null - -/obj/machinery/turret/proc/malf_take_control(mob/living/silicon/ai/A) - if(!A.eyeobj) - A.make_eyeobj() - A.eyeobj.forceMove(get_turf(src)) - A.current = src - controlling_malf = A - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) - return - if(!enabled) - return - popUp() - -/obj/machinery/turret/proc/malf_release_control() - if(controlling_malf) - controlling_malf.current = null - controlling_malf = null - /obj/machinery/turretid name = "turret control switchboard" desc = "A card reader attached to a small switchboard with a big status light. The button labelled 'lethal' has a post-it note under it, showing a skull and crossbones." @@ -419,12 +381,12 @@ to_chat(user, "You short out [src]'s access analysis and threat indicator module.") if(user.machine == src) attack_hand(user) - update_icon() //Update the icon immediately since emagging removes the turret threat indicator + update_icons() //Update the icon immediately since emagging removes the turret threat indicator return 1 return /obj/machinery/turretid/attackby(obj/item/weapon/W, mob/user) - if(stat & (BROKEN|FORCEDISABLE)) + if(stat & BROKEN) return if(issilicon(user)) return attack_hand(user) @@ -452,7 +414,7 @@ /obj/machinery/turretid/attack_ai(mob/user as mob) add_hiddenprint(user) - if(!ailock || isAdminGhost(user) || is_malf_owner(user)) + if(!ailock || isAdminGhost(user)) return attack_hand(user) else to_chat(user, "There seems to be a firewall preventing you from accessing [src].") @@ -521,25 +483,19 @@ return ..() //All AI shortcuts. Basing this on what airlocks do, so slight clash with user (Alt is dangerous so toggle stun/lethal, Ctrl is bolts so lock, Shift is 'open' so toggle turrets) -/obj/machinery/turretid/AIAltClick(mob/living/silicon/ai/user) //Stun/lethal toggle - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) - return - if(!ailock || is_malf_owner(user)) +/obj/machinery/turretid/AIAltClick() //Stun/lethal toggle + if(!ailock) lethal = !lethal to_chat(usr, "You switch the turrets to [lethal ? "lethal":"stun"].") updateTurrets() -/obj/machinery/turretid/AICtrlClick(mob/living/silicon/ai/user) //Lock the device - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) - return - if(!ailock || is_malf_owner(user)) +/obj/machinery/turretid/AICtrlClick() //Lock the device + if(!ailock) locked = !locked to_chat(usr, "You [locked ? "lock" : "unlock"] the switchboard panel.") -/obj/machinery/turretid/AIShiftClick(mob/living/silicon/ai/user) //Toggle the turrets on/off - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) - return - if(!ailock || is_malf_owner(user)) +/obj/machinery/turretid/AIShiftClick() //Toggle the turrets on/off + if(!ailock) enabled = !enabled to_chat(usr, "You [enabled ? "enable":"disable"] the turrets.") updateTurrets() @@ -548,12 +504,10 @@ if(control_area) for(var/obj/machinery/turret/aTurret in control_area.contents) aTurret.setState(enabled, lethal) - update_icon() + update_icons() -/obj/machinery/turretid/update_icon() - if(stat & (BROKEN|FORCEDISABLE)) - icon_state = "turretid_off" - else if(enabled && !emagged) //Emagged turret controls are always disguised as disabled +/obj/machinery/turretid/proc/update_icons() + if(enabled && !emagged) //Emagged turret controls are always disguised as disabled if(lethal) icon_state = "turretid_lethal" else @@ -747,10 +701,4 @@ /obj/machinery/turret/centcomm/update_gun() if(!installed) - installed = new /obj/item/weapon/gun/energy/laser/cannon(src) - -/obj/machinery/turretcover/hack_interact(var/mob/living/silicon/ai/malf) - host.hack_interact(malf) - -/obj/machinery/turretcover/malf_disrupt(var/duration, var/bypassafter = FALSE) - return + installed = new /obj/item/weapon/gun/energy/laser/cannon(src) \ No newline at end of file diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index fadcc26aab0..847e3623ae9 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -85,13 +85,6 @@ var/global/num_vending_terminals = 1 var/is_being_filled = FALSE // `in_use` from /obj is already used for tracking users of this machine's UI var/credits_held = 0 // How many credits in the machine - hack_abilities = list( - /datum/malfhack_ability/toggle/disable, - /datum/malfhack_ability/oneuse/overload_quiet, - /datum/malfhack_ability/oneuse/emag - ) - - /atom/movable/proc/product_name() return name /obj/item/stack/product_name() @@ -225,7 +218,7 @@ var/global/num_vending_terminals = 1 return ..() /obj/machinery/vending/MouseDropTo(atom/movable/O as mob|obj, mob/user as mob) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return if(user.incapacitated() || user.lying) @@ -340,7 +333,7 @@ var/global/num_vending_terminals = 1 qdel(src) /obj/machinery/vending/emp_act(severity) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return switch(severity) if(1.0) @@ -658,6 +651,10 @@ var/global/num_vending_terminals = 1 /obj/machinery/vending/attack_paw(mob/user as mob) return attack_hand(user) +/obj/machinery/vending/attack_ai(mob/user as mob) + src.add_hiddenprint(user) + return attack_hand(user) + /obj/machinery/vending/proc/GetProductLine(var/datum/data/vending_product/P) var/micon = !isnull(P.mini_icon) ? "[P.mini_icon]" : "" var/dat = {"[micon][P.product_name]: @@ -710,7 +707,7 @@ var/global/num_vending_terminals = 1 return null /obj/machinery/vending/proc/TurnOff(var/ticks) //Turn off for a while. 10 ticks = 1 second - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return stat |= NOPOWER @@ -724,7 +721,7 @@ var/global/num_vending_terminals = 1 /obj/machinery/vending/proc/update_vicon() if(stat & (BROKEN)) src.icon_state = "[initial(icon_state)]-broken" - else if (stat & (NOPOWER|FORCEDISABLE)) + else if (stat & (NOPOWER)) src.icon_state = "[initial(icon_state)]-off" else src.icon_state = "[initial(icon_state)]" @@ -764,7 +761,7 @@ var/global/num_vending_terminals = 1 to_chat(user, "The glass in \the [src] is broken, it refuses to work.") return - if(stat & (NOPOWER|FORCEDISABLE)) + if(stat & (NOPOWER)) to_chat(user, "\The [src] is dark and unresponsive.") return @@ -1102,7 +1099,7 @@ var/global/num_vending_terminals = 1 src.updateUsrDialog() /obj/machinery/vending/process() - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return if(!src.active) @@ -1137,7 +1134,7 @@ var/global/num_vending_terminals = 1 return pick(product_slogans) /obj/machinery/vending/proc/speak(var/message, var/mob/living/M) - if(stat & (NOPOWER|FORCEDISABLE)) + if(stat & NOPOWER) return if(!message) diff --git a/code/game/machinery/weathercontrol.dm b/code/game/machinery/weathercontrol.dm index 0a1e9599824..467ca2aabdf 100644 --- a/code/game/machinery/weathercontrol.dm +++ b/code/game/machinery/weathercontrol.dm @@ -96,7 +96,7 @@ if(!allowed(usr) && !emagged) to_chat(usr,"Access denied.") return - if(stat & (FORCEDISABLE|NOPOWER)) + if(stat & NOPOWER) return var/datum/climate/C = map.climate var/datum/weather/CW = C.current_weather @@ -104,7 +104,7 @@ var/feedback = NOFIRE var/usedcost = 0 - if(stat & (FORCEDISABLE|NOPOWER)) + if(stat & NOPOWER) feedback = POWER_ERROR else if(href_list["disrupt"]) diff --git a/code/game/mecha/mech_bay.dm b/code/game/mecha/mech_bay.dm index 73ac274cbac..4149ab206a5 100644 --- a/code/game/mecha/mech_bay.dm +++ b/code/game/mecha/mech_bay.dm @@ -122,7 +122,7 @@ set_voltage(450+lasercount*100) /obj/machinery/mech_bay_recharge_port/proc/start_charge(var/obj/recharging_mecha) - if(stat&(NOPOWER|BROKEN|FORCEDISABLE)) + if(stat&(NOPOWER|BROKEN)) to_mech(recharging_mecha,"Power port not responding. Terminating.") return 0 else @@ -208,7 +208,7 @@ light_color = LIGHT_COLOR_PINK /obj/machinery/computer/mech_bay_power_console/proc/mecha_in(var/obj/O) - if(stat&(FORCEDISABLE|NOPOWER|BROKEN)) + if(stat&(NOPOWER|BROKEN)) to_mech(O,"Control console not responding. Terminating...") return if(recharge_port && autostart) diff --git a/code/game/mecha/mecha_control_console.dm b/code/game/mecha/mecha_control_console.dm index 3cfe7b25b47..cf2c695e5b3 100644 --- a/code/game/mecha/mecha_control_console.dm +++ b/code/game/mecha/mecha_control_console.dm @@ -10,6 +10,10 @@ light_color = LIGHT_COLOR_PINK +/obj/machinery/computer/mecha/attack_ai(var/mob/user as mob) + src.add_hiddenprint(user) + return src.attack_hand(user) + /obj/machinery/computer/mecha/attack_paw(var/mob/user as mob) return src.attack_hand(user) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index a7c94f160de..f610019b56d 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -2341,7 +2341,7 @@ var/global/msg_id = 0 var/datum/pda_app/balance_check/app = locate(/datum/pda_app/balance_check) in applications if(!app.linked_db) app.reconnect_database() //Make one attempt to reconnect - if(!app.linked_db || !app.linked_db.activated || app.linked_db.stat & (FORCEDISABLE|BROKEN|NOPOWER)) + if(!app.linked_db || !app.linked_db.activated || app.linked_db.stat & (BROKEN|NOPOWER)) to_chat(user, "[bicon(src)] No connection to account database.") return 0 if(istype(user,/mob/living/carbon/human)) @@ -2360,7 +2360,7 @@ var/global/msg_id = 0 var/datum/pda_app/balance_check/app = locate(/datum/pda_app/balance_check) in applications if(!app.linked_db) app.reconnect_database() - if(!app.linked_db || !app.linked_db.activated || app.linked_db.stat & (FORCEDISABLE|BROKEN|NOPOWER)) + if(!app.linked_db || !app.linked_db.activated || app.linked_db.stat & (BROKEN|NOPOWER)) return 0 //This sends its own error message var/turf/U = get_turf(src) if(!silent) diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm index b7ba647b201..464134a8cac 100644 --- a/code/game/objects/items/devices/PDA/cart.dm +++ b/code/game/objects/items/devices/PDA/cart.dm @@ -380,7 +380,7 @@ Code: var/found = 0 for(var/obj/machinery/computer/powermonitor/pMon in power_machines) - if(!(pMon.stat & (FORCEDISABLE|NOPOWER|BROKEN))) + if(!(pMon.stat & (NOPOWER|BROKEN))) var/turf/T = get_turf(src) if(T.z == pMon.z)//the application may only detect power monitoring computers on its Z-level. if(!found) @@ -430,7 +430,7 @@ Code: var/found = 0 for(var/obj/machinery/computer/station_alert/aMon in machines) - if(!(aMon.stat & (FORCEDISABLE|NOPOWER|BROKEN))) + if(!(aMon.stat & (NOPOWER|BROKEN))) var/turf/T = get_turf(src) if(T.z == aMon.z)//the application may only detect station alert computers on its Z-level. if(!found) diff --git a/code/game/objects/items/devices/ioncannon_remote.dm b/code/game/objects/items/devices/ioncannon_remote.dm index 5e45df157f6..89d2a8e487e 100644 --- a/code/game/objects/items/devices/ioncannon_remote.dm +++ b/code/game/objects/items/devices/ioncannon_remote.dm @@ -49,7 +49,7 @@ log_admin("[key_name(user)] generated an ion law using a LOIC remote.") for (var/obj/machinery/computer/communications/C in machines) - if(! (C.stat & (FORCEDISABLE|BROKEN|NOPOWER) ) ) + if(! (C.stat & (BROKEN|NOPOWER) ) ) var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( C.loc ) P.name = "'[command_name()] Update.'" P.info = "Station Time: [worldtime2text()]

Malicious Interference with standard AI-Subsystems detected.

Signal traced to [get_area(src).name]. Investigation recommended." diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index f3155d9a0d9..569a3f66958 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -40,11 +40,9 @@ /obj/item/device/radio/intercom/attack_ai(mob/user as mob) add_hiddenprint(user) - if(isrobot(user)) - if(user.client && user.client.eye == user) - return attack_self(user) - else - return attack_self(user) + add_fingerprint(user) + spawn (0) + attack_self(user) /obj/item/device/radio/intercom/attack_paw(mob/user as mob) return attack_hand(user) diff --git a/code/game/objects/items/devices/reportintercom.dm b/code/game/objects/items/devices/reportintercom.dm index a2d732f20cf..55f64590653 100644 --- a/code/game/objects/items/devices/reportintercom.dm +++ b/code/game/objects/items/devices/reportintercom.dm @@ -26,7 +26,7 @@ if(!customname) customname = "Nanotrasen Update" for (var/obj/machinery/computer/communications/C in machines) - if(! (C.stat & (FORCEDISABLE|BROKEN|NOPOWER) ) ) + if(! (C.stat & (BROKEN|NOPOWER) ) ) var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( C.loc ) P.name = "'[command_name()] Update.'" P.info = input diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index bb7ac33c307..a8e1922ee26 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -180,9 +180,6 @@ return target.emag_act(user) - -var/list/global/id_cards = list() - /obj/item/weapon/card/id name = "identification card" desc = "A card used to provide ID and determine access across the station. Features a virtual wallet accessible by PDA." @@ -209,17 +206,11 @@ var/list/global/id_cards = list() /obj/item/weapon/card/id/New() ..() - id_cards += src - if(virtual_wallet) update_virtual_wallet() if(ishuman(loc)) SetOwnerDNAInfo(loc) -/obj/item/weapon/card/id/Destroy() - id_cards -= src - ..() - /obj/item/weapon/card/id/examine(mob/user) ..() diff --git a/code/game/objects/items/weapons/implants/implantchair.dm b/code/game/objects/items/weapons/implants/implantchair.dm index 30a22a100b4..deb1b59074c 100644 --- a/code/game/objects/items/weapons/implants/implantchair.dm +++ b/code/game/objects/items/weapons/implants/implantchair.dm @@ -161,7 +161,7 @@ set name = "Move Inside" set category = "Object" set src in oview(1) - if(usr.isUnconscious() || stat & (FORCEDISABLE|NOPOWER|BROKEN)) + if(usr.isUnconscious() || stat & (NOPOWER|BROKEN)) return put_mob(usr) return diff --git a/code/game/objects/structures/barsign.dm b/code/game/objects/structures/barsign.dm index 18c72f70b54..8d14bb86aa6 100644 --- a/code/game/objects/structures/barsign.dm +++ b/code/game/objects/structures/barsign.dm @@ -86,6 +86,7 @@ var/list/barsigns = list() var/interval_ticker = 0 var/already_fired = FALSE + /obj/structure/sign/double/barsign/Destroy() if(viscon) vis_contents -= viscon @@ -100,12 +101,12 @@ var/list/barsigns = list() /obj/structure/sign/double/barsign/ghetto req_access = null -/obj/structure/sign/double/barsign/attack_ghost(mob/user) - attack_hand(user) - /obj/structure/sign/double/barsign/attack_ai(mob/user) return attack_hand(user) +/obj/structure/sign/double/barsign/attack_ghost(mob/user) + attack_hand(user) + /obj/structure/sign/double/barsign/attack_hand(mob/user) if((!isAdminGhost(user) || !isAI(user)) && !allowed(user)) to_chat(user, "Access denied.") @@ -449,7 +450,7 @@ var/list/barsigns = list() //You get actual annoying sounds and scrambled symbol fonts If its emag'd /obj/structure/sign/double/barsign/emag_act(mob/user) - to_chat(user, "You scramble the sound files on the [src].") + to_chat(user, "You use the emag on the bar sign.") sound_selection["Rooster"] = 'sound/misc/6amRooster.wav' sound_selection["Wolf"] = 'sound/misc/6pmWolf.wav' diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 1e4c04090c4..38fc75d7af6 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -302,7 +302,6 @@ health -= rand(initial(health)*0.8, initial(health)*0.9) //Largely under broken threshold, this is used to adjust the health, NOT to break it healthcheck() //Send this to healthcheck just in case we want to do something else with it - /obj/structure/grille/broken/healthcheck(var/hitsound = 0) //needed because initial icon_state for broken is grille-b for mapping ..() if(broken) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index ad4c9195d17..448c35c30a7 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -39,8 +39,8 @@ var/list/one_way_windows var/obj/machinery/smartglass_electronics/smartwindow //holds internal machinery var/disperse_coeff = 0.95 var/is_fulltile = FALSE - /obj/structure/window/New(loc) + ..(loc) flow_flags |= ON_BORDER | KEEP_DIR setup_border_dummy() @@ -53,7 +53,6 @@ var/list/one_way_windows one_way = !one_way toggle_one_way() - /obj/structure/window/proc/update_oneway_nearby_clients() for(var/client/C in clients) if(!istype(C.mob, /mob/dead/observer) && !(M_XRAY in C.mob.mutations)) diff --git a/code/game/say.dm b/code/game/say.dm index c867b053ff4..bb3139e5e21 100644 --- a/code/game/say.dm +++ b/code/game/say.dm @@ -41,7 +41,7 @@ var/global/lastDecTalkUse = 0 /atom/movable/proc/can_speak() return 1 -/atom/movable/proc/send_speech(var/datum/speech/speech, var/range=7, var/bubble_type) +/atom/movable/proc/send_speech(var/datum/speech/speech, var/range=7) say_testing(src, "/atom/movable/proc/send_speech() start, msg = [speech.message]; message_range = [range]; language = [speech.language ? speech.language.name : "None"];") if(isnull(range)) range = 7 @@ -52,7 +52,6 @@ var/global/lastDecTalkUse = 0 listeners |= observers for(var/atom/movable/AM in listeners) AM.Hear(speech, rendered) - send_speech_bubble(speech.message, bubble_type, listeners) /atom/movable/proc/atmospheric_speech(var/datum/speech/speech, var/range=7) var/turf/T = get_turf(speech.speaker) diff --git a/code/modules/Economy/Accounts.dm b/code/modules/Economy/Accounts.dm index 1492ec42427..7cd0bd35dac 100644 --- a/code/modules/Economy/Accounts.dm +++ b/code/modules/Economy/Accounts.dm @@ -234,12 +234,12 @@ var/latejoiner_allowance = 0//Added to station_allowance and reset before every . = ..() if(.) return - if(isAdminGhost(user) || is_malf_owner(user) || (ishuman(user) && !user.stat && get_dist(src,user) <= 1)) + if(isAdminGhost(user) || (ishuman(user) && !user.stat && get_dist(src,user) <= 1)) var/dat = "Accounts Database
" dat += {"[machine_id]
Confirm identity: [held_card ? held_card : "-----"]
"} - if(access_level > 0 || isAdminGhost(user) || is_malf_owner(user)) + if(access_level > 0 || isAdminGhost(user)) dat += {"[activated ? "Disable" : "Enable"] remote access
Combined department and personnel budget is currently [station_allowance] credits. A total of [global.requested_payroll_amount] credits were requested during the last payroll cycle.
"} diff --git a/code/modules/Economy/EFTPOS.dm b/code/modules/Economy/EFTPOS.dm index f5661eb5e54..4728ffdc22e 100644 --- a/code/modules/Economy/EFTPOS.dm +++ b/code/modules/Economy/EFTPOS.dm @@ -52,7 +52,7 @@ for(var/obj/machinery/account_database/DB in account_DBs) //Checks for a database on its Z-level, else it checks for a database at the main Station. if((DB.z == src.z) || (DB.z == map.zMainStation)) - if(!(DB.stat & (NOPOWER|FORCEDISABLE)) && DB.activated )//If the database if damaged or not powered, people won't be able to use the EFTPOS anymore + if(!(DB.stat & NOPOWER) && DB.activated )//If the database if damaged or not powered, people won't be able to use the EFTPOS anymore linked_db = DB break diff --git a/code/modules/Economy/POS.dm b/code/modules/Economy/POS.dm index 5b212df4a41..849da770c74 100644 --- a/code/modules/Economy/POS.dm +++ b/code/modules/Economy/POS.dm @@ -404,7 +404,7 @@ var/const/POS_HEADER = {" /obj/machinery/pos/update_icon() overlays = 0 - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) return if(logged_in) overlays += image(icon = icon, icon_state = "pos-working") diff --git a/code/modules/Economy/utils.dm b/code/modules/Economy/utils.dm index 764a91023b7..55371b29d68 100644 --- a/code/modules/Economy/utils.dm +++ b/code/modules/Economy/utils.dm @@ -12,7 +12,7 @@ var/global/no_pin_for_debit = TRUE for(var/obj/machinery/account_database/DB in account_DBs) if(from_z > -1 && DB.z != from_z) continue - if((DB.stat & (FORCEDISABLE|NOPOWER)) || !DB.activated ) + if((DB.stat & NOPOWER) || !DB.activated ) continue var/datum/money_account/acct = DB.get_account(account_number) if(!acct) @@ -26,7 +26,9 @@ var/global/no_pin_for_debit = TRUE return D -/proc/get_card_account(var/obj/item/weapon/card/I, var/mob/user=null, var/require_pin=0) +/obj/proc/get_card_account(var/obj/item/weapon/card/I, var/mob/user=null, var/terminal_name="", var/transaction_purpose="", var/require_pin=0) + if(terminal_name=="") + terminal_name=src.name if (istype(I, /obj/item/weapon/card/id)) var/obj/item/weapon/card/id/C = I var/attempt_pin=0 @@ -102,7 +104,7 @@ var/global/no_pin_for_debit = TRUE /obj/proc/charge_flow_verify_security(var/obj/machinery/account_database/linked_db, var/obj/item/weapon/card/card, var/mob/user, var/datum/money_account/account, var/debit_requires_pin) if(!account) if(linked_db) - if(!linked_db.activated || linked_db.stat & (FORCEDISABLE|BROKEN|NOPOWER)) + if(!linked_db.activated || linked_db.stat & (BROKEN|NOPOWER)) to_chat(user, "[bicon(src)] No connection to account database.") return CARD_CAPTURE_FAILURE_NO_CONNECTION account = linked_db.get_account(card.associated_account_number) @@ -199,7 +201,7 @@ var/global/no_pin_for_debit = TRUE // To keep track of the user just so we can can cancel if they move. var/authorized = "" // For debit cards. - if(!linked_db || !linked_db.activated || linked_db.stat & (FORCEDISABLE|BROKEN|NOPOWER)) + if(!linked_db || !linked_db.activated || linked_db.stat & (BROKEN|NOPOWER)) // The account database has to avaiable, active, and not broken. to_chat(user, "[bicon(src)] No connection to account database.") return CARD_CAPTURE_FAILURE_NO_CONNECTION diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 3853603cf90..3eb4e622da9 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -676,7 +676,7 @@ Traitors and the like can also be revived with the previous role mostly intact. return for (var/obj/machinery/computer/communications/C in machines) - if(! (C.stat & (FORCEDISABLE|BROKEN|NOPOWER) ) ) + if(! (C.stat & (BROKEN|NOPOWER) ) ) var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( C.loc ) P.name = "'[command_name()] Update.'" P.info = input diff --git a/code/modules/atmos_automation/console.dm b/code/modules/atmos_automation/console.dm index 2c2636e9930..9982a96a475 100644 --- a/code/modules/atmos_automation/console.dm +++ b/code/modules/atmos_automation/console.dm @@ -54,7 +54,7 @@ icon_state += "b" // Powered - else if(stat & (FORCEDISABLE|NOPOWER)) + else if(stat & NOPOWER) icon_state = initial(icon_state) icon_state += "0" else if(on) diff --git a/code/modules/awaymissions/gateway.dm b/code/modules/awaymissions/gateway.dm index c21f4ac2556..863387142ad 100644 --- a/code/modules/awaymissions/gateway.dm +++ b/code/modules/awaymissions/gateway.dm @@ -58,7 +58,7 @@ var/list/gateways = list() //List containing the gateways on away missions /obj/machinery/gateway/centerstation/process() - if(stat & (NOPOWER|FORCEDISABLE)) + if(stat & (NOPOWER)) if(active) toggleoff() return diff --git a/code/modules/client/client defines.dm b/code/modules/client/client defines.dm index 17662402359..207b22017f2 100644 --- a/code/modules/client/client defines.dm +++ b/code/modules/client/client defines.dm @@ -21,9 +21,8 @@ var/area = null var/time_died_as_mouse = null //when the client last died as a mouse var/datum/tooltip/tooltips //datum that controls the displaying and hiding of tooltips - var/list/radial_menu_anchors = list() //keeping track of open menus so we're not gonna have several on top of each other. - var/list/radial_menus = list() - + var/list/radial_menus = list() //keeping track of open menus so we're not gonna have several on top of each other. + /////////////// //SOUND STUFF// /////////////// @@ -65,7 +64,7 @@ var/datum/chatOutput/chatOutput //////////// - //PARALLAX+OTHER PLANEMASTERS// + //PARALLAX// //////////// var/list/parallax = list() var/list/parallax_movable = list() @@ -78,10 +77,6 @@ var/obj/abstract/screen/plane_master/ghost_planemaster_dummy/ghost_planemaster_dummy = null var/obj/abstract/screen/plane_master/ghost_planemaster/darkness_planemaster = null var/obj/abstract/screen/plane_master/ghost_planemaster_dummy/darkness_planemaster_dummy = null - var/obj/abstract/screen/plane_master/ghost_planemaster/fakecamera_planemaster = null - var/obj/abstract/screen/plane_master/ghost_planemaster_dummy/fakecamera_planemaster_dummy = null - - // This gets set by goonchat. var/encoding = "1252" diff --git a/code/modules/cmc/crew.dm b/code/modules/cmc/crew.dm index f276beaa85a..539230ca08c 100644 --- a/code/modules/cmc/crew.dm +++ b/code/modules/cmc/crew.dm @@ -100,11 +100,14 @@ Crew Monitor by Paul, based on the holomaps by Deity deactivateAll() ..() +/obj/machinery/computer/crew/attack_ai(mob/user) + attack_hand(user) + /obj/machinery/computer/crew/attack_hand(mob/user) . = ..() if(.) return - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return initializeUser(user) @@ -112,7 +115,7 @@ Crew Monitor by Paul, based on the holomaps by Deity if(stat & BROKEN) icon_state = "[initial(icon_state)]b" else - if(stat & (FORCEDISABLE|NOPOWER)) + if(stat & NOPOWER) src.icon_state = "c_unpowered" stat |= NOPOWER else @@ -137,7 +140,7 @@ GENERAL PROCS //ticks to update holomap/textview /obj/machinery/computer/crew/process() - if((!_using) || (_using.len == 0) || (stat & (BROKEN|NOPOWER|FORCEDISABLE))) //sanity + if((!_using) || (_using.len == 0) || (stat & (BROKEN|NOPOWER))) //sanity deactivateAll() return diff --git a/code/modules/detectivework/detective_work.dm b/code/modules/detectivework/detective_work.dm index bf0d6d6226c..497fa6a9932 100644 --- a/code/modules/detectivework/detective_work.dm +++ b/code/modules/detectivework/detective_work.dm @@ -93,6 +93,10 @@ var/const/FINGERPRINT_COMPLETE = 6 //This is the output of the stringpercent(pri req_access = list(access_forensics_lockers) +/obj/machinery/computer/forensic_scanning/attack_ai(mob/user) + src.add_hiddenprint(user) + return attack_hand(user) + /obj/machinery/computer/forensic_scanning/attack_hand(mob/user) if(..()) return diff --git a/code/modules/events/money_hacker.dm b/code/modules/events/money_hacker.dm index bf8db1308be..5b17a721aca 100644 --- a/code/modules/events/money_hacker.dm +++ b/code/modules/events/money_hacker.dm @@ -15,7 +15,7 @@ /datum/event/money_hacker/setup() if(all_money_accounts.len) for(var/obj/machinery/account_database/DB in account_DBs) - if( DB.z == map.zMainStation && !(DB.stat&(FORCEDISABLE|NOPOWER)) && DB.activated ) + if( DB.z == map.zMainStation && !(DB.stat&NOPOWER) && DB.activated ) affected_db = DB break if(affected_db) @@ -66,7 +66,7 @@ /datum/event/money_hacker/tick() if(world.time > time_start + time_duration) var/message - if(affected_account && affected_db && affected_db.activated && !(affected_db.stat & (FORCEDISABLE|NOPOWER|BROKEN)) ) + if(affected_account && affected_db && affected_db.activated && !(affected_db.stat & (NOPOWER|BROKEN)) ) //hacker wins message = "The hack attempt has succeeded." diff --git a/code/modules/food/cooking_machines.dm b/code/modules/food/cooking_machines.dm index 03c2aa67a9a..eba648c6e72 100644 --- a/code/modules/food/cooking_machines.dm +++ b/code/modules/food/cooking_machines.dm @@ -160,7 +160,7 @@ var/global/ingredientLimit = 10 return else if(..()) return TRUE - else if(stat & (FORCEDISABLE | NOPOWER | BROKEN)) + else if(stat & (NOPOWER | BROKEN)) to_chat(user, " The power's off, it's no good. ") return else if(isMoMMI(user))// *buzz diff --git a/code/modules/food/icecreamvat.dm b/code/modules/food/icecreamvat.dm index 8c2dfef68da..e4bc2203f2f 100644 --- a/code/modules/food/icecreamvat.dm +++ b/code/modules/food/icecreamvat.dm @@ -84,6 +84,9 @@ // Interactions //////////////////////////////////////////////// +/obj/machinery/cooking/icemachine/attack_ai(mob/user) + return attack_hand(user) + /obj/machinery/cooking/icemachine/attack_paw(mob/user) return attack_hand(user) diff --git a/code/modules/hydroponics/eggincubator.dm b/code/modules/hydroponics/eggincubator.dm index d58a5e75ee5..6acdf004b5c 100644 --- a/code/modules/hydroponics/eggincubator.dm +++ b/code/modules/hydroponics/eggincubator.dm @@ -65,6 +65,9 @@ /obj/machinery/egg_incubator/attack_paw(mob/user as mob) return src.attack_hand(user) +/obj/machinery/egg_incubator/attack_ai(mob/user as mob) + return src.attack_hand(user) + /obj/machinery/egg_incubator/attack_hand(mob/user as mob) if(..()) return 1 diff --git a/code/modules/hydroponics/hydro_tray.dm b/code/modules/hydroponics/hydro_tray.dm index 3971a8c42ca..a74b26d2972 100644 --- a/code/modules/hydroponics/hydro_tray.dm +++ b/code/modules/hydroponics/hydro_tray.dm @@ -52,12 +52,6 @@ var/key_name_last_user = "" - hack_abilities = list( - /datum/malfhack_ability/toggle/disable, - /datum/malfhack_ability/oneuse/overload_quiet, - /datum/malfhack_ability/kill_plant, - ) - // Seed details/line data. var/datum/seed/seed = null // The currently planted seed @@ -424,6 +418,7 @@ remove_dead(user) /obj/machinery/portable_atmospherics/hydroponics/attack_ai(mob/user as mob) + return //Until we find something smart for you to do, please steer clear. Thanks /obj/machinery/portable_atmospherics/hydroponics/attack_robot(mob/user as mob) diff --git a/code/modules/hydroponics/seed_machines.dm b/code/modules/hydroponics/seed_machines.dm index eeff84c376a..838adc522fa 100644 --- a/code/modules/hydroponics/seed_machines.dm +++ b/code/modules/hydroponics/seed_machines.dm @@ -63,6 +63,9 @@ /obj/machinery/botany/attack_paw(mob/user as mob) return attack_hand(user) +/obj/machinery/botany/attack_ai(mob/user as mob) + return attack_hand(user) + /obj/machinery/botany/attack_hand(mob/user as mob) ui_interact(user) diff --git a/code/modules/library/computers/base.dm b/code/modules/library/computers/base.dm index cc07f2ae1f5..5e5a9dfe413 100644 --- a/code/modules/library/computers/base.dm +++ b/code/modules/library/computers/base.dm @@ -12,7 +12,7 @@ icon_state = "computer" /obj/machinery/computer/library/proc/interact_check(var/mob/user) - if(stat & (FORCEDISABLE | BROKEN | NOPOWER)) + if(stat & (BROKEN | NOPOWER)) return TRUE if ((get_dist(src, user) > 1)) diff --git a/code/modules/library/computers/checkout.dm b/code/modules/library/computers/checkout.dm index 451229ce5a3..e949871dd66 100644 --- a/code/modules/library/computers/checkout.dm +++ b/code/modules/library/computers/checkout.dm @@ -22,12 +22,6 @@ pass_flags = PASSTABLE machine_flags = EMAGGABLE | WRENCHMOVE | FIXED2WORK - hack_abilities = list( - /datum/malfhack_ability/toggle/disable, - /datum/malfhack_ability/oneuse/overload_quiet, - /datum/malfhack_ability/oneuse/emag - ) - /obj/machinery/computer/library/checkout/attack_hand(var/mob/user as mob) if(..()) return diff --git a/code/modules/media/broadcast/receivers/radio.dm b/code/modules/media/broadcast/receivers/radio.dm index e135e129f57..4e714b2295f 100644 --- a/code/modules/media/broadcast/receivers/radio.dm +++ b/code/modules/media/broadcast/receivers/radio.dm @@ -13,7 +13,7 @@ update_icon() /obj/machinery/media/receiver/boombox/attack_hand(var/mob/user) - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) to_chat(usr, "You don't see anything to mess with.") return user.set_machine(src) diff --git a/code/modules/media/broadcast/transmitters/broadcast.dm b/code/modules/media/broadcast/transmitters/broadcast.dm index 8bfcc523c08..42bf0c3a999 100644 --- a/code/modules/media/broadcast/transmitters/broadcast.dm +++ b/code/modules/media/broadcast/transmitters/broadcast.dm @@ -107,6 +107,10 @@ integrity = 100 to_chat(user, "You repair the blown fuses on [src].") +/obj/machinery/media/transmitter/broadcast/attack_ai(var/mob/user as mob) + src.add_hiddenprint(user) + attack_hand(user) + /obj/machinery/media/transmitter/broadcast/attack_hand(var/mob/user as mob) if(panel_open) wires.Interact(user) @@ -121,7 +125,7 @@ if(!istype(user.get_active_hand(), /obj/item/device/multitool)) return - if(stat & (FORCEDISABLE|BROKEN|NOPOWER)) + if(stat & (BROKEN|NOPOWER)) return var/screen = {" @@ -143,7 +147,7 @@ /obj/machinery/media/transmitter/broadcast/emp_act(severity) - if(stat & (FORCEDISABLE|BROKEN|NOPOWER)) + if(stat & (BROKEN|NOPOWER)) ..(severity) return cable_power_change() @@ -193,7 +197,7 @@ icon_state = "broadcaster damaged1" if (75 to 100) icon_state = "broadcaster" - if(stat & (NOPOWER|BROKEN|FORCEDISABLE) || wires.IsIndexCut(TRANS_POWER)) + if(stat & (NOPOWER|BROKEN) || wires.IsIndexCut(TRANS_POWER)) return if(on) overlays += image(icon = icon, icon_state = "broadcaster on") @@ -249,7 +253,7 @@ return !wires.IsIndexCut(TRANS_RAD_ONE) + !wires.IsIndexCut(TRANS_RAD_TWO) /obj/machinery/media/transmitter/broadcast/process() - if(stat & (FORCEDISABLE|NOPOWER|BROKEN) || wires.IsIndexCut(TRANS_POWER)) + if(stat & (NOPOWER|BROKEN) || wires.IsIndexCut(TRANS_POWER)) return if(on && anchored) if(integrity<=0 || count_rad_wires()==0) //Shut down if too damaged OR if no rad wires diff --git a/code/modules/media/jukebox.dm b/code/modules/media/jukebox.dm index bca6d8adbf3..d6b0442e2cb 100644 --- a/code/modules/media/jukebox.dm +++ b/code/modules/media/jukebox.dm @@ -199,12 +199,6 @@ var/global/list/loopModeNames=list( mech_flags = MECH_SCAN_FAIL emag_cost = 0 // because fun/unlimited uses. - hack_abilities = list( - /datum/malfhack_ability/toggle/disable, - /datum/malfhack_ability/oneuse/overload_quiet, - /datum/malfhack_ability/oneuse/emag - ) - /obj/machinery/media/jukebox/New(loc) ..(loc) allowed_modes = loopModeNames.Copy() @@ -225,6 +219,9 @@ var/global/list/loopModeNames=list( wires = null ..() +/obj/machinery/media/jukebox/attack_ai(var/mob/user) + attack_hand(user) + /obj/machinery/media/jukebox/attack_paw(var/mob/user) if (!user.dexterity_check()) to_chat(user, "You don't have the dexterity to do this!") @@ -243,7 +240,7 @@ var/global/list/loopModeNames=list( /obj/machinery/media/jukebox/power_change() ..() - if(emagged && !(stat & (FORCEDISABLE|NOPOWER|BROKEN)) && !any_power_cut()) + if(emagged && !(stat & (NOPOWER|BROKEN)) && !any_power_cut()) playing = 1 if(current_song) update_music() @@ -255,7 +252,7 @@ var/global/list/loopModeNames=list( /obj/machinery/media/jukebox/update_icon() overlays = 0 - if(stat & (FORCEDISABLE|NOPOWER|BROKEN) || !anchored || any_power_cut()) + if(stat & (NOPOWER|BROKEN) || !anchored || any_power_cut()) if(stat & BROKEN) icon_state = "[state_base]-broken" else @@ -273,7 +270,7 @@ var/global/list/loopModeNames=list( return world.time > last_reload + JUKEBOX_RELOAD_COOLDOWN /obj/machinery/media/jukebox/attack_hand(var/mob/user) - if(stat & (FORCEDISABLE|NOPOWER) || any_power_cut()) + if(stat & NOPOWER || any_power_cut()) to_chat(usr, "You don't see anything to mess with.") return if(stat & BROKEN && playlist!=null) @@ -506,12 +503,6 @@ var/global/list/loopModeNames=list( short() return -/obj/machinery/media/jukebox/emag_ai(mob/living/silicon/ai/A) - to_chat(A, "You short out the [src].") - wires.CutWireIndex(JUKE_CONFIG) - short() - - /obj/machinery/media/jukebox/proc/short() emagged = !emagged current_song = 0 @@ -787,7 +778,7 @@ var/global/list/loopModeNames=list( /obj/machinery/media/jukebox/kick_act(mob/living/H) ..() - if(stat & (FORCEDISABLE|NOPOWER) || any_power_cut()) + if(stat & NOPOWER || any_power_cut()) return playing=!playing update_music() @@ -799,7 +790,7 @@ var/global/list/loopModeNames=list( if(istype(user,/mob/living/simple_animal/construct/armoured)) playsound(src, 'sound/weapons/heavysmash.ogg', 75, 1) shake(1, 3) - if(stat & (FORCEDISABLE|NOPOWER) || any_power_cut()) + if(stat & NOPOWER || any_power_cut()) return playing=!playing update_music() diff --git a/code/modules/medical/cloning.dm b/code/modules/medical/cloning.dm index 13d6ce87063..e5eab1710a3 100644 --- a/code/modules/medical/cloning.dm +++ b/code/modules/medical/cloning.dm @@ -167,7 +167,7 @@ /obj/machinery/cloning/clonepod/attack_paw(mob/user as mob) return attack_hand(user) /obj/machinery/cloning/clonepod/attack_hand(mob/user as mob) - if ((isnull(occupant)) || (stat & (FORCEDISABLE|NOPOWER))) + if ((isnull(occupant)) || (stat & NOPOWER)) return if ((!isnull(occupant)) && (occupant.stat != 2)) var/completion = (100 * ((occupant.health + 100) / (heal_level + 100))) @@ -277,7 +277,7 @@ //Grow clones to maturity then kick them out. FREELOADERS /obj/machinery/cloning/clonepod/process() - if(stat & (FORCEDISABLE|NOPOWER)) //Autoeject if power is lost + if(stat & NOPOWER) //Autoeject if power is lost if (occupant) locked = FALSE go_out() @@ -545,7 +545,7 @@ if(user.incapacitated() || user.lying) return - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) return if(!busy) diff --git a/code/modules/medical/computer/cloning.dm b/code/modules/medical/computer/cloning.dm index 7638539bd32..2603b5b69c6 100644 --- a/code/modules/medical/computer/cloning.dm +++ b/code/modules/medical/computer/cloning.dm @@ -20,13 +20,6 @@ light_color = LIGHT_COLOR_BLUE - hack_abilities = list( - /datum/malfhack_ability/toggle/disable, - /datum/malfhack_ability/oneuse/overload_quiet, - /datum/malfhack_ability/oneuse/emag - ) - - /obj/machinery/computer/cloning/New() ..() spawn(5) @@ -120,12 +113,16 @@ /obj/machinery/computer/cloning/emag(mob/user) if(!emagged) emagged = 1 - if(user && !issilicon(user)) + if(user) user.visible_message("[user] slides something into \the [src]'s card-reader.","You disable \the [src]'s safety overrides.") /obj/machinery/computer/cloning/attack_paw(mob/user as mob) return attack_hand(user) +/obj/machinery/computer/cloning/attack_ai(mob/user as mob) + src.add_hiddenprint(user) + return attack_hand(user) + /obj/machinery/computer/cloning/attack_hand(mob/user as mob) if(..()) return 1 @@ -511,7 +508,7 @@ /obj/machinery/computer/cloning/update_icon() ..() overlays = 0 - if(!(stat & (NOPOWER | BROKEN | FORCEDISABLE))) + if(!(stat & (NOPOWER | BROKEN))) if(scanner && scanner.occupant) overlays += image(icon = icon, icon_state = "cloning-scan") if(pod1 && pod1.occupant) diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index b5624d79cbb..3696750a7b1 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -36,10 +36,14 @@ /obj/machinery/computer/smelting/process() updateUsrDialog() +/obj/machinery/computer/smelting/attack_ai(mob/user) + add_hiddenprint(user) + interact(user) + /obj/machinery/computer/smelting/attack_hand(mob/user) add_fingerprint(user) - if(stat & (FORCEDISABLE | NOPOWER | BROKEN) && id) //Power out/this thing is broken, but at least allow the guy to take his ID out if it's still in there. + if(stat & (NOPOWER | BROKEN) && id) //Power out/this thing is broken, but at least allow the guy to take his ID out if it's still in there. id.forceMove(get_turf(src)) user.put_in_hands(id) @@ -49,7 +53,7 @@ interact(user) /obj/machinery/computer/smelting/interact(mob/user) - if(stat & (FORCEDISABLE | NOPOWER | BROKEN)) //It's broken ya derp. + if(stat & (NOPOWER | BROKEN)) //It's broken ya derp. if(user.machine == src) user.unset_machine(src) return @@ -234,7 +238,7 @@ radio_connection.post_signal(src, signal) /obj/machinery/computer/smelting/receive_signal(datum/signal/signal) - if(stat & (FORCEDISABLE | NOPOWER | BROKEN) || !signal || !signal.data["tag"] || signal.data["tag"] != smelter_tag) + if(stat & (NOPOWER | BROKEN) || !signal || !signal.data["tag"] || signal.data["tag"] != smelter_tag) return if(signal.data["type"] != "smelter") //So I can forgo sanity, henk. @@ -287,7 +291,7 @@ update_icon() /obj/machinery/mineral/processing_unit/update_icon() - if(stat & (FORCEDISABLE | NOPOWER | BROKEN) || !on) + if(stat & (NOPOWER | BROKEN) || !on) icon_state = "furnace_o" set_light(0) else if(on) @@ -390,7 +394,7 @@ qdel(A) /obj/machinery/mineral/processing_unit/process() - if(stat & (FORCEDISABLE | NOPOWER | BROKEN)) + if(stat & (NOPOWER | BROKEN)) return var/turf/in_T = get_step(src, in_dir) @@ -431,7 +435,7 @@ broadcast_status() /obj/machinery/mineral/processing_unit/receive_signal(datum/signal/signal) - if(stat & (FORCEDISABLE | NOPOWER | BROKEN) || !signal.data["tag"] || signal.data["tag"] != id_tag) + if(stat & (NOPOWER | BROKEN) || !signal.data["tag"] || signal.data["tag"] != id_tag) return if(signal.data["sigtype"] == "status") diff --git a/code/modules/mining/machine_stacking.dm b/code/modules/mining/machine_stacking.dm index 62859fb3c9a..6fe756548fa 100644 --- a/code/modules/mining/machine_stacking.dm +++ b/code/modules/mining/machine_stacking.dm @@ -18,12 +18,16 @@ if(ticker) initialize() +/obj/machinery/computer/stacking_unit/attack_ai(mob/user) + add_hiddenprint(user) + interact(user) + /obj/machinery/computer/stacking_unit/attack_hand(mob/user) add_fingerprint(user) interact(user) /obj/machinery/computer/stacking_unit/interact(mob/user) - if(stat & (FORCEDISABLE | NOPOWER | BROKEN)) + if(stat & (NOPOWER | BROKEN)) return if(!stacker_data) @@ -90,7 +94,7 @@ radio_connection = radio_controller.add_object(src, frequency) /obj/machinery/computer/stacking_unit/receive_signal(datum/signal/signal) - if(stat & (FORCEDISABLE | NOPOWER|BROKEN)) + if(stat & (NOPOWER|BROKEN)) return if(!signal.data["tag"] || signal.data["tag"] != stacker_tag) @@ -163,7 +167,7 @@ RefreshParts() /obj/machinery/mineral/stacking_machine/update_icon() - if(stat & (FORCEDISABLE | NOPOWER | BROKEN)) + if(stat & (NOPOWER | BROKEN)) icon_state = "stacker_o" else icon_state = "stacker" @@ -253,7 +257,7 @@ radio_connection = radio_controller.add_object(src, frequency) /obj/machinery/mineral/stacking_machine/receive_signal(var/datum/signal/signal) - if(stat & (FORCEDISABLE | NOPOWER|BROKEN)) + if(stat & (NOPOWER|BROKEN)) return if(!signal.data["tag"] || signal.data["tag"] != id_tag) diff --git a/code/modules/mining/mint.dm b/code/modules/mining/mint.dm index 7d08d3a63c8..ebcd5c4b08b 100644 --- a/code/modules/mining/mint.dm +++ b/code/modules/mining/mint.dm @@ -49,7 +49,7 @@ /obj/machinery/mineral/mint/attack_hand(mob/user) add_fingerprint(user) - if(stat & (FORCEDISABLE | NOPOWER | BROKEN)) + if(stat & (NOPOWER | BROKEN)) if(user.machine == src) user.unset_machine(src) return diff --git a/code/modules/mob/dead/observer/login.dm b/code/modules/mob/dead/observer/login.dm index 2d6bbcabd0d..f0aeb34f1d9 100644 --- a/code/modules/mob/dead/observer/login.dm +++ b/code/modules/mob/dead/observer/login.dm @@ -2,8 +2,6 @@ ..() observers += src - client.show_popup_menus = TRUE - if(src.check_rights(R_ADMIN|R_FUN)) to_chat(src, "You are now an admin ghost. Think of yourself as an AI that doesn't show up anywhere and cannot speak. You can access any console or machine by standing next to it and clicking on it. Abuse of this privilege may result in hilarity or removal of your flags, so caution is recommended.") diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 7a62220c844..7269bb5356a 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -342,7 +342,7 @@ var/list/headset_modes = list( talkcount++ . = ..() -/proc/say_test(var/text) +/mob/living/proc/say_test(var/text) var/ending = copytext(text, length(text)) if (ending == "?") return "1" @@ -607,7 +607,7 @@ var/list/headset_modes = list( return "gibbers" return ..() -/atom/proc/send_speech_bubble(var/message,var/bubble_type, var/list/hearers) +/mob/living/proc/send_speech_bubble(var/message,var/bubble_type, var/list/hearers) //speech bubble var/list/tracking_speech_bubble_recipients = list() var/list/static_speech_bubble_recipients = list() diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 16ea652d5e0..5ee912315fb 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -51,14 +51,13 @@ var/list/ai_list = list() var/control_disabled = FALSE // Set to TRUE to stop AI from interacting via Click() -- TLE var/malfhacking = FALSE // More or less a copy of the above var, so that malf AIs can hack and still get new cyborgs -- NeoFite - var/mob/living/silicon/ai/shuntedAI = null - var/mob/living/silicon/ai/parent = null + var/obj/machinery/power/apc/malfhack = null var/explosive = FALSE //does the AI explode when it dies? var/blackout_active = FALSE var/explosive_cyborgs = FALSE //Will any cyborgs slaved to the AI exploe when they die? - + var/mob/living/silicon/ai/parent = null var/camera_light_on = FALSE var/list/obj/machinery/camera/lit_cameras = list() @@ -162,11 +161,10 @@ var/list/ai_list = list() job = "AI" ai_list += src ..() - if(!safety) - if(prob(25)) - playsound(src, get_sfx("windows error"), 75, FALSE) - else - playsound(src, 'sound/machines/WXP_startup.ogg', 75, FALSE) + if(prob(25)) + playsound(src, get_sfx("windows error"), 75, FALSE) + else + playsound(src, 'sound/machines/WXP_startup.ogg', 75, FALSE) /mob/living/silicon/ai/verb/toggle_anchor() set category = "AI Commands" @@ -307,11 +305,16 @@ var/list/ai_list = list() // displays the malf_ai information if the AI is the malf /mob/living/silicon/ai/show_malf_ai() - var/datum/role/malfAI/malf = mind.GetRole(MALF) - var/datum/faction/malf/malffac = find_active_faction_by_member(malf) - if(malf && malf.apcs.len >= 3) - stat(null, "Amount of APCS hacked: [malf.apcs.len]") - stat(null, "Time until station control secured: [max(malffac.AI_win_timeleft/(malf.apcs.len/3), 0)] seconds") + var/datum/faction/malf/malf = find_active_faction_by_member(src.mind.GetRole(MALF)) + if(malf && malf.apcs >= 3) + stat(null, "Amount of APCS hacked: [malf.apcs]") + stat(null, "Time until station control secured: [max(malf.AI_win_timeleft/(malf.apcs/3), 0)] seconds") + + +/mob/proc/remove_malf_spells() + for(var/spell/S in spell_list) + if(S.panel == MALFUNCTION) + remove_spell(S) /mob/living/silicon/ai/proc/ai_alerts() @@ -538,16 +541,8 @@ var/list/ai_list = list() #endif /mob/living/silicon/ai/bullet_act(var/obj/item/projectile/Proj) - if((ai_flags & COREFORTIFY) && istype(Proj, /obj/item/projectile/beam)) - var/obj/item/projectile/beam/P = Proj -// P.damage = P.damage / 2 -// P.rebound(src) -// visible_message("\The [P] gets reflected by \the [src]'s firewall!") - visible_message("\The [P] is blocked by \the [src]'s firewall!") - anim(target = src, a_icon = 'icons/effects/64x64.dmi', flick_anim = "juggernaut_armor", lay = NARSIE_GLOW, offX = -WORLD_ICON_SIZE/2, offY = -WORLD_ICON_SIZE/2 + 4, plane = ABOVE_LIGHTING_PLANE) - playsound(src, 'sound/items/metal_impact.ogg', 25) -// return PROJECTILE_COLLISION_REBOUND - return PROJECTILE_COLLISION_BLOCKED + if((ai_flags & COREFORTIFY) && Proj.damage_type == BURN) + return PROJECTILE_COLLISION_DEFAULT // Does nothing ..(Proj) updatehealth() return PROJECTILE_COLLISION_DEFAULT @@ -807,6 +802,28 @@ var/list/ai_list = list() return +/spell/aoe_turf/corereturn + name = "Return to Core" + panel = MALFUNCTION + charge_type = Sp_CHARGES + charge_max = 1 + hud_state = "unshunt" + override_base = "grey" + +/spell/aoe_turf/corereturn/before_target(mob/user) + if(istype(user.loc, /obj/machinery/power/apc)) + return FALSE + else + to_chat(user, "You are already in your Main Core.") + return TRUE + +/spell/aoe_turf/corereturn/choose_targets(mob/user = usr) + return list(user.loc) + +/spell/aoe_turf/corereturn/cast(var/list/targets, mob/user) + var/obj/machinery/power/apc/apc = targets[1] + apc.malfvacate() + //Toggles the luminosity and applies it by re-entereing the camera. /mob/living/silicon/ai/verb/toggle_camera_light() set name = "Toggle Camera Light" @@ -933,9 +950,3 @@ var/list/ai_list = list() icon_state = "ai-crash" return icon_state = chosen_core_icon_state - -/mob/living/silicon/ai/update_perception() - if(ai_flags & HIGHRESCAMS) - client?.darkness_planemaster.alpha = 150 - else - client?.darkness_planemaster.alpha = 255 diff --git a/code/modules/mob/living/silicon/ai/death.dm b/code/modules/mob/living/silicon/ai/death.dm index 45468294476..6a3c1b6972b 100644 --- a/code/modules/mob/living/silicon/ai/death.dm +++ b/code/modules/mob/living/silicon/ai/death.dm @@ -46,9 +46,7 @@ if(explosive && !gibbed && !istype(loc, /obj/machinery/power/apc)) visible_message("[name] begins to spark violently!") - shake_animation(5, 5, 0.2, 15) - spark(src) - playsound(src, 'sound/machines/Alarm_short.ogg', 100, FALSE) + playsound(src, 'sound/machines/Alarm_short.ogg', 75, FALSE) spawn(30) explosion(src.loc, 2, 5, 8, 10, whodunnit = src) gibbed = TRUE diff --git a/code/modules/mob/living/silicon/ai/freelook/chunk.dm b/code/modules/mob/living/silicon/ai/freelook/chunk.dm index 6d044dffa4c..00d6c300398 100644 --- a/code/modules/mob/living/silicon/ai/freelook/chunk.dm +++ b/code/modules/mob/living/silicon/ai/freelook/chunk.dm @@ -109,7 +109,6 @@ continue if(m.ai.client) m.ai.client.images -= t.obscured - qdel(t.obscured) for(var/turf in visRemoved) var/turf/t = turf diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm index 84db1ad0283..5f3390e5913 100644 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm @@ -16,30 +16,12 @@ // Use this when setting the aiEye's location. // It will also stream the chunk that the new loc is in. -/mob/camera/aiEye/forceMove(atom/destination, step_x = 0, step_y = 0, no_tp = FALSE, harderforce = TRUE, glide_size_override = 0, var/holo_bump = FALSE) +/mob/camera/aiEye/forceMove(atom/destination, step_x = 0, step_y = 0, no_tp = FALSE, harderforce = FALSE, glide_size_override = 0) if(ai) - var/obj/machinery/hologram/holopad/H - if(istype(ai.current, /obj/machinery/hologram/holopad)) - H = ai.current - if(istype(ai.current, /obj/machinery/turret)) - var/obj/machinery/turret/T = ai.current - T.malf_release_control() if(!isturf(ai.loc)) return - if(istype(H)) - if(harderforce && H.advancedholo && !holo_bump) // If we double click while controlling an advanced hologram, remove the hologram. - H.clear_holo() - return - else if(H.advancedholo && !holo_bump) // Otherwise, if we're controlling an advanced hologram, check to see if we can enter the tile normally - if(destination.density) - return - for(var/atom/movable/A in destination) - if(A.density) - return - - if(!isturf(destination) && destination) + if(!isturf(destination)) for(destination = destination.loc; !isturf(destination); destination = destination.loc); - forceEnter(destination) cameranet.visibility(src) @@ -49,8 +31,10 @@ ai.see_in_dark = 8 ai.see_invisible = SEE_INVISIBLE_LEVEL_TWO - if(istype(H) && !holo_bump) // move our hologram to our new location (unless our advanced hologram was bumped, in which case we're moving to the hologram) - H.move_hologram(harderforce) + //Holopad + if(istype(ai.current, /obj/machinery/hologram/holopad)) + var/obj/machinery/hologram/holopad/H = ai.current + H.move_hologram() if(ai.camera_light_on) ai.light_cameras() @@ -110,46 +94,19 @@ var/initial = initial(user.sprint) var/max_sprint = 50 - var/obj/machinery/turret/T = user.current - var/obj/machinery/hologram/holopad/H = user.current - - if(istype(T)) - T.malf_release_control() - - if((user.cooldown && user.cooldown < world.timeofday) || istype(H)) // 3 seconds + if(user.cooldown && user.cooldown < world.timeofday) // 3 seconds user.sprint = initial - if(istype(H)) - CAN_MOVE_DIAGONALLY = FALSE - user.eyeobj.glide_size = DELAY2GLIDESIZE(1) - user.delayNextMove(1) - else - user.eyeobj.glide_size = WORLD_ICON_SIZE - CAN_MOVE_DIAGONALLY = TRUE - for(var/i = 0; i < max(user.sprint, initial); i += 20) var/turf/step = get_turf(get_step(user.eyeobj, direct)) if(step) if (user.client.prefs.stumble && ((world.time - user.last_movement) > 4)) user.delayNextMove(3) //if set, delays the second step when a mob starts moving to attempt to make precise high ping movement easier - else if(istype(H) && H.advancedholo) - H.holo.dir = direct - if(step.density) - return - for(var/atom/movable/A in step) - if(A.density) - if(A.flow_flags&ON_BORDER) - if(!A.Cross(H.holo, H.holo.loc)) - return - else - return - user.eyeobj.forceMove(destination = step, harderforce = FALSE) - else - user.eyeobj.forceMove(destination = step, harderforce = FALSE) + user.eyeobj.forceMove(step) user.last_movement=world.time user.cooldown = world.timeofday + 5 - if(user.acceleration && !istype(H)) + if(user.acceleration) user.sprint = min(user.sprint + 0.5, max_sprint) else user.sprint = initial @@ -161,12 +118,6 @@ /mob/living/silicon/ai/proc/view_core() - var/obj/machinery/hologram/holopad/H = current - if(istype(H)) - H.clear_holo() - var/obj/machinery/turret/T = current - if(istype(T)) - T.malf_release_control() current = null cameraFollow = null diff --git a/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm b/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm index 4854107f98e..9f48e85fbad 100644 --- a/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm +++ b/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm @@ -32,7 +32,6 @@ ..() if(ticker) cameranet.updateVisibility(src) - // EFFECTS diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm index 7c2829c8952..b05145412b7 100644 --- a/code/modules/mob/living/silicon/ai/life.dm +++ b/code/modules/mob/living/silicon/ai/life.dm @@ -26,7 +26,7 @@ malfhack = null /mob/living/silicon/ai/proc/life_handle_power_damage() - if(aiRestorePowerRoutine != 0) + if(aiRestorePowerRoutine != 0 || ai_flags & COREFORTIFY) // Lost power adjustOxyLoss(1) else @@ -160,19 +160,14 @@ return if(ai_flags & COREFORTIFY) - brute_damage_modifier = 0.33 - burn_damage_modifier = 0.33 + brute_damage_modifier = 0.25 else brute_damage_modifier = 1 - burn_damage_modifier = 1 life_handle_camera() life_handle_malf() life_handle_power_damage() - if(ismalf(src) && client) - client.show_popup_menus = FALSE - is_ai_powered() ? life_handle_powered_core() : life_handle_unpowered_core() /mob/living/silicon/ai/proc/is_ai_powered() @@ -203,12 +198,7 @@ return FALSE /mob/living/silicon/ai/handle_regular_hud_updates() - var/datum/role/malfAI/M = mind.GetRole(MALF) - if(!M) - return ..() - for(var/obj/machinery/power/apc/A in M.currently_hacking_apcs) //throw an alert for any APCs being hacked - var/obj/abstract/screen/alert/robot/apc_hacking/new_alert = throw_alert(A.name, /obj/abstract/screen/alert/robot/apc_hacking) - if(new_alert && istype(new_alert)) - new_alert.desc = "You are currently hacking an APC. Click this alert to jump to the APC." - new_alert.apc = A - + if(malfhacking) + throw_alert(SCREEN_ALARM_APC_HACKING, /obj/abstract/screen/alert/robot/apc_hacking) + else + clear_alert(SCREEN_ALARM_APC_HACKING) diff --git a/code/modules/mob/living/silicon/ai/login.dm b/code/modules/mob/living/silicon/ai/login.dm index 2d6daf8f796..eebd5aa3486 100644 --- a/code/modules/mob/living/silicon/ai/login.dm +++ b/code/modules/mob/living/silicon/ai/login.dm @@ -1,9 +1,18 @@ /mob/living/silicon/ai/Login() //ThisIsDumb(TM) TODO: tidy this up ¬_¬ ~Carn ..() + to_chat(src, "You are playing the station's AI. The AI cannot move, but can interact with many objects while viewing them (through cameras).") + to_chat(src, "To look at other parts of the station, click on yourself to get a camera menu.") + to_chat(src, "While observing through a camera, you can use most (networked) devices which you can see, such as computers, APCs, intercoms, doors, etc.") + to_chat(src, "To use something, simply click on it.") + to_chat(src, {"Use say ":b to speak to your cyborgs through binary."}) + show_laws() + if(ismalf(src)) + to_chat(src, "These laws may be changed by other players, but you are not required to follow any of them.") for(var/obj/effect/rune/rune in runes) client.images += rune.blood_image regenerate_icons() + clear_all_alerts() //fuck alerts handle_regular_hud_updates() @@ -17,17 +26,6 @@ spawn(1) mind.store_memory("Frequencies list:
Command: [COMM_FREQ]
Security: [SEC_FREQ]
Medical: [MED_FREQ]
Science: [SCI_FREQ]
Engineering: [ENG_FREQ]
Service: [SER_FREQ] Cargo: [SUP_FREQ]
AI private: [AIPRIV_FREQ]
") stored_freqs = 1 - var/datum/role/malfAI/M = mind.GetRole(MALF) - if(M) - M.regenerate_hack_overlays() - DisplayUI("Malf") client.CAN_MOVE_DIAGONALLY = TRUE + client.screen += aistatic - -/mob/living/silicon/ai/proc/show_intro_text() - to_chat(src, "You are playing the station's AI. The AI cannot move, but can interact with many objects while viewing them (through cameras).") - to_chat(src, "To look at other parts of the station, click on yourself to get a camera menu.") - to_chat(src, "While observing through a camera, you can use most (networked) devices which you can see, such as computers, APCs, intercoms, doors, etc.") - to_chat(src, "To use something, simply click on it.") - to_chat(src, {"Use say ":b to speak to your cyborgs through binary."}) - diff --git a/code/modules/mob/living/silicon/ai/logout.dm b/code/modules/mob/living/silicon/ai/logout.dm index 2eac3f68a48..e884841de4b 100644 --- a/code/modules/mob/living/silicon/ai/logout.dm +++ b/code/modules/mob/living/silicon/ai/logout.dm @@ -2,10 +2,9 @@ ..() for(var/obj/machinery/ai_status_display/O in machines) //change status O.mode = 0 - if(!isturf(loc)) if (client) client.eye = loc client.perspective = EYE_PERSPECTIVE - view_core() + src.view_core() return \ No newline at end of file diff --git a/code/modules/mob/living/silicon/ai/say.dm b/code/modules/mob/living/silicon/ai/say.dm index 7dab6378b96..526273be448 100644 --- a/code/modules/mob/living/silicon/ai/say.dm +++ b/code/modules/mob/living/silicon/ai/say.dm @@ -75,12 +75,8 @@ var/obj/machinery/hologram/holopad/T = current if(istype(T) && T.holo && T.master == src)//If there is a hologram and its master is the user. - if(T.advancedholo) //send the speech from the hologram itself if its an 'advanced' hologram - speech.name = T.holo.name - T.holo.send_speech(speech, 7) - else - T.send_speech(speech, 7, "R") - to_chat(src, "Holopad transmitted, [speech.name] [speech.render_message()]")//The AI can "hear" its own message. + T.send_speech(speech, 7, "R") + to_chat(src, "Holopad transmitted, [real_name] [speech.render_message()]")//The AI can "hear" its own message. else to_chat(src, "No holopad connected.") diff --git a/code/modules/mob/living/silicon/robot/death.dm b/code/modules/mob/living/silicon/robot/death.dm index c79a34bab8c..f451fc280c6 100644 --- a/code/modules/mob/living/silicon/robot/death.dm +++ b/code/modules/mob/living/silicon/robot/death.dm @@ -42,8 +42,7 @@ return if(connected_ai) if(connected_ai.explosive_cyborgs) - visible_message("You hear a soft beep.") - playsound(src, "sound/effects/kirakrik.ogg", 60) + visible_message("You hear a soft beep.") spawn(10) explosion(src.loc, 1, 4, 5, 6, whodunnit = src) gib() diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index fe2a3d14cc4..7ad88d0337e 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -388,15 +388,14 @@ /mob/living/silicon/robot/show_malf_ai() ..() if(connected_ai && connected_ai.mind) - var/datum/role/malfAI/malfrole = connected_ai.mind.GetRole(MALF) - var/datum/faction/malf/malf = find_active_faction_by_member(malfrole) + var/datum/faction/malf/malf = find_active_faction_by_member(connected_ai.mind.GetRole(MALF)) if(!malf) malf = find_active_faction_by_type(/datum/faction/malf) //Let's see if there is anything to print at least var/malf_stat = malf.get_statpanel_addition() if(malf_stat && malf_stat != null) stat(null, malf_stat) - if(malfrole.apcs.len >= 3) - stat(null, "Time until station control secured: [max(malf.AI_win_timeleft/(malfrole.apcs.len/3), 0)] seconds") + if(malf.apcs >= 3) + stat(null, "Time until station control secured: [max(malf.AI_win_timeleft/(malf.apcs/3), 0)] seconds") return FALSE // this function displays jetpack pressure in the stat panel diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm index 674ebee70e3..f7894618237 100644 --- a/code/modules/mob/login.dm +++ b/code/modules/mob/login.dm @@ -69,7 +69,6 @@ client.screen += clickmaster_dummy // honestly fuck you lummox client.initialize_ghost_planemaster() //We want to explicitly reset the planemaster's visibility on login() so if you toggle ghosts while dead you can still see cultghosts if revived etc. client.initialize_darkness_planemaster() - client.initialize_fakecamera_planemaster() update_perception() regular_hud_updates() diff --git a/code/modules/mob/logout.dm b/code/modules/mob/logout.dm index de9e1b642ec..d717b1e4a59 100644 --- a/code/modules/mob/logout.dm +++ b/code/modules/mob/logout.dm @@ -23,10 +23,6 @@ clear_fullscreens(FALSE, 0) RemoveAllUIs() // Removes mind UIs - - if(client) - for(var/datum/radial_menu/R in client.radial_menus) - R.finish() remove_screen_objs() //Used to remove hud elements diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index d2a674e8dce..59da923c676 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -159,8 +159,6 @@ if(del_mob) qdel(src) - O.show_intro_text() - /mob/proc/Robotize(var/delete_items = FALSE, var/skipnaming=FALSE, var/malfAI=null) if(!Premorph(delete_items)) return diff --git a/code/modules/optics/photocollector.dm b/code/modules/optics/photocollector.dm index a5332784aeb..dd1ede4a52b 100644 --- a/code/modules/optics/photocollector.dm +++ b/code/modules/optics/photocollector.dm @@ -64,7 +64,7 @@ var/list/obj/machinery/power/photocollector/photocollector_list = list() /obj/machinery/power/photocollector/proc/update_icons() overlays.len = 0 - if(stat & (FORCEDISABLE | NOPOWER|BROKEN)) + if(stat & (NOPOWER|BROKEN)) return if(anchored && beams.len>0) overlays += image(icon = icon, icon_state = "lasergen-on") diff --git a/code/modules/paperwork/fax.dm b/code/modules/paperwork/fax.dm index 081fd66ea9e..fd06b55a8ed 100644 --- a/code/modules/paperwork/fax.dm +++ b/code/modules/paperwork/fax.dm @@ -50,6 +50,9 @@ var/list/alldepartments = list("Central Command", "Nanotrasen HR") scancount += SP.rating-1 cooldown_time = initial(cooldown_time) - 300*scancount +/obj/machinery/faxmachine/attack_ai(mob/user as mob) + return attack_hand(user) + /obj/machinery/faxmachine/attack_paw(mob/user as mob) return attack_hand(user) @@ -197,9 +200,6 @@ var/list/alldepartments = list("Central Command", "Nanotrasen HR") if(stat & BROKEN) to_chat(user, "\The [src] is broken!") return - if(stat & FORCEDISABLE) - to_chat(user, "\The [src] is unresponsive!") - return if(istype(O, /obj/item/weapon/paper)) if(!tofax) if(user.drop_item(O, src)) @@ -254,7 +254,7 @@ var/list/alldepartments = list("Central Command", "Nanotrasen HR") for(var/obj/machinery/faxmachine/F in allfaxes) if(centcomm || F.department == dpt ) - if(! (F.stat & (BROKEN|NOPOWER|FORCEDISABLE) ) ) + if(! (F.stat & (BROKEN|NOPOWER) ) ) flick("faxreceive", F) diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 5564c9ed5cc..bfe06959ddd 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -40,6 +40,10 @@ RefreshParts() +/obj/machinery/photocopier/attack_ai(mob/user) + src.add_hiddenprint(user) + return attack_hand(user) + /obj/machinery/photocopier/attack_paw(mob/user) return attack_hand(user) diff --git a/code/modules/power/ShieldGen/shield_capacitor.dm b/code/modules/power/ShieldGen/shield_capacitor.dm index 2348e779c63..6fdcaddb2ed 100644 --- a/code/modules/power/ShieldGen/shield_capacitor.dm +++ b/code/modules/power/ShieldGen/shield_capacitor.dm @@ -136,7 +136,7 @@ /obj/machinery/shield_capacitor/kick_act() ..() - if(stat & (FORCEDISABLE|NOPOWER|BROKEN)) + if(stat & (NOPOWER|BROKEN)) active = FALSE return if(prob(50)) diff --git a/code/modules/power/ShieldGen/shield_gen.dm b/code/modules/power/ShieldGen/shield_gen.dm index 361b02b9e47..a0842dcfb62 100644 --- a/code/modules/power/ShieldGen/shield_gen.dm +++ b/code/modules/power/ShieldGen/shield_gen.dm @@ -260,7 +260,7 @@ /obj/machinery/shield_gen/kick_act() ..() - if(stat & (FORCEDISABLE|NOPOWER|BROKEN)) + if(stat & (NOPOWER|BROKEN)) active = FALSE return if(prob(50)) diff --git a/code/modules/power/antimatter/control.dm b/code/modules/power/antimatter/control.dm index c3fff0a7565..215406ba463 100644 --- a/code/modules/power/antimatter/control.dm +++ b/code/modules/power/antimatter/control.dm @@ -62,7 +62,7 @@ check_shield_icons() update_shield_icons = 0 - if(stat & (FORCEDISABLE|NOPOWER|BROKEN) || !active)//can update the icons even without power + if(stat & (NOPOWER|BROKEN) || !active)//can update the icons even without power return if(!fueljar || fueljar.fuel <= 0)//No fuel but we are on, shutdown @@ -168,7 +168,7 @@ /obj/machinery/power/am_control_unit/power_change() ..() - if(stat & (FORCEDISABLE|NOPOWER) && active) + if(stat & NOPOWER && active) toggle_power() return @@ -337,7 +337,7 @@ /obj/machinery/power/am_control_unit/interact(mob/user) - if((get_dist(src, user) > 1) || (stat & (FORCEDISABLE|BROKEN|NOPOWER))) + if((get_dist(src, user) > 1) || (stat & (BROKEN|NOPOWER))) if(!istype(user, /mob/living/silicon/ai)) user.unset_machine() user << browse(null, "window=AMcontrol") @@ -389,7 +389,7 @@ usr.unset_machine() return 1 //Ignore input if we are broken or guy is not touching us, AI can control from a ways away - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) usr.unset_machine() usr << browse(null, "window=AMcontrol") return diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 8eb8986bb8f..4f87523c5e9 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -12,7 +12,6 @@ #define UPSTATE_BLUESCREEN 32 #define UPSTATE_WIREEXP 64 #define UPSTATE_ALLGOOD 128 -#define UPSTATE_SHUNT 256 //update_overlay #define APC_UPOVERLAY_CHARGEING0 1 @@ -78,8 +77,8 @@ var/wiresexposed = 0 powernet = 0 // set so that APCs aren't found as powernet nodes //Hackish, Horrible, was like this before I changed it :( var/malfhack = 0 //New var for my changes to AI malf. --NeoFite + var/mob/living/silicon/ai/hacking_ai = null //The AI that is currently attempting to hack this APC var/mob/living/silicon/ai/malfai = null //See above --NeoFite - var/mob/living/silicon/ai/currently_hacking_ai = null var/malflocked = 0 //used for malfs locking down APCs // luminosity = 1 var/has_electronics = 0 // 0 - none, 1 - plugged in, 2 - secured by screwdriver @@ -100,7 +99,6 @@ var/is_critical = 0 // Endgame scenarios will not destroy this APC. var/make_alerts = TRUE // Should this APC make power alerts to the area? - var/atom/movable/fake_camera_image/malfimage machine_flags = WIREJACK @@ -178,8 +176,7 @@ /obj/machinery/power/apc/initialize() ..() var/area/this_area = get_area(src) - if(this_area) - name = "[this_area.name] APC" + name = "[this_area.name] APC" update_icon() add_self_to_holomap() @@ -265,8 +262,6 @@ icon_state = "[basestate]-nocover" else if(update_state & UPSTATE_BROKE) icon_state = "apc-b" - else if(update_state & UPSTATE_SHUNT) - icon_state = "apcshunt" else if(update_state & UPSTATE_BLUESCREEN) icon_state = "apcemag" else if(update_state & UPSTATE_WIREEXP) @@ -306,6 +301,7 @@ update_state |= UPSTATE_BROKE if(stat & MAINT) update_state |= UPSTATE_MAINT + if(opened) if(opened==1) update_state |= UPSTATE_OPENED1 @@ -608,11 +604,8 @@ qdel(W) W = null stat &= ~BROKEN - if(malfai) - var/datum/role/malfAI/M = malfai.mind.GetRole(MALF) - M.apcs -= src - malfai = null - malfhack = 0 + malfai = null + malfhack = 0 if (opened==2) opened = 1 update_icon() @@ -730,14 +723,9 @@ ui_interact(user) /obj/machinery/power/apc/proc/get_malf_status(var/mob/living/silicon/ai/user) - var/datum/role/malfAI/M = user.mind.GetRole(MALF) - if(!istype(M)) - return 0 // 0 = User is not a Malf AI - if(src in M.currently_hacking_apcs) - return 5 //5 - currently being hacked - if (istype(user) && M) - if (malfai == (user.parent ? user.parent : user)) - if (occupant == user) + if (istype(user) && find_active_faction_by_member(user.mind.GetRole(MALF))) + if (src.malfai == (user.parent ? user.parent : user)) + if (src.occupant == user) return 3 // 3 = User is shunted in this APC else if (istype(user.loc, /obj/machinery/power/apc)) return 4 // 4 = User is shunted in another APC @@ -908,7 +896,7 @@ if(usr.machine == src) usr.unset_machine() return 1 - if((!aidisabled) && malflocked && (usr != malfai && usr.loc != src)) //exclusive control enabled + if((!aidisabled) && malflocked && usr != malfai) //exclusive control enabled to_chat(usr, "Access refused.") return 0 if(!can_use(usr, 1)) @@ -947,17 +935,48 @@ update_icon() update() - else if(href_list["occupyapc"]) - var/datum/malfhack_ability/shunt/S = locate(/datum/malfhack_ability/shunt) in hack_abilities - var/mob/living/silicon/ai/A = usr - if(istype(S) && istype(A)) - if(S.check_available(A)) - S.activate(A) - else if (href_list["overload"]) if(istype(usr, /mob/living/silicon) || isAdminGhost(usr)) src.overload_lighting() + else if (href_list["malfhack"]) + var/mob/living/silicon/ai/malfai = usr + var/datum/faction/malf/M = find_active_faction_by_type(/datum/faction/malf) + if(get_malf_status(malfai)==1) + if (malfai.malfhacking) + to_chat(malfai, "You are already hacking an APC.") + return 1 + var/time_required = calculate_malf_hack_APC_cooldown(M.apcs) + to_chat(malfai, "Beginning override of APC systems. This will take [time_required/10] seconds, and you cannot hack other APC's during the process.") + malfai.malfhack = src + malfai.malfhacking = 1 + hacking_ai = malfai + malfai.handle_regular_hud_updates() + sleep(time_required) + if(src && malfai) + if (!src.aidisabled) + malfai.malfhack = null + malfai.malfhacking = 0 + hacking_ai = null + locked = 1 + if(M && map.zMainStation == z) + M.apcs++ + if(usr:parent) + src.malfai = usr:parent + else + src.malfai = usr + to_chat(malfai, "Hack complete. The APC is now under your exclusive control. [map.zMainStation == z?"You now have [M.apcs] under your control.":"As this APC is not located on the station, it is not contributing to your control of it."]") + malfai.handle_regular_hud_updates() + update_icon() + + else if (href_list["occupyapc"]) + if(get_malf_status(usr)) + malfoccupy(usr) + + else if (href_list["deoccupyapc"]) + if(get_malf_status(usr)) + malfvacate() + else if (href_list["toggleaccess"]) if(istype(usr, /mob/living/silicon)) if(emagged || (stat & (BROKEN|MAINT))) @@ -966,14 +985,25 @@ locked = !locked update_icon() + else if (href_list["malflock"]) + if(get_malf_status(usr)) + malflocked = !malflocked + return 1 /obj/machinery/power/apc/proc/toggle_breaker() operating = !operating + if(malfai) + var/datum/faction/malf/M = find_active_faction_by_type(/datum/faction/malf) + if(M && map.zMainStation == z) + operating ? M.apcs++ : M.apcs-- + src.update() update_icon() -/* +/obj/machinery/power/apc/proc/malfoccupy(var/mob/living/silicon/ai/malf) + if(!istype(malf)) + return if(istype(malf.loc, /obj/machinery/power/apc)) // Already in an APC to_chat(malf, "You must evacuate your current apc first.") return @@ -1007,12 +1037,13 @@ if(istype(mf.stat_datum, /datum/stat/faction/malf)) var/datum/stat/faction/malf/MS = mf.stat_datum MS.shunted = TRUE -*/ + /obj/machinery/power/apc/proc/malfvacate(var/forced) if(!src.occupant) return if(src.occupant.parent && src.occupant.parent.stat != 2) + src.occupant.mind.transfer_to(src.occupant.parent) src.occupant.parent.adjustOxyLoss(src.occupant.getOxyLoss()) src.occupant.parent.cancel_camera() if (seclevel2num(get_security_level()) == SEC_LEVEL_DELTA) @@ -1020,17 +1051,16 @@ var/mob/living/silicon/ai/A = occupant.parent // the current mob the mind owns if(A.stat != DEAD) point.target = A //The pinpointer tracks the AI back into its core. - new /obj/effect/malf_jaunt(loc, occupant, occupant.parent, TRUE) + qdel(src.occupant) src.occupant = null else + to_chat(src.occupant, "Primary core damaged, unable to return core processes.") if(forced) src.occupant.forceMove(src.loc) src.occupant.death() src.occupant.gib() for(var/obj/item/weapon/pinpointer/point in pinpointer_list) point.target = null //the pinpointer will go back to pointing at the nuke disc. - else - to_chat(src.occupant, "Primary core damaged, unable to return core processes.") /obj/machinery/power/apc/can_overload() return 1 @@ -1302,9 +1332,9 @@ /obj/machinery/power/apc/proc/set_broken() if(malfai && operating) - var/datum/role/malfAI/M = malfai.mind?.GetRole(MALF) - if(M && (src in M.apcs)) - M.apcs -= src + var/datum/faction/malf/M = find_active_faction_by_type(/datum/faction/malf) + if(M && map.zMainStation == z) + M.apcs-- stat |= BROKEN operating = 0 wiresexposed = 0 @@ -1332,7 +1362,14 @@ var/area/this_area = get_area(src) if(this_area.areaapc == src) this_area.remove_apc(src) - clear_malf() + if(hacking_ai) //APC got destroyed mid-hack + hacking_ai.malfhack = null + hacking_ai.malfhacking = 0 + to_chat(hacking_ai, "The APC you were currently hacking was destroyed.") + if(malfai && operating) + var/datum/faction/malf/M = find_active_faction_by_type(/datum/faction/malf) + if (M && map.zMainStation == z) + M.apcs-- this_area.power_light = 0 this_area.power_equip = 0 this_area.power_environ = 0 @@ -1349,9 +1386,6 @@ qdel(wires) wires = null - if(malfimage) - qdel(malfimage) - ..() /obj/machinery/power/apc/proc/setsubsystem(val) diff --git a/code/modules/power/battery.dm b/code/modules/power/battery.dm index 9b972e93fc3..08f9ff55a1e 100644 --- a/code/modules/power/battery.dm +++ b/code/modules/power/battery.dm @@ -28,8 +28,6 @@ var/global/list/battery_online = list( /obj/machinery/power/battery/update_icon() overlays.len = 0 - icon_state = initial(icon_state) - if(stat & (BROKEN | FORCEDISABLE | EMPED)) return @@ -179,6 +177,11 @@ var/global/list/battery_online = list( if(_chargedisplay != chargedisplay()) // If needed updates the icons overlay update_icon() +/obj/machinery/power/battery/attack_ai(mob/user) + src.add_hiddenprint(user) + add_fingerprint(user) + ui_interact(user) + /obj/machinery/power/battery/attack_hand(mob/user) add_fingerprint(user) ui_interact(user) diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index d38f774fa2f..de3b29d9d6e 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -120,7 +120,6 @@ By design, d1 is the smallest direction and d2 is the highest attached.attached = null attached = null - ..() // then go ahead and delete the cable /obj/structure/cable/proc/reset_plane() //Set cables to the proper plane. They should NOT be on another plane outside of mapping preview diff --git a/code/modules/power/generator.dm b/code/modules/power/generator.dm index 44b18740bd3..8108a06a428 100644 --- a/code/modules/power/generator.dm +++ b/code/modules/power/generator.dm @@ -97,7 +97,7 @@ reconnect() /obj/machinery/power/generator/proc/operable() - return circ1 && circ2 && anchored && !(stat & (FORCEDISABLE|BROKEN|NOPOWER)) + return circ1 && circ2 && anchored && !(stat & (BROKEN|NOPOWER)) /obj/machinery/power/generator/update_icon() overlays = 0 @@ -166,6 +166,8 @@ if (operable()) add_avail(last_gen) +/obj/machinery/power/generator/attack_ai(mob/user) + return attack_hand(user) /obj/machinery/power/generator/attack_hand(mob/user) . = ..() diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index cc2bbee5680..e80cc888530 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -67,12 +67,14 @@ /obj/machinery/computer/gravity_control_computer/attack_paw(mob/user as mob) return attack_hand(user) +/obj/machinery/computer/gravity_control_computer/attack_ai(mob/user as mob) + return attack_hand(user) /obj/machinery/computer/gravity_control_computer/attack_hand(mob/user as mob) user.set_machine(src) add_fingerprint(user) - if(stat & (FORCEDISABLE|BROKEN|NOPOWER)) + if(stat & (BROKEN|NOPOWER)) return updatemodules() diff --git a/code/modules/power/meteor_battery.dm b/code/modules/power/meteor_battery.dm index c13bb74a301..c50ed5846a1 100644 --- a/code/modules/power/meteor_battery.dm +++ b/code/modules/power/meteor_battery.dm @@ -107,7 +107,7 @@ return new_target /obj/machinery/meteor_battery/process() - if(stat & (FORCEDISABLE|NOPOWER|BROKEN)) + if(stat & (NOPOWER|BROKEN)) return if(src.cover==null) src.cover = new /obj/machinery/turretcover(src.loc) diff --git a/code/modules/power/monitor.dm b/code/modules/power/monitor.dm index e0181cda849..ee3054154b1 100644 --- a/code/modules/power/monitor.dm +++ b/code/modules/power/monitor.dm @@ -102,7 +102,7 @@ if(stat & BROKEN) icon_state = "broken" else - if (stat & (FORCEDISABLE|NOPOWER)) + if (stat & NOPOWER) spawn(rand(0, 15)) icon_state = "c_unpowered" else diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index a2057864ac5..d62f34f1ca7 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -224,6 +224,10 @@ interact(user) +/obj/machinery/power/port_gen/pacman/attack_ai(mob/user as mob) + src.add_hiddenprint(user) + interact(user) + /obj/machinery/power/port_gen/pacman/attack_paw(mob/user as mob) interact(user) diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index db2b998f2d1..e63c3436fb9 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -164,8 +164,6 @@ if(!use_auto_lights) return - if(stat & FORCEDISABLE) - return set_light(light_range_on, light_power_on) else diff --git a/code/modules/power/rust/core_control.dm b/code/modules/power/rust/core_control.dm index 9b1ffc92d96..eeaed9ae5e5 100644 --- a/code/modules/power/rust/core_control.dm +++ b/code/modules/power/rust/core_control.dm @@ -11,6 +11,8 @@ //currently viewed var/obj/machinery/power/rust_core/cur_viewed_device +/obj/machinery/computer/rust_core_control/attack_ai(mob/user) + attack_hand(user) /obj/machinery/computer/rust_core_control/attack_hand(mob/user) . = ..() diff --git a/code/modules/power/rust/core_monitor.dm b/code/modules/power/rust/core_monitor.dm index 01478b92f7f..af964c5110a 100644 --- a/code/modules/power/rust/core_monitor.dm +++ b/code/modules/power/rust/core_monitor.dm @@ -14,6 +14,8 @@ interact(user) +/obj/machinery/computer/rust_core_monitor/attack_ai(var/mob/user) + attack_hand(user) /obj/machinery/computer/rust_core_monitor/interact(var/mob/user) if(linked_core) diff --git a/code/modules/power/rust/fuel_assembly_port.dm b/code/modules/power/rust/fuel_assembly_port.dm index 3880a25104b..0ff8eb87248 100644 --- a/code/modules/power/rust/fuel_assembly_port.dm +++ b/code/modules/power/rust/fuel_assembly_port.dm @@ -60,7 +60,7 @@ var/turf/check_turf = get_step(get_turf(src), src.dir) check_turf = get_step(check_turf, src.dir) for(var/obj/machinery/power/rust_fuel_injector/I in check_turf) - if(I.stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(I.stat & (BROKEN|NOPOWER)) break if(I.cur_assembly) break @@ -88,7 +88,7 @@ var/turf/check_turf = get_step(get_turf(src), src.dir) check_turf = get_step(check_turf, src.dir) for(var/obj/machinery/power/rust_fuel_injector/I in check_turf) - if(I.stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(I.stat & (BROKEN|NOPOWER)) break if(!I.cur_assembly) break diff --git a/code/modules/power/rust/fuel_compressor.dm b/code/modules/power/rust/fuel_compressor.dm index 4bf42f5b3e9..6a5c06f1d75 100644 --- a/code/modules/power/rust/fuel_compressor.dm +++ b/code/modules/power/rust/fuel_compressor.dm @@ -12,6 +12,8 @@ var/const/max_assembly_amount = 300 var/locked = 0 var/has_electronics = 0 // 0 - none, bit 1 - circuitboard, bit 2 - wires +/obj/machinery/rust_fuel_compressor/attack_ai(mob/user) + attack_hand(user) /obj/machinery/rust_fuel_compressor/attack_hand(mob/user) add_fingerprint(user) @@ -27,7 +29,7 @@ var/const/max_assembly_amount = 300 ..() /obj/machinery/rust_fuel_compressor/interact(mob/user) - if ( (get_dist(src, user) > 1 ) || (stat & (FORCEDISABLE|BROKEN|NOPOWER)) ) + if ( (get_dist(src, user) > 1 ) || (stat & (BROKEN|NOPOWER)) ) if (!istype(user, /mob/living/silicon)) user.unset_machine() user << browse(null, "window=fuelcomp") diff --git a/code/modules/power/rust/fuel_control.dm b/code/modules/power/rust/fuel_control.dm index 8e29a66c7c9..52e8e5499a0 100644 --- a/code/modules/power/rust/fuel_control.dm +++ b/code/modules/power/rust/fuel_control.dm @@ -43,13 +43,15 @@ var/list/targetlist = fuel_injectors[Injector.stage] targetlist.Add(Injector)*/ +/obj/machinery/computer/rust_fuel_control/attack_ai(mob/user) + attack_hand(user) /obj/machinery/computer/rust_fuel_control/attack_hand(mob/user) add_fingerprint(user) interact(user) /obj/machinery/computer/rust_fuel_control/interact(mob/user) - if(stat & (FORCEDISABLE|BROKEN|NOPOWER)) + if(stat & (BROKEN|NOPOWER)) user.unset_machine() user << browse(null, "window=fuel_control") return @@ -186,7 +188,7 @@ if(!I) return 0 - if(I.stat & (FORCEDISABLE|BROKEN|NOPOWER) || !I.remote_access_enabled || !I.id_tag) + if(I.stat & (BROKEN|NOPOWER) || !I.remote_access_enabled || !I.id_tag) if(connected_injectors.Find(I)) connected_injectors.Remove(I) return 0 diff --git a/code/modules/power/rust/fuel_injector.dm b/code/modules/power/rust/fuel_injector.dm index 6e463a836ce..6091e36b7bc 100644 --- a/code/modules/power/rust/fuel_injector.dm +++ b/code/modules/power/rust/fuel_injector.dm @@ -54,7 +54,7 @@ out += "has been shorted.
" else out += "is [locked ? "locked" : "unlocked"].
" - if(stat & (FORCEDISABLE|NOPOWER) || state != 2) + if(stat & NOPOWER || state != 2) out += "It seems to be powered down.
" else if(injecting) out += "It's actively injecting fuel.
" @@ -66,7 +66,7 @@ /obj/machinery/power/rust_fuel_injector/process() if(injecting) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) stop_injecting() else inject() @@ -134,7 +134,7 @@ . = ..() if(.) return - if(stat & (FORCEDISABLE|NOPOWER) || state != 2) + if(stat & NOPOWER || state != 2) to_chat(user, "It's completely unresponsive.") return ui_interact(user) @@ -166,7 +166,7 @@ if(..()) return 1 - if (stat & (FORCEDISABLE|NOPOWER) || locked || state != 2) + if (stat & NOPOWER || locked || state != 2) return 1 if(href_list["modify_tag"]) diff --git a/code/modules/power/rust/gyrotron.dm b/code/modules/power/rust/gyrotron.dm index e4cbbc84e84..1997df7e3ff 100644 --- a/code/modules/power/rust/gyrotron.dm +++ b/code/modules/power/rust/gyrotron.dm @@ -38,7 +38,7 @@ update_icon() /obj/machinery/rust/gyrotron/proc/start_emitting() - if(stat & (FORCEDISABLE | NOPOWER | BROKEN) || emitting && state == 2) //Sanity. + if(stat & (NOPOWER | BROKEN) || emitting && state == 2) //Sanity. return emitting = 1 @@ -83,13 +83,13 @@ /obj/machinery/rust/gyrotron/power_change() . =..() - if(stat & (FORCEDISABLE | NOPOWER | BROKEN)) + if(stat & (NOPOWER | BROKEN)) stop_emitting() update_icon() /obj/machinery/rust/gyrotron/update_icon() - if(!(stat & (FORCEDISABLE | NOPOWER | BROKEN)) && emitting) + if(!(stat & (NOPOWER | BROKEN)) && emitting) icon_state = "emitter-on" else icon_state = "emitter-off" diff --git a/code/modules/power/rust/gyrotron_controller.dm b/code/modules/power/rust/gyrotron_controller.dm index 571e24296ff..5c5c7c8346e 100644 --- a/code/modules/power/rust/gyrotron_controller.dm +++ b/code/modules/power/rust/gyrotron_controller.dm @@ -18,6 +18,8 @@ if(ticker) initialize() +/obj/machinery/computer/rust_gyrotron_controller/attack_ai(var/mob/user) + . = attack_hand(user) /obj/machinery/computer/rust_gyrotron_controller/attack_hand(mob/user) . = ..() @@ -54,13 +56,13 @@ for(var/obj/machinery/rust/gyrotron/gyro in linked_gyrotrons) //These vars are here because muh readable HTML code. var/gyro_id = linked_gyrotrons.Find(gyro) - var/status = ((gyro.state != 2 || gyro.stat & (FORCEDISABLE | NOPOWER | BROKEN)) ? "Unresponsive" : "Operational") + var/status = ((gyro.state != 2 || gyro.stat & (NOPOWER | BROKEN)) ? "Unresponsive" : "Operational") dat += {" [gyro.id_tag] [status] "} - if(gyro.state != 2 || gyro.stat & (FORCEDISABLE | NOPOWER | BROKEN)) //Error data not found. + if(gyro.state != 2 || gyro.stat & (NOPOWER | BROKEN)) //Error data not found. dat += {" ERROR ERROR @@ -94,7 +96,7 @@ var/idx = clamp(text2num(href_list["gyro"]), 1, linked_gyrotrons.len) var/obj/machinery/rust/gyrotron/gyro = linked_gyrotrons[idx] - if(!gyro || gyro.stat & (FORCEDISABLE | NOPOWER | BROKEN)) + if(!gyro || gyro.stat & (NOPOWER | BROKEN)) return if(href_list["modifypower"]) diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index 9d46e01cfd7..c42dbff2ab4 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -153,7 +153,7 @@ var/global/list/rad_collectors = list() overlays.len = 0 if(P) overlays += image('icons/obj/singularity.dmi', "ptank") - if(stat & (FORCEDISABLE|NOPOWER|BROKEN)) + if(stat & (NOPOWER|BROKEN)) return if(active) overlays += image('icons/obj/singularity.dmi', "on") diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm index 214393e3684..7631e61c11e 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_control.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm @@ -72,7 +72,7 @@ if(active) icon_state = "[reference]p[strength]" else - if(stat & (FORCEDISABLE|NOPOWER)) + if(stat & NOPOWER) icon_state = "[reference]w" return else if(use_power) @@ -147,7 +147,7 @@ /obj/machinery/particle_accelerator/control_box/power_change() ..() - if(stat & (FORCEDISABLE|NOPOWER)) + if(stat & NOPOWER) active = 0 use_power = 0 else if(!stat && construction_state <= 3) @@ -246,7 +246,7 @@ /obj/machinery/particle_accelerator/control_box/interact(mob/user) - if((get_dist(src, user) > 1) || (stat & (FORCEDISABLE|BROKEN|NOPOWER))) + if((get_dist(src, user) > 1) || (stat & (BROKEN|NOPOWER))) if(!istype(user, /mob/living/silicon) && !isAdminGhost(user)) if(!user.mutations || user.mutations.len || !(M_TK in user.mutations)) user.unset_machine() diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index a40d8082d18..70227b0b34e 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -15,11 +15,6 @@ var/list/smes_list = list() starting_terminal = 1 - hack_abilities = list( - /datum/malfhack_ability/destroy_lights, - /datum/malfhack_ability/oneuse/overload_loud, - ) - /obj/machinery/power/battery/smes/pristine charge = 0 diff --git a/code/modules/power/solars/control.dm b/code/modules/power/solars/control.dm index 8a5fedfa7c7..d3cf528fed8 100644 --- a/code/modules/power/solars/control.dm +++ b/code/modules/power/solars/control.dm @@ -47,7 +47,7 @@ icon_state = "solarb" return - if(stat & (FORCEDISABLE|NOPOWER)) + if(stat & NOPOWER) icon_state = "solar0" return @@ -56,6 +56,9 @@ if(cdir > 0) overlays += image('icons/obj/computer.dmi', "solcon-o", FLY_LAYER, angle2dir(cdir)) +/obj/machinery/power/solar/control/attack_ai(mob/user) + add_hiddenprint(user) + interact(user) /obj/machinery/power/solar/control/attack_hand(mob/user) add_fingerprint(user) @@ -65,7 +68,7 @@ lastgen = gen gen = 0 - if(stat & (NOPOWER | BROKEN | FORCEDISABLE)) + if(stat & (NOPOWER | BROKEN)) return if(track == 1 && nexttime < world.time && trackdir * trackrate) @@ -112,7 +115,7 @@ // called by solar tracker when sun position changes (somehow, that's not supposed to be in process) /obj/machinery/power/solar/control/proc/tracker_update(angle) - if(track != TRACK_AUTOMATIC || stat & (FORCEDISABLE | NOPOWER | BROKEN)) + if(track != TRACK_AUTOMATIC || stat & (NOPOWER | BROKEN)) return cdir = angle @@ -121,7 +124,7 @@ updateDialog() /obj/machinery/power/solar/control/interact(mob/user) - if(stat & (BROKEN | NOPOWER | FORCEDISABLE)) + if(stat & (BROKEN | NOPOWER)) return if (!src.Adjacent(user)) diff --git a/code/modules/power/treadmill.dm b/code/modules/power/treadmill.dm index da8412d427f..46b53254263 100644 --- a/code/modules/power/treadmill.dm +++ b/code/modules/power/treadmill.dm @@ -29,11 +29,6 @@ /obj/item/weapon/stock_parts/console_screen ) - hack_abilities = list( - /datum/malfhack_ability/oneuse/overload_quiet, - /datum/malfhack_ability/oneuse/emag - ) - /obj/machinery/power/treadmill/New() ..() setup_border_dummy() diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm index 17dd4ab8928..1c56e91801b 100644 --- a/code/modules/power/turbine.dm +++ b/code/modules/power/turbine.dm @@ -73,7 +73,7 @@ rpm = max(0, rpm - (rpm*rpm)/COMPFRICTION) - if(starter && !(stat & (FORCEDISABLE|NOPOWER))) + if(starter && !(stat & NOPOWER)) use_power(2800) if(rpm<1000) rpmtarget = 1000 @@ -143,7 +143,7 @@ /obj/machinery/power/turbine/interact(mob/user) - if ( (get_dist(src, user) > 1 ) || (stat & (FORCEDISABLE|NOPOWER|BROKEN)) && (!istype(user, /mob/living/silicon/ai)) ) + if ( (get_dist(src, user) > 1 ) || (stat & (NOPOWER|BROKEN)) && (!istype(user, /mob/living/silicon/ai)) ) user.machine = null user << browse(null, "window=turbine") return diff --git a/code/modules/reagents/machinery/chem_dispenser.dm b/code/modules/reagents/machinery/chem_dispenser.dm index eb5a860365e..b4ab7f1bcf3 100644 --- a/code/modules/reagents/machinery/chem_dispenser.dm +++ b/code/modules/reagents/machinery/chem_dispenser.dm @@ -45,6 +45,7 @@ TUNGSTEN ) machine_flags = SCREWTOGGLE | CROWDESTROY | WRENCHMOVE | FIXED2WORK + /* USE THIS CHEMISTRY DISPENSER FOR MAPS SO THEY START AT 100 ENERGY */ @@ -93,7 +94,7 @@ USE THIS CHEMISTRY DISPENSER FOR MAPS SO THEY START AT 100 ENERGY */ /obj/machinery/chem_dispenser/proc/recharge() - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return var/oldenergy = energy energy = min(energy + rechargerate, max_energy) @@ -178,7 +179,7 @@ USE THIS CHEMISTRY DISPENSER FOR MAPS SO THEY START AT 100 ENERGY * @return nothing */ /obj/machinery/chem_dispenser/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open=NANOUI_FOCUS) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return if((user.stat && !isobserver(user)) || user.restrained()) return @@ -240,7 +241,7 @@ USE THIS CHEMISTRY DISPENSER FOR MAPS SO THEY START AT 100 ENERGY if(usr.machine == src) usr.unset_machine() return 1 - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) return 0 // don't update UIs attached to this object if(href_list["amount"]) @@ -296,7 +297,7 @@ USE THIS CHEMISTRY DISPENSER FOR MAPS SO THEY START AT 100 ENERGY return 1 /obj/machinery/chem_dispenser/AltClick() - if(!usr.incapacitated() && Adjacent(usr) && container && !(stat & (FORCEDISABLE|NOPOWER|BROKEN) && usr.dexterity_check())) + if(!usr.incapacitated() && Adjacent(usr) && container && !(stat & (NOPOWER|BROKEN) && usr.dexterity_check())) detach() return return ..() @@ -370,6 +371,10 @@ USE THIS CHEMISTRY DISPENSER FOR MAPS SO THEY START AT 100 ENERGY to_chat(user, "You throw the slime into the dispenser's tank.") return TRUE +/obj/machinery/chem_dispenser/attack_ai(mob/user as mob) + src.add_hiddenprint(user) + return src.attack_hand(user) + /obj/machinery/chem_dispenser/attack_paw(mob/user as mob) return src.attack_hand(user) @@ -592,7 +597,7 @@ USE THIS CHEMISTRY DISPENSER FOR MAPS SO THEY START AT 100 ENERGY #undef FORMAT_DISPENSER_NAME /obj/machinery/chem_dispenser/npc_tamper_act(mob/living/L) - if(stat & (FORCEDISABLE|NOPOWER|BROKEN)) + if(stat & (NOPOWER|BROKEN)) return 0 var/amount = rand(1,25) diff --git a/code/modules/reagents/machinery/chem_master.dm b/code/modules/reagents/machinery/chem_master.dm index 4c25a0db873..dea6d0c669c 100644 --- a/code/modules/reagents/machinery/chem_master.dm +++ b/code/modules/reagents/machinery/chem_master.dm @@ -490,11 +490,15 @@ var/global/list/pillIcon2Name = list("oblong purple-pink", "oblong green-white", updateUsrDialog() /obj/machinery/chem_master/AltClick() - if(!usr.incapacitated() && Adjacent(usr) && container && !(stat & (FORCEDISABLE|NOPOWER|BROKEN) && usr.dexterity_check())) + if(!usr.incapacitated() && Adjacent(usr) && container && !(stat & (NOPOWER|BROKEN) && usr.dexterity_check())) detach() return return ..() +/obj/machinery/chem_master/attack_ai(mob/user as mob) + src.add_hiddenprint(user) + return src.attack_hand(user) + /obj/machinery/chem_master/attack_paw(mob/user as mob) return src.attack_hand(user) @@ -726,7 +730,7 @@ var/global/list/pillIcon2Name = list("oblong purple-pink", "oblong green-white", container.update_icon() //Forcefully update the beaker overlays += container //Set it as an overlay - if(reagents.total_volume && !(stat & (FORCEDISABLE|BROKEN|NOPOWER))) //If we have reagents in here, and the machine is powered and functional + if(reagents.total_volume && !(stat & (BROKEN|NOPOWER))) //If we have reagents in here, and the machine is powered and functional var/image/overlay = image('icons/obj/chemical.dmi', src, "mixer_overlay") overlay.icon += mix_color_from_reagents(reagents.reagent_list) overlays += overlay diff --git a/code/modules/reagents/machinery/reagentgrinder.dm b/code/modules/reagents/machinery/reagentgrinder.dm index 96b426830a0..3224e855dde 100644 --- a/code/modules/reagents/machinery/reagentgrinder.dm +++ b/code/modules/reagents/machinery/reagentgrinder.dm @@ -290,7 +290,7 @@ var/global/list/juice_items = list ( [processing_chamber]
[beaker_contents]
"} - if (is_beaker_ready && !is_chamber_empty && !(stat & (FORCEDISABLE|NOPOWER|BROKEN))) + if (is_beaker_ready && !is_chamber_empty && !(stat & (NOPOWER|BROKEN))) dat += {"Grind the reagents
Juice the reagents

"} @@ -332,7 +332,7 @@ var/global/list/juice_items = list ( update_icon() /obj/machinery/reagentgrinder/AltClick(mob/user) - if(stat & (FORCEDISABLE|NOPOWER|BROKEN)) + if(stat & (NOPOWER|BROKEN)) return ..() if(!anchored) return ..() @@ -425,7 +425,7 @@ var/global/list/juice_items = list ( /obj/machinery/reagentgrinder/proc/juice() power_change() - if(stat & (FORCEDISABLE|NOPOWER|BROKEN)) + if(stat & (NOPOWER|BROKEN)) return if(inuse) return @@ -459,7 +459,7 @@ var/global/list/juice_items = list ( /obj/machinery/reagentgrinder/proc/grind() power_change() - if(stat & (FORCEDISABLE|NOPOWER|BROKEN)) + if(stat & (NOPOWER|BROKEN)) return if(inuse) return diff --git a/code/modules/recycling/compactor.dm b/code/modules/recycling/compactor.dm index 529fd0547b0..1e8db075456 100644 --- a/code/modules/recycling/compactor.dm +++ b/code/modules/recycling/compactor.dm @@ -7,14 +7,10 @@ req_access = list(access_janitor) template_path = "disposalsbincompactor.tmpl" - hack_abilities = list( - /datum/malfhack_ability/toggle/disable, - /datum/malfhack_ability/oneuse/overload_quiet, - /datum/malfhack_ability/oneuse/emag - ) - /obj/machinery/disposal/compactor/proc/compact() - if(stat & (FORCEDISABLE|NOPOWER|BROKEN)) + if(stat & NOPOWER) + return + if(stat & BROKEN) return playsound(src,'sound/machines/compactor.ogg', 30, 1) //Placeholder flush = 1 @@ -90,7 +86,7 @@ /obj/machinery/disposal/compactor/process() updateDialog() update_icon() - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & NOPOWER || stat & BROKEN) return if(!anchored) return @@ -112,11 +108,6 @@ return ..() -/obj/machinery/disposal/compactor/emag_ai(mob/living/silicon/ai/A) - emagged = 1 - to_chat(A, "You disable the safety features.") - - /obj/machinery/disposal/compactor/Move(NewLoc, Dir = 0, step_x = 0, step_y = 0, glide_size_override = 0) ..() if(prob(2)) diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index dcf51c86d1e..0f108cda030 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -49,7 +49,7 @@ return else if(!operable) operating = 0 - else if(stat & (FORCEDISABLE|NOPOWER)) + else if(stat & NOPOWER) operating = 0 else operating = 1 @@ -225,7 +225,7 @@ return if(!operable) operating = 0 - if(stat & (FORCEDISABLE|NOPOWER)) + if(stat & NOPOWER) operating = 0 var/disp_op = operating if(in_reverse && disp_op!=0) @@ -235,7 +235,7 @@ // machine process // move items to the target location /obj/machinery/conveyor/process() - if(stat & (BROKEN | NOPOWER | FORCEDISABLE)) + if(stat & (BROKEN | NOPOWER)) return if(!operating) return diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 55040176fe8..79c41fdd280 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -215,6 +215,11 @@ update_icon() return +// ai as human but can't flush +/obj/machinery/disposal/attack_ai(mob/user as mob) + src.add_hiddenprint(user) + ui_interact(user) + // human interact with machine /obj/machinery/disposal/attack_hand(mob/user as mob) if(user && user.loc == src) @@ -313,7 +318,7 @@ overlays += image('icons/obj/pipes/disposal.dmi', "dispover-handle") // only handle is shown if no power - if(stat & (FORCEDISABLE|NOPOWER) || mode == -1) + if(stat & NOPOWER || mode == -1) return // check for items in disposal - occupied light @@ -350,7 +355,7 @@ spawn(0) flush() - if(stat & (FORCEDISABLE|NOPOWER)) // won't charge if no power + if(stat & NOPOWER) // won't charge if no power return use_power(100) // base power usage diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index eb2eac6baf7..bf91d7690a3 100755 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -288,7 +288,7 @@ idle_power_usage = initial(idle_power_usage) - (T * (initial(idle_power_usage) / 4))//25% power usage reduction for an advanced capacitor, 50% for a super one. /obj/machinery/sorting_machine/process() - if(stat & (BROKEN | NOPOWER | FORCEDISABLE)) + if(stat & (BROKEN | NOPOWER)) return var/turf/in_T = get_step(src, input_dir) @@ -315,6 +315,9 @@ items_moved++ +/obj/machinery/sorting_machine/attack_ai(mob/user) + interact(user) + /obj/machinery/sorting_machine/attack_hand(mob/user) interact(user) @@ -471,7 +474,7 @@ return A.w_type && (types[A.w_type] in selected_types) /obj/machinery/sorting_machine/recycling/interact(mob/user) - if(stat & (BROKEN | NOPOWER | FORCEDISABLE)) + if(stat & (BROKEN | NOPOWER)) if(user.machine == src) usr.unset_machine() return @@ -518,7 +521,7 @@ RefreshParts() /obj/machinery/sorting_machine/destination/interact(mob/user) - if(stat & (BROKEN | NOPOWER | FORCEDISABLE)) + if(stat & (BROKEN | NOPOWER)) if(user.machine == src) usr.unset_machine() return diff --git a/code/modules/research/fabricators.dm b/code/modules/research/fabricators.dm index a89da68566c..2d244a08c47 100644 --- a/code/modules/research/fabricators.dm +++ b/code/modules/research/fabricators.dm @@ -152,7 +152,7 @@ /obj/machinery/r_n_d/fabricator/process() ..() - if(busy || being_built || stat&(NOPOWER|BROKEN|FORCEDISABLE)) + if(busy || being_built || stat&(NOPOWER|BROKEN)) return if(stopped) if(auto_make && last_made && !queue.len) @@ -290,7 +290,7 @@ //The build_part_loop fires independently and will build stuff until the queue is over or when it is stopped. /obj/machinery/r_n_d/fabricator/proc/build_part_loop() - if(busy || stopped || being_built || stat&(NOPOWER|BROKEN|FORCEDISABLE) || queue.len == 0) + if(busy || stopped || being_built || stat&(NOPOWER|BROKEN) || queue.len == 0) return var/datum/design/D = queue_pop() if(!build_part(D)) @@ -498,7 +498,7 @@ return round(/*TechTotal(part)*/(part.MatTotal()/FAB_MAT_BASEMOD)*build_time*time_coeff, roundto) /obj/machinery/r_n_d/fabricator/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open=NANOUI_FOCUS) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return if(!isAdminGhost(user) && (user.stat || user.restrained())) return diff --git a/code/modules/research/mechanic/mechanic_fabs.dm b/code/modules/research/mechanic/mechanic_fabs.dm index 1dc8ea9f829..d1bfcb1e7ec 100644 --- a/code/modules/research/mechanic/mechanic_fabs.dm +++ b/code/modules/research/mechanic/mechanic_fabs.dm @@ -108,7 +108,7 @@ return 1 /obj/machinery/r_n_d/fabricator/mechanic_fab/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open=NANOUI_FOCUS) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return if((user.stat && !isobserver(user)) || user.restrained() || !allowed(user)) return diff --git a/code/modules/research/mechanic/reverse_engine.dm b/code/modules/research/mechanic/reverse_engine.dm index 8abda9a09d2..d0644683d0c 100644 --- a/code/modules/research/mechanic/reverse_engine.dm +++ b/code/modules/research/mechanic/reverse_engine.dm @@ -139,7 +139,7 @@ if(!research_queue.len) return while(research_queue[1]) - if(stat&(NOPOWER|BROKEN|FORCEDISABLE)) + if(stat&(NOPOWER|BROKEN)) return 0 var/datum/design/current_design = research_queue[1] if(!researchDesign(current_design)) @@ -189,7 +189,7 @@ /obj/machinery/r_n_d/reverse_engine/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open=NANOUI_FOCUS) - if(src.stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(src.stat & (BROKEN|NOPOWER)) return if((user.stat && !isobserver(user)) || user.restrained() || !allowed(user) || !Adjacent(user)) return diff --git a/code/modules/research/message_server.dm b/code/modules/research/message_server.dm index 2b12da146f2..dc96803ddd5 100644 --- a/code/modules/research/message_server.dm +++ b/code/modules/research/message_server.dm @@ -86,7 +86,7 @@ var/global/list/obj/machinery/message_server/message_servers = list() return newKey /obj/machinery/message_server/proc/is_functioning() - return !disabled && !(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + return !disabled && !(stat & (BROKEN|NOPOWER)) /obj/machinery/message_server/proc/send_pda_message(var/recipient = "",var/sender = "",var/message = "", var/icon/img_sent = null) pda_msgs += new/datum/data_pda_msg(recipient,sender,message,img_sent) @@ -109,7 +109,7 @@ var/global/list/obj/machinery/message_server/message_servers = list() update_icon() /obj/machinery/message_server/update_icon() - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) icon_state = "pda_server-nopower" else if (disabled) icon_state = "pda_server-off" diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm index 0c72b689d60..000f6645329 100644 --- a/code/modules/research/protolathe.dm +++ b/code/modules/research/protolathe.dm @@ -39,7 +39,7 @@ it creates. All the menus and other manipulation commands are in the R&D console /obj/machinery/r_n_d/fabricator/protolathe/power_change() ..() - if(!(stat & (BROKEN|NOPOWER|FORCEDISABLE))) + if(!(stat & (BROKEN|NOPOWER))) set_light(2) else set_light(0) diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index d24b5396848..e1c0db1ceb9 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -232,7 +232,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, /obj/machinery/computer/rdconsole/proc/deconstruct_item(mob/user) if(!linked_destroy || linked_destroy.busy || !linked_destroy.loaded_item) return - if(isLocked() || (linked_destroy.stat & (FORCEDISABLE|NOPOWER|BROKEN)) || (stat & (NOPOWER|BROKEN|FORCEDISABLE))) + if(isLocked() || (linked_destroy.stat & (NOPOWER|BROKEN)) || (stat & (NOPOWER|BROKEN))) return linked_destroy.busy = 1 screen = 0.1 @@ -664,7 +664,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
[jointext(options," || ")]

"} /obj/machinery/computer/rdconsole/attack_hand(mob/user as mob) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return user.set_machine(src) diff --git a/code/modules/research/rdmachines.dm b/code/modules/research/rdmachines.dm index 47182d4e9ea..1122a24f38f 100644 --- a/code/modules/research/rdmachines.dm +++ b/code/modules/research/rdmachines.dm @@ -32,12 +32,6 @@ var/global/list/rnd_machines = list() var/datum/wires/rnd/wires = null - hack_abilities = list( - /datum/malfhack_ability/toggle/disable, - /datum/malfhack_ability/oneuse/overload_quiet, - ) - - /obj/machinery/r_n_d/New() rnd_machines |= src ..() diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index 356727fffad..16332cbd542 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -110,7 +110,7 @@ C.files.RefreshResearch() /obj/machinery/r_n_d/server/proc/produce_heat(heat_amt) - if(!(stat & (NOPOWER|BROKEN|FORCEDISABLE))) //Blatently stolen from space heater. + if(!(stat & (NOPOWER|BROKEN))) //Blatently stolen from space heater. var/turf/simulated/L = loc if(istype(L)) var/datum/gas_mixture/env = L.return_air() @@ -235,7 +235,7 @@ return /obj/machinery/computer/rdservercontrol/attack_hand(mob/user as mob) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return user.set_machine(src) var/dat = "" diff --git a/code/modules/research/xenoarchaeology/machinery/analysis_base.dm b/code/modules/research/xenoarchaeology/machinery/analysis_base.dm index 81e6166b284..04712b324e6 100644 --- a/code/modules/research/xenoarchaeology/machinery/analysis_base.dm +++ b/code/modules/research/xenoarchaeology/machinery/analysis_base.dm @@ -33,7 +33,7 @@ /obj/machinery/anomaly/power_change() ..() - if (stat & (FORCEDISABLE|NOPOWER) && scan_process) + if (stat & NOPOWER && scan_process) stop() else update_icon() @@ -41,7 +41,7 @@ /obj/machinery/anomaly/process() //First we deal with the machine's task if(scan_process) - if (stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if (stat & (NOPOWER|BROKEN)) stop() else use_power = MACHINE_POWER_USE_ACTIVE @@ -151,7 +151,7 @@ /obj/machinery/anomaly/AltClick(var/mob/user) - if (user.incapacitated() || !user.Adjacent(src) || scan_process || !held_container || stat & (NOPOWER|FORCEDISABLE)) + if (user.incapacitated() || !user.Adjacent(src) || scan_process || !held_container || stat & NOPOWER) return eject(user) @@ -160,14 +160,14 @@ if (!anchored) return ..() - if (user.incapacitated() || !user.Adjacent(src) || scan_process || !held_container || stat & (NOPOWER|FORCEDISABLE)) + if (user.incapacitated() || !user.Adjacent(src) || scan_process || !held_container || stat & NOPOWER) return start(user) /obj/machinery/anomaly/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = NANOUI_FOCUS) - if (stat & (FORCEDISABLE|NOPOWER)) + if (stat & NOPOWER) return var/list/data[0] diff --git a/code/modules/research/xenoarchaeology/machinery/analysis_hyperspectral.dm b/code/modules/research/xenoarchaeology/machinery/analysis_hyperspectral.dm index 769bec51fb7..f931eeedd81 100644 --- a/code/modules/research/xenoarchaeology/machinery/analysis_hyperspectral.dm +++ b/code/modules/research/xenoarchaeology/machinery/analysis_hyperspectral.dm @@ -20,7 +20,7 @@ /obj/machinery/anomaly/hyperspectral/update_icon() overlays.Cut() - if (stat & (NOPOWER | BROKEN | FORCEDISABLE)) + if (stat & (NOPOWER | BROKEN)) return overlays += "hyperspectral_on" diff --git a/code/modules/research/xenoarchaeology/machinery/artifact_analyser.dm b/code/modules/research/xenoarchaeology/machinery/artifact_analyser.dm index 2e19d296125..bcc0db4fd7f 100644 --- a/code/modules/research/xenoarchaeology/machinery/artifact_analyser.dm +++ b/code/modules/research/xenoarchaeology/machinery/artifact_analyser.dm @@ -62,7 +62,7 @@ var/anomaly_report_num = 0 /obj/machinery/artifact_analyser/interact(mob/user) if(..()) return - if(stat & (NOPOWER|BROKEN|FORCEDISABLE) || get_dist(src, user) > 1) + if(stat & (NOPOWER|BROKEN) || get_dist(src, user) > 1) user.unset_machine(src) return diff --git a/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm b/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm index d2a39b8b9b3..03a3395e364 100644 --- a/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm +++ b/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm @@ -71,7 +71,7 @@ interact(user) /obj/machinery/artifact_harvester/interact(var/mob/user as mob) - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) return user.set_machine(src) var/dat = "Artifact Power Harvester
" @@ -121,7 +121,7 @@ onclose(user, "artharvester") /obj/machinery/artifact_harvester/process() - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) return if(harvesting > 0) @@ -394,7 +394,7 @@ icon_state = "harvester" set_light(0) - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) return if (harvesting != 0) diff --git a/code/modules/research/xenoarchaeology/machinery/artifact_scanner.dm b/code/modules/research/xenoarchaeology/machinery/artifact_scanner.dm index 7fe030c1f8c..77cac4429c3 100644 --- a/code/modules/research/xenoarchaeology/machinery/artifact_scanner.dm +++ b/code/modules/research/xenoarchaeology/machinery/artifact_scanner.dm @@ -25,7 +25,7 @@ /obj/machinery/artifact_scanpad/update_icon() icon_state = "xenoarch_scanner0" - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) return if (analyser_console?.scan_in_progress) diff --git a/code/modules/security levels/keycard authentication.dm b/code/modules/security levels/keycard authentication.dm index 73d3593c39b..9b158071c37 100644 --- a/code/modules/security levels/keycard authentication.dm +++ b/code/modules/security levels/keycard authentication.dm @@ -29,17 +29,15 @@ var/global/list/obj/machinery/keycard_auth/authenticators = list() authenticators += src /obj/machinery/keycard_auth/attack_ai(mob/user as mob) - if(ismalf(user)) - ..() - else - to_chat(user, "The station AI is not to interact with these devices.") + to_chat(user, "The station AI is not to interact with these devices.") + return /obj/machinery/keycard_auth/attack_paw(mob/user as mob) to_chat(user, "You are too primitive to use this device.") return /obj/machinery/keycard_auth/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) to_chat(user, "This device is not powered.") return if(isID(W) || isPDA(W)) @@ -78,7 +76,7 @@ var/global/list/obj/machinery/keycard_auth/authenticators = list() authenticators -= src /obj/machinery/keycard_auth/attack_hand(mob/user as mob) - if(user.stat || stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(user.stat || stat & (NOPOWER|BROKEN)) to_chat(user, "This device is not powered.") return if(busy) @@ -122,7 +120,7 @@ var/global/list/obj/machinery/keycard_auth/authenticators = list() if(busy) to_chat(usr, "This device is busy.") return - if(usr.stat || stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(usr.stat || stat & (BROKEN|NOPOWER)) to_chat(usr, "This device is without power.") return if(href_list["triggerevent"]) @@ -161,7 +159,7 @@ var/global/list/obj/machinery/keycard_auth/authenticators = list() KA.receive_request(src) /obj/machinery/keycard_auth/proc/receive_request(var/obj/machinery/keycard_auth/source) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return event_source = source busy = 1 diff --git a/code/modules/store/store.dm b/code/modules/store/store.dm index b9516aa2e53..523e1b72cb7 100644 --- a/code/modules/store/store.dm +++ b/code/modules/store/store.dm @@ -49,7 +49,7 @@ var/global/datum/store/centcomm_store for(var/obj/machinery/account_database/DB in account_DBs) //Checks for a database on its Z-level, else it checks for a database at the main Station. if(DB.z == map.zMainStation) - if(!(DB.stat & (NOPOWER|FORCEDISABLE)) && DB.activated )//If the database if damaged or not powered, people won't be able to use the store anymore + if(!(DB.stat & NOPOWER) && DB.activated )//If the database if damaged or not powered, people won't be able to use the store anymore linked_db = DB break diff --git a/code/modules/telesci/gps.dm b/code/modules/telesci/gps.dm index 014ecf69cae..f3b69199886 100644 --- a/code/modules/telesci/gps.dm +++ b/code/modules/telesci/gps.dm @@ -262,7 +262,7 @@ var/list/all_GPS_list = list() . = ..() send_signal(wearer, src, "SPS [gpstag]: Code Yellow", FALSE, view_all) -/obj/item/device/gps/secure/proc/send_signal(var/mob/wearer, var/obj/item/device/gps/secure/SPS, var/code, var/isdead, var/iscommand = FALSE, var/stfu) +/obj/item/device/gps/secure/proc/send_signal(var/mob/wearer, var/obj/item/device/gps/secure/SPS, var/code, var/isdead, var/iscommand = FALSE) var/turf/pos = get_turf(SPS) var/x0 = pos.x-WORLD_X_OFFSET[pos.z] var/y0 = pos.x-WORLD_Y_OFFSET[pos.z] @@ -283,7 +283,7 @@ var/list/all_GPS_list = list() otherSPS.say("Alert. [alerttype]") playsound(otherSPS,'sound/machines/radioboop.ogg',40,1) - if(boop && !stfu) + if(boop) deathsound(isdead) /obj/item/device/gps/secure/proc/deathsound(var/dead=FALSE) diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm index 894fdf7dcaa..bc008fb1b55 100644 --- a/code/modules/telesci/telesci_computer.dm +++ b/code/modules/telesci/telesci_computer.dm @@ -104,7 +104,7 @@ return 1 /obj/machinery/computer/telescience/process() - if(!cell || (stat & (BROKEN|NOPOWER|FORCEDISABLE)) || !anchored) + if(!cell || (stat & (BROKEN|NOPOWER)) || !anchored) return var/used = cell.give(100) @@ -136,14 +136,14 @@ icon_state = "teleportb" return - if(stat & (NOPOWER|FORCEDISABLE)) + if(stat & NOPOWER) src.icon_state = "teleport0" else icon_state = initial(icon_state) /obj/machinery/computer/telescience/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = NANOUI_FOCUS) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return if(!isAdminGhost(user) && (user.stat || user.restrained())) return @@ -188,6 +188,9 @@ /obj/machinery/computer/telescience/attack_paw(mob/user) to_chat(user, "You are too primitive to use this computer.") +/obj/machinery/computer/telescience/attack_ai(mob/user) + return src.attack_hand(user) + /obj/machinery/computer/telescience/attack_hand(mob/user) ui_interact(user) diff --git a/code/modules/tooltip/tooltip.dm b/code/modules/tooltip/tooltip.dm index e2339e7f3d1..cfd7a2faeea 100644 --- a/code/modules/tooltip/tooltip.dm +++ b/code/modules/tooltip/tooltip.dm @@ -44,7 +44,7 @@ Notes: /datum/tooltip/proc/show(atom/movable/thing, params = null, title = null, content = null, theme = "default", special = "none") - if (!thing || (!title && !content) || !src.owner || !isnum(world.icon_size)) + if (!thing || !params || (!title && !content) || !src.owner || !isnum(world.icon_size)) return 0 if (!src.init) //Initialize some vars diff --git a/code/modules/tooltip/tooltip.html b/code/modules/tooltip/tooltip.html index 7d3963aff1b..37800619d15 100644 --- a/code/modules/tooltip/tooltip.html +++ b/code/modules/tooltip/tooltip.html @@ -52,8 +52,6 @@ .radial-cult2 .content {font-family: 'Courier New'; color: #E80000 ; border-color: #000000; background-color:#221817;} .radial-spider .wrap {border-color: #2f1800;} .radial-spider .content {color: #944a00 ; border-color: #000000; background-color:#221e17;} - .radial-malf .wrap {border-color: #000000;} - .radial-malf .content {font-family: 'Courier New'; color: #95fc0e ; border-color: #00FF00; background-color:#041804;} /* TG: Themes */ /* ScreenUI */ diff --git a/code/modules/virus2/analyser.dm b/code/modules/virus2/analyser.dm index 1aa56140c04..668477b1859 100644 --- a/code/modules/virus2/analyser.dm +++ b/code/modules/virus2/analyser.dm @@ -99,9 +99,7 @@ if(stat & (BROKEN)) to_chat(user, "\The [src] is broken. Some components will have to be replaced before it can work again.") return - if(stat & (FORCEDISABLE)) - to_chat(user, "\The [src] is unresponsive.") - return + if(stat & (NOPOWER)) to_chat(user, "Deprived of power, \the [src] is unresponsive.") if (dish) @@ -148,7 +146,7 @@ playsound(loc, "sound/machines/heps.ogg", 50, 1) if(do_after(user, src, 5 SECONDS)) - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return alert_noise() if (dish.contained_virus.addToDB()) @@ -179,13 +177,13 @@ overlays.len = 0 icon_state = "analyser" - if (stat & (NOPOWER|FORCEDISABLE)) + if (stat & (NOPOWER)) icon_state = "analyser0" if (stat & (BROKEN)) icon_state = "analyserb" - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) set_light(0) else set_light(2,1) @@ -213,9 +211,7 @@ if(stat & (BROKEN)) to_chat(usr, "\The [src] is broken. Some components will have to be replaced before it can work again.") return - if(stat & (FORCEDISABLE)) - to_chat(usr, "\The [src] is unresponsive.") - return + if(stat & (NOPOWER)) to_chat(usr, "Deprived of power, \the [src] is unresponsive.") return @@ -233,7 +229,7 @@ P.update_icon() /obj/machinery/disease2/diseaseanalyser/process() - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) scanner = null return diff --git a/code/modules/virus2/centrifuge.dm b/code/modules/virus2/centrifuge.dm index ee9063e3018..096b4b95a54 100644 --- a/code/modules/virus2/centrifuge.dm +++ b/code/modules/virus2/centrifuge.dm @@ -66,9 +66,7 @@ if (stat & (BROKEN)) to_chat(user, "\The [src] is broken. Some components will have to be replaced before it can work again.") return FALSE - if(stat & (FORCEDISABLE)) - to_chat(user, "\The [src] is unresponsive.") - return + if (stat & NOPOWER) to_chat(user, "\The [src] is not powered, please check the area power controller before continuing.") return FALSE @@ -123,13 +121,13 @@ overlays.len = 0 icon_state = "centrifuge" - if (stat & (NOPOWER|FORCEDISABLE)) + if (stat & (NOPOWER)) icon_state = "centrifuge0" if (stat & (BROKEN)) icon_state = "centrifugeb" - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) set_light(0) else if (on) @@ -168,7 +166,7 @@ /obj/machinery/disease2/centrifuge/proc/add_vial_sprite(var/obj/item/weapon/reagent_containers/glass/beaker/vial/vial, var/slot) var/spin = on - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) spin = FALSE overlays += "centrifuge_vial[slot][spin ? "_moving" : ""]" if (vial.reagents.total_volume) @@ -184,9 +182,7 @@ if (stat & (BROKEN)) to_chat(user, "\The [src] is broken. Some components will have to be replaced before it can work again.") return - if(stat & (FORCEDISABLE)) - to_chat(user, "\The [src] is unresponsive.") - return + if (stat & (NOPOWER)) to_chat(user, "Deprived of power, \the [src] is unresponsive.") for (var/i = 1 to vial_data.len) @@ -269,7 +265,7 @@ /obj/machinery/disease2/centrifuge/process() - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) return if(on) diff --git a/code/modules/virus2/curer.dm b/code/modules/virus2/curer.dm index d56a61d6231..db48db8efc0 100644 --- a/code/modules/virus2/curer.dm +++ b/code/modules/virus2/curer.dm @@ -33,6 +33,9 @@ src.attack_hand(user) return +/obj/machinery/computer/curer/attack_ai(var/mob/user as mob) + return src.attack_hand(user) + /obj/machinery/computer/curer/attack_paw(var/mob/user as mob) return src.attack_hand(user) @@ -70,7 +73,7 @@ /obj/machinery/computer/curer/process() ..() - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) return use_power(500) diff --git a/code/modules/virus2/diseasesplicer.dm b/code/modules/virus2/diseasesplicer.dm index d178480d39d..9ca6e6ee8d8 100644 --- a/code/modules/virus2/diseasesplicer.dm +++ b/code/modules/virus2/diseasesplicer.dm @@ -90,7 +90,7 @@ /obj/machinery/computer/diseasesplicer/attack_hand(var/mob/user) . = ..() - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) eject_dish() return @@ -100,7 +100,7 @@ ui_interact(user) /obj/machinery/computer/diseasesplicer/process() - if(stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if(stat & (NOPOWER|BROKEN)) return if(scanning || splicing || burning) use_power = 2 @@ -173,7 +173,7 @@ dish_content.color = dish.contained_virus.color overlays += dish_content - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) return if (dish && dish.contained_virus) diff --git a/code/modules/virus2/dishincubator.dm b/code/modules/virus2/dishincubator.dm index 03e85adbe04..ecd7b6acfb0 100644 --- a/code/modules/virus2/dishincubator.dm +++ b/code/modules/virus2/dishincubator.dm @@ -176,9 +176,7 @@ if (stat & (BROKEN)) to_chat(user, "\The [src] is broken. Some components will have to be replaced before it can work again.") return - if(stat & (FORCEDISABLE)) - to_chat(user, "\The [src] is unresponsive.") - return + if (stat & (NOPOWER)) to_chat(user, "Deprived of power, \the [src] is unresponsive.") for (var/i in 1 to dish_data.len) @@ -236,7 +234,7 @@ /obj/machinery/disease2/incubator/process() - if (stat & (NOPOWER|BROKEN|FORCEDISABLE)) + if (stat & (NOPOWER|BROKEN)) return if (on) @@ -284,7 +282,7 @@ overlays.len = 0 icon_state = "incubator" - if (stat & (NOPOWER|FORCEDISABLE)) + if (stat & (NOPOWER)) icon_state = "incubator0" if (stat & (BROKEN)) @@ -295,7 +293,7 @@ else light_color = "#6496FA" - if(stat & (BROKEN|NOPOWER|FORCEDISABLE)) + if(stat & (BROKEN|NOPOWER)) set_light(0) else if (on) @@ -334,7 +332,7 @@ overlays += dish_content //updating the light indicators - if (dish.contained_virus && !(stat & (BROKEN|NOPOWER|FORCEDISABLE))) + if (dish.contained_virus && !(stat & (BROKEN|NOPOWER))) var/image/grown_gauge = image(icon,"incubator_growth7") grown_gauge.plane = ABOVE_LIGHTING_PLANE grown_gauge.layer = ABOVE_LIGHTING_LAYER diff --git a/icons/480x480.dmi b/icons/480x480.dmi index 4d8302bd1bf040d0632b68af2d6caf763a8b141d..5d421142ecf6da2bc4d4e33277e25846ee9b4f6a 100644 GIT binary patch delta 96075 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 delta 86835 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�KwshBYxjYXR)NaRZYN9g*J~S>=lyCnLoc}+a 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 diff --git a/icons/effects/malf.dmi b/icons/effects/malf.dmi deleted file mode 100644 index 2c9da479503ad17043485e1adff9a593bcc080d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7829 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 diff --git a/icons/obj/atmospherics/filter.dmi b/icons/obj/atmospherics/filter.dmi index 23c79bb16ef479c3d594010c57d143a4893972af..17ecad0b0b57e1689eb962499369361d41d9dc37 100644 GIT binary patch literal 46366 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 diff --git a/icons/obj/atmospherics/pump.dmi b/icons/obj/atmospherics/pump.dmi index 7038a30e0e9e39f440ba155f32f43fddbb90c7c4..53aa7d78f32f8d10ff05b6cbffb4f77d3d377356 100644 GIT binary patch delta 1021 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 A$p8QV diff --git a/icons/obj/malf_radial.dmi b/icons/obj/malf_radial.dmi deleted file mode 100644 index 46a2fc1f93a740c56c52e2adfaff0c5c18e10bc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11429 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 NWd)5lHLoo~{s+U%K-mBQ diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi index 487319cc24ea8f09ee9f1e11037c4a96dec3a0a5..6cf8c5509c2fe789462b06854368a7f50676a74a 100644 GIT binary patch delta 57097 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 Mi@xce0;>E!M_#6p{5>I^c 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 delta 60015 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 delta 19849 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 diff --git a/icons/ui/malf/18x200.dmi b/icons/ui/malf/18x200.dmi deleted file mode 100644 index 95007a55cb2fef7b6f05b31b09fb52ec6381f982..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^LO^_ii5W=FV2$hrQk(%kA+8L;49t_5)gG(;*}OUw zD40_f5>eukTAW;zSx}OhpU1#ZF(){zps4iwm*9erU!Q1s>uQ}lb3S-OsKG_!2aj~l z`)HnIDB{uGVPPC(eA(EmK}MOGdEKK)M<#_RM6XoXZ?n~-v)fp8^9qS26S|GpY8aY} z9tsO9_*%?3o0}nMp;V^xWS0LxdnG(w978O6lM{G&XCFFX;MF&2@e>Wp7oH5y{eLmu TUh}gLsD{DQ)z4*}Q$iB}25(Np diff --git a/icons/ui/malf/21x246.dmi b/icons/ui/malf/21x246.dmi deleted file mode 100644 index 3651ec60f6a237a7cab0a8ac1fd8a61d8c6c3e65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1564 zcmeAS@N?(olHy`uVBq!ia0vp^Awc|%gAGV}>|dY)qGUp3yb!MtGS6YvB!*k}-(T2z_gqodo%Z%w7y7&W z{49^i3f+C`^+-17VZ`~5PeLYcP)zkOQJI!v z_U~7C#jKxCgKWxHKhFApR_gGT#qy%H3{ig!J5N06=w@JG_4age45^s&_V#{%>2#Un zAI}$CsdrCwSQ{m)lOv`hd8zm5H806iGO4dFoeg^aEq=w5wa(i+X7YK&<|m$+z}m?v zmaH0d#B;}rwU6y&lbF^1wf6u;?L;yrSG>pV9%KMwj-_Vnr%*<07`=6|pH9kKLoUif|gO6m7JO#3cAjh3IR zdN!^2ndwB$x%baJzc9V|Wo~!&OPfh+@2xxc$%ZffbDd(aRh&^xj?}(mtyL!%U%KNa zH+#v+z|vG}HScfPx0SD-%uLHYK6STEes=$cO`C*NHBTFvO7Z4?E!!G@``W{Y3$5n% zt;?6*waY(pT9@If9Y^b@tg1O~my?&LSF?Rz_li)?S$xY21S6+;PCB(IWZv_SX6j%6 z>*<~@de}TAb!Bfauji$gFJB%yzIv0&F^%J|A3S)F6ePd7q_*}izh}Ic6~E#i(d0kD zL7Fd}IUd&be4M+4f6}SC{q=gDo|9}i6?Hs+DYbmqx@3J{UtgV+oXLO1{#BlqX5*EcWbWAs-&*=w%5nwy)W_g)TfG<}iWuPNCq^jY}Y)3Y2| zZUM%ixae7s#$u|xLeddM=%sI2-uB!3dFp1i2wW04G+E%#Wr0J%p7y`}*H_JeXnf;# z{leC*TjiI2Ts?1lVNvLj7M!NREjTu7lB6)i=8elzjtvqWW*>hqR99EOe^lbX+@61( zhTl}avd@kTp4Gq!2^h6F=kW0GdVa+{{f7G{e{l@D`TqNP)oW9hB|4!58r+-6LHqdm zlrzu}>zN;HluU${WZ#oLP^%*bi;iszD(AUh-?-|G)j}6j_PclP)O-oN{P^+X{JZSB zb-GQzXM|2{d+>92eooGc%P%APLQ`LU`t<1#`^il{bN$>?Bc=RS-nyi7TFmZ*L0V6s z>&J@w?kl6S9&h92{jT_IMS#fBqw3a`a@SRC zr*A3Iy>RY9VaATwAY&vlACknitpT&og91T>GGX* z#z|J{-mky@in;Ewtk~}4=F8WE%M+~fpKU(AtZ>G;pS9m^nDAbwF|)Fp25@A&t;ucLK6V7dFJZ? diff --git a/icons/ui/malf/32x32.dmi b/icons/ui/malf/32x32.dmi deleted file mode 100644 index 0a0bb42de19a3e722fa31bf2892a516b5dfaf8b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6267 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 jSystem Overrides

+ {{if data.malfStatus > 1}} +
+
+ Exclusive Control: +
+
+ {{:helper.link('Enabled', 'locked', {'malflock' : 1}, data.malfLocked ? 'selected' : null)}}{{:helper.link('Disabled', 'unlocked', {'malflock' : 1}, data.malfLocked ? null : 'selected')}} +
+
+
+ {{/if}} {{/if}} diff --git a/tgui/public/tgui.bundle.js b/tgui/public/tgui.bundle.js index d4124d984a3..3ad3a4839aa 100644 --- a/tgui/public/tgui.bundle.js +++ b/tgui/public/tgui.bundle.js @@ -1 +1 @@ -!function(){var e={92179:function(e,t,n){"use strict";t.__esModule=!0,t.popperGenerator=m,t.createPopper=void 0;var r=f(n(30505)),o=f(n(43545)),i=f(n(46213)),a=f(n(32440)),c=(f(n(61131)),f(n(45700))),u=f(n(68369)),s=(f(n(38574)),f(n(25435)),f(n(22709)),f(n(36284))),l=f(n(19574));t.detectOverflow=l["default"];var d=n(67458);n(56728);function f(e){return e&&e.__esModule?e:{"default":e}}var p={placement:"bottom",modifiers:[],strategy:"absolute"};function h(){for(var e=arguments.length,t=new Array(e),n=0;n=0&&(0,l.isHTMLElement)(e)?(0,c["default"])(e):e;if(!(0,l.isElement)(n))return[];return t.filter((function(e){return(0,l.isElement)(e)&&(0,p["default"])(e,n)&&"body"!==(0,h["default"])(e)}))}(e):[].concat(t),o=[].concat(r,[n]),i=o[0],u=o.reduce((function(t,n){var r=y(e,n);return t.top=(0,v.max)(r.top,t.top),t.right=(0,v.min)(r.right,t.right),t.bottom=(0,v.min)(r.bottom,t.bottom),t.left=(0,v.max)(r.left,t.left),t}),y(e,i));return u.width=u.right-u.left,u.height=u.bottom-u.top,u.x=u.left,u.y=u.top,u};var r=n(56728),o=g(n(78331)),i=g(n(68692)),a=g(n(46213)),c=g(n(32440)),u=g(n(58386)),s=g(n(61131)),l=n(67458),d=g(n(94294)),f=g(n(31613)),p=g(n(97607)),h=g(n(99624)),m=g(n(20935)),v=n(62836);function g(e){return e&&e.__esModule?e:{"default":e}}function y(e,t){return t===r.viewport?(0,m["default"])((0,o["default"])(e)):(0,l.isHTMLElement)(t)?function(e){var t=(0,d["default"])(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}(t):(0,m["default"])((0,i["default"])((0,u["default"])(e)))}},30505:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t,n){void 0===n&&(n=!1);var l=(0,a.isHTMLElement)(t),d=(0,a.isHTMLElement)(t)&&function(e){var t=e.getBoundingClientRect(),n=t.width/e.offsetWidth||1,r=t.height/e.offsetHeight||1;return 1!==n||1!==r}(t),f=(0,u["default"])(t),p=(0,r["default"])(e,d),h={scrollLeft:0,scrollTop:0},m={x:0,y:0};(l||!l&&!n)&&(("body"!==(0,i["default"])(t)||(0,s["default"])(f))&&(h=(0,o["default"])(t)),(0,a.isHTMLElement)(t)?((m=(0,r["default"])(t,!0)).x+=t.clientLeft,m.y+=t.clientTop):f&&(m.x=(0,c["default"])(f)));return{x:p.left+h.scrollLeft-m.x,y:p.top+h.scrollTop-m.y,width:p.width,height:p.height}};var r=l(n(94294)),o=l(n(71942)),i=l(n(99624)),a=n(67458),c=l(n(45471)),u=l(n(58386)),s=l(n(37229));function l(e){return e&&e.__esModule?e:{"default":e}}},61131:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return(0,o["default"])(e).getComputedStyle(e)};var r,o=(r=n(31677))&&r.__esModule?r:{"default":r}},58386:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return(((0,r.isElement)(e)?e.ownerDocument:e.document)||window.document).documentElement};var r=n(67458)},68692:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t,n=(0,r["default"])(e),u=(0,a["default"])(e),s=null==(t=e.ownerDocument)?void 0:t.body,l=(0,c.max)(n.scrollWidth,n.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),d=(0,c.max)(n.scrollHeight,n.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),f=-u.scrollLeft+(0,i["default"])(e),p=-u.scrollTop;"rtl"===(0,o["default"])(s||n).direction&&(f+=(0,c.max)(n.clientWidth,s?s.clientWidth:0)-l);return{width:l,height:d,x:f,y:p}};var r=u(n(58386)),o=u(n(61131)),i=u(n(45471)),a=u(n(1255)),c=n(62836);function u(e){return e&&e.__esModule?e:{"default":e}}},50552:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}},43545:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,o["default"])(e),n=e.offsetWidth,r=e.offsetHeight;Math.abs(t.width-n)<=1&&(n=t.width);Math.abs(t.height-r)<=1&&(r=t.height);return{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}};var r,o=(r=n(94294))&&r.__esModule?r:{"default":r}},99624:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return e?(e.nodeName||"").toLowerCase():null}},71942:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return e!==(0,o["default"])(e)&&(0,i.isHTMLElement)(e)?(0,a["default"])(e):(0,r["default"])(e)};var r=c(n(1255)),o=c(n(31677)),i=n(67458),a=c(n(50552));function c(e){return e&&e.__esModule?e:{"default":e}}},32440:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,r["default"])(e),n=l(e);for(;n&&(0,c["default"])(n)&&"static"===(0,i["default"])(n).position;)n=l(n);if(n&&("html"===(0,o["default"])(n)||"body"===(0,o["default"])(n)&&"static"===(0,i["default"])(n).position))return t;return n||function(e){var t=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&(0,a.isHTMLElement)(e)){if("fixed"===(0,i["default"])(e).position)return null}var n=(0,u["default"])(e);for(;(0,a.isHTMLElement)(n)&&["html","body"].indexOf((0,o["default"])(n))<0;){var r=(0,i["default"])(n);if("none"!==r.transform||"none"!==r.perspective||"paint"===r.contain||-1!==["transform","perspective"].indexOf(r.willChange)||t&&"filter"===r.willChange||t&&r.filter&&"none"!==r.filter)return n;n=n.parentNode}return null}(e)||t};var r=s(n(31677)),o=s(n(99624)),i=s(n(61131)),a=n(67458),c=s(n(79130)),u=s(n(31613));function s(e){return e&&e.__esModule?e:{"default":e}}function l(e){return(0,a.isHTMLElement)(e)&&"fixed"!==(0,i["default"])(e).position?e.offsetParent:null}},31613:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){if("html"===(0,r["default"])(e))return e;return e.assignedSlot||e.parentNode||((0,i.isShadowRoot)(e)?e.host:null)||(0,o["default"])(e)};var r=a(n(99624)),o=a(n(58386)),i=n(67458);function a(e){return e&&e.__esModule?e:{"default":e}}},66055:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function u(e){if(["html","body","#document"].indexOf((0,i["default"])(e))>=0)return e.ownerDocument.body;if((0,a.isHTMLElement)(e)&&(0,o["default"])(e))return e;return u((0,r["default"])(e))};var r=c(n(31613)),o=c(n(37229)),i=c(n(99624)),a=n(67458);function c(e){return e&&e.__esModule?e:{"default":e}}},78331:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,r["default"])(e),n=(0,o["default"])(e),a=t.visualViewport,c=n.clientWidth,u=n.clientHeight,s=0,l=0;a&&(c=a.width,u=a.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(s=a.offsetLeft,l=a.offsetTop));return{width:c,height:u,x:s+(0,i["default"])(e),y:l}};var r=a(n(31677)),o=a(n(58386)),i=a(n(45471));function a(e){return e&&e.__esModule?e:{"default":e}}},31677:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}},1255:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,o["default"])(e),n=t.pageXOffset,r=t.pageYOffset;return{scrollLeft:n,scrollTop:r}};var r,o=(r=n(31677))&&r.__esModule?r:{"default":r}},45471:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return(0,r["default"])((0,o["default"])(e)).left+(0,i["default"])(e).scrollLeft};var r=a(n(94294)),o=a(n(58386)),i=a(n(1255));function a(e){return e&&e.__esModule?e:{"default":e}}},67458:function(e,t,n){"use strict";t.__esModule=!0,t.isElement=function(e){var t=(0,o["default"])(e).Element;return e instanceof t||e instanceof Element},t.isHTMLElement=function(e){var t=(0,o["default"])(e).HTMLElement;return e instanceof t||e instanceof HTMLElement},t.isShadowRoot=function(e){if("undefined"==typeof ShadowRoot)return!1;var t=(0,o["default"])(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot};var r,o=(r=n(31677))&&r.__esModule?r:{"default":r}},37229:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,o["default"])(e),n=t.overflow,r=t.overflowX,i=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+i+r)};var r,o=(r=n(61131))&&r.__esModule?r:{"default":r}},79130:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return["table","td","th"].indexOf((0,o["default"])(e))>=0};var r,o=(r=n(99624))&&r.__esModule?r:{"default":r}},46213:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function u(e,t){var n;void 0===t&&(t=[]);var c=(0,r["default"])(e),s=c===(null==(n=e.ownerDocument)?void 0:n.body),l=(0,i["default"])(c),d=s?[l].concat(l.visualViewport||[],(0,a["default"])(c)?c:[]):c,f=t.concat(d);return s?f:f.concat(u((0,o["default"])(d)))};var r=c(n(66055)),o=c(n(31613)),i=c(n(31677)),a=c(n(37229));function c(e){return e&&e.__esModule?e:{"default":e}}},56728:function(e,t){"use strict";t.__esModule=!0,t.modifierPhases=t.afterWrite=t.write=t.beforeWrite=t.afterMain=t.main=t.beforeMain=t.afterRead=t.read=t.beforeRead=t.placements=t.variationPlacements=t.reference=t.popper=t.viewport=t.clippingParents=t.end=t.start=t.basePlacements=t.auto=t.left=t.right=t.bottom=t.top=void 0;t.top="top";var n="bottom";t.bottom=n;var r="right";t.right=r;var o="left";t.left=o;var i="auto";t.auto=i;var a=["top",n,r,o];t.basePlacements=a;var c="start";t.start=c;var u="end";t.end=u;t.clippingParents="clippingParents";t.viewport="viewport";t.popper="popper";t.reference="reference";var s=a.reduce((function(e,t){return e.concat([t+"-"+c,t+"-"+u])}),[]);t.variationPlacements=s;var l=[].concat(a,[i]).reduce((function(e,t){return e.concat([t,t+"-"+c,t+"-"+u])}),[]);t.placements=l;var d="beforeRead";t.beforeRead=d;var f="read";t.read=f;var p="afterRead";t.afterRead=p;var h="beforeMain";t.beforeMain=h;var m="main";t.main=m;var v="afterMain";t.afterMain=v;var g="beforeWrite";t.beforeWrite=g;var y="write";t.write=y;var b="afterWrite";t.afterWrite=b;var _=[d,f,p,h,m,v,g,y,b];t.modifierPhases=_},34739:function(e,t,n){"use strict";t.__esModule=!0;var r={popperGenerator:!0,detectOverflow:!0,createPopperBase:!0,createPopper:!0,createPopperLite:!0};t.createPopperLite=t.createPopper=t.createPopperBase=t.detectOverflow=t.popperGenerator=void 0;var o=n(56728);Object.keys(o).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(r,e)||e in t&&t[e]===o[e]||(t[e]=o[e]))}));var i=n(18726);Object.keys(i).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(r,e)||e in t&&t[e]===i[e]||(t[e]=i[e]))}));var a=n(92179);t.popperGenerator=a.popperGenerator,t.detectOverflow=a.detectOverflow,t.createPopperBase=a.createPopper;var c=n(48069);t.createPopper=c.createPopper;var u=n(39030);t.createPopperLite=u.createPopper},34559:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var r,o=(r=n(99624))&&r.__esModule?r:{"default":r},i=n(67458);var a={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},r=t.attributes[e]||{},a=t.elements[e];(0,i.isHTMLElement)(a)&&(0,o["default"])(a)&&(Object.assign(a.style,n),Object.keys(r).forEach((function(e){var t=r[e];!1===t?a.removeAttribute(e):a.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var r=t.elements[e],a=t.attributes[e]||{},c=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});(0,i.isHTMLElement)(r)&&(0,o["default"])(r)&&(Object.assign(r.style,c),Object.keys(a).forEach((function(e){r.removeAttribute(e)})))}))}},requires:["computeStyles"]};t["default"]=a},76340:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var r=f(n(22709)),o=f(n(43545)),i=f(n(97607)),a=f(n(32440)),c=f(n(16615)),u=f(n(52534)),s=f(n(32055)),l=f(n(76294)),d=n(56728);n(67458);function f(e){return e&&e.__esModule?e:{"default":e}}var p=function(e,t){return e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e,(0,s["default"])("number"!=typeof e?e:(0,l["default"])(e,d.basePlacements))};var h={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,i=e.name,s=e.options,l=n.elements.arrow,f=n.modifiersData.popperOffsets,h=(0,r["default"])(n.placement),m=(0,c["default"])(h),v=[d.left,d.right].indexOf(h)>=0?"height":"width";if(l&&f){var g=p(s.padding,n),y=(0,o["default"])(l),b="y"===m?d.top:d.left,_="y"===m?d.bottom:d.right,C=n.rects.reference[v]+n.rects.reference[m]-f[m]-n.rects.popper[v],w=f[m]-n.rects.reference[m],x=(0,a["default"])(l),N=x?"y"===m?x.clientHeight||0:x.clientWidth||0:0,E=C/2-w/2,S=g[b],V=N-y[v]-g[_],k=N/2-y[v]/2+E,O=(0,u["default"])(S,k,V),M=m;n.modifiersData[i]=((t={})[M]=O,t.centerOffset=O-k,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&(0,i["default"])(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};t["default"]=h},11300:function(e,t,n){"use strict";t.__esModule=!0,t.mapToStyles=f,t["default"]=void 0;var r=n(56728),o=l(n(32440)),i=l(n(31677)),a=l(n(58386)),c=l(n(61131)),u=l(n(22709)),s=n(62836);function l(e){return e&&e.__esModule?e:{"default":e}}var d={top:"auto",right:"auto",bottom:"auto",left:"auto"};function f(e){var t,n=e.popper,u=e.popperRect,l=e.placement,f=e.offsets,p=e.position,h=e.gpuAcceleration,m=e.adaptive,v=e.roundOffsets,g=!0===v?function(e){var t=e.x,n=e.y,r=window.devicePixelRatio||1;return{x:(0,s.round)((0,s.round)(t*r)/r)||0,y:(0,s.round)((0,s.round)(n*r)/r)||0}}(f):"function"==typeof v?v(f):f,y=g.x,b=void 0===y?0:y,_=g.y,C=void 0===_?0:_,w=f.hasOwnProperty("x"),x=f.hasOwnProperty("y"),N=r.left,E=r.top,S=window;if(m){var V=(0,o["default"])(n),k="clientHeight",O="clientWidth";V===(0,i["default"])(n)&&(V=(0,a["default"])(n),"static"!==(0,c["default"])(V).position&&(k="scrollHeight",O="scrollWidth")),V=V,l===r.top&&(E=r.bottom,C-=V[k]-u.height,C*=h?1:-1),l===r.left&&(N=r.right,b-=V[O]-u.width,b*=h?1:-1)}var M,I=Object.assign({position:p},m&&d);return h?Object.assign({},I,((M={})[E]=x?"0":"",M[N]=w?"0":"",M.transform=(S.devicePixelRatio||1)<2?"translate("+b+"px, "+C+"px)":"translate3d("+b+"px, "+C+"px, 0)",M)):Object.assign({},I,((t={})[E]=x?C+"px":"",t[N]=w?b+"px":"",t.transform="",t))}var p={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=void 0===r||r,i=n.adaptive,a=void 0===i||i,c=n.roundOffsets,s=void 0===c||c,l={placement:(0,u["default"])(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,f(Object.assign({},l,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:s})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,f(Object.assign({},l,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:s})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}};t["default"]=p},27020:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var r,o=(r=n(31677))&&r.__esModule?r:{"default":r};var i={passive:!0};var a={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,r=e.options,a=r.scroll,c=void 0===a||a,u=r.resize,s=void 0===u||u,l=(0,o["default"])(t.elements.popper),d=[].concat(t.scrollParents.reference,t.scrollParents.popper);return c&&d.forEach((function(e){e.addEventListener("scroll",n.update,i)})),s&&l.addEventListener("resize",n.update,i),function(){c&&d.forEach((function(e){e.removeEventListener("scroll",n.update,i)})),s&&l.removeEventListener("resize",n.update,i)}},data:{}};t["default"]=a},45922:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var r=l(n(70045)),o=l(n(22709)),i=l(n(28916)),a=l(n(19574)),c=l(n(31565)),u=n(56728),s=l(n(45412));function l(e){return e&&e.__esModule?e:{"default":e}}var d={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,l=e.name;if(!t.modifiersData[l]._skip){for(var d=n.mainAxis,f=void 0===d||d,p=n.altAxis,h=void 0===p||p,m=n.fallbackPlacements,v=n.padding,g=n.boundary,y=n.rootBoundary,b=n.altBoundary,_=n.flipVariations,C=void 0===_||_,w=n.allowedAutoPlacements,x=t.options.placement,N=(0,o["default"])(x),E=m||(N===x||!C?[(0,r["default"])(x)]:function(e){if((0,o["default"])(e)===u.auto)return[];var t=(0,r["default"])(e);return[(0,i["default"])(e),t,(0,i["default"])(t)]}(x)),S=[x].concat(E).reduce((function(e,n){return e.concat((0,o["default"])(n)===u.auto?(0,c["default"])(t,{placement:n,boundary:g,rootBoundary:y,padding:v,flipVariations:C,allowedAutoPlacements:w}):n)}),[]),V=t.rects.reference,k=t.rects.popper,O=new Map,M=!0,I=S[0],L=0;L=0,j=B?"width":"height",F=(0,a["default"])(t,{placement:T,boundary:g,rootBoundary:y,altBoundary:b,padding:v}),R=B?P?u.right:u.left:P?u.bottom:u.top;V[j]>k[j]&&(R=(0,r["default"])(R));var D=(0,r["default"])(R),K=[];if(f&&K.push(F[A]<=0),h&&K.push(F[R]<=0,F[D]<=0),K.every((function(e){return e}))){I=T,M=!1;break}O.set(T,K)}if(M)for(var Y=function(e){var t=S.find((function(t){var n=O.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return I=t,"break"},z=C?3:1;z>0;z--){if("break"===Y(z))break}t.placement!==I&&(t.modifiersData[l]._skip=!0,t.placement=I,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};t["default"]=d},82860:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var r,o=n(56728),i=(r=n(19574))&&r.__esModule?r:{"default":r};function a(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function c(e){return[o.top,o.right,o.bottom,o.left].some((function(t){return e[t]>=0}))}var u={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,u=t.modifiersData.preventOverflow,s=(0,i["default"])(t,{elementContext:"reference"}),l=(0,i["default"])(t,{altBoundary:!0}),d=a(s,r),f=a(l,o,u),p=c(d),h=c(f);t.modifiersData[n]={referenceClippingOffsets:d,popperEscapeOffsets:f,isReferenceHidden:p,hasPopperEscaped:h},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":h})}};t["default"]=u},18726:function(e,t,n){"use strict";t.__esModule=!0,t.preventOverflow=t.popperOffsets=t.offset=t.hide=t.flip=t.eventListeners=t.computeStyles=t.arrow=t.applyStyles=void 0;var r=f(n(34559));t.applyStyles=r["default"];var o=f(n(76340));t.arrow=o["default"];var i=f(n(11300));t.computeStyles=i["default"];var a=f(n(27020));t.eventListeners=a["default"];var c=f(n(45922));t.flip=c["default"];var u=f(n(82860));t.hide=u["default"];var s=f(n(33310));t.offset=s["default"];var l=f(n(74371));t.popperOffsets=l["default"];var d=f(n(21532));function f(e){return e&&e.__esModule?e:{"default":e}}t.preventOverflow=d["default"]},33310:function(e,t,n){"use strict";t.__esModule=!0,t.distanceAndSkiddingToXY=a,t["default"]=void 0;var r,o=(r=n(22709))&&r.__esModule?r:{"default":r},i=n(56728);function a(e,t,n){var r=(0,o["default"])(e),a=[i.left,i.top].indexOf(r)>=0?-1:1,c="function"==typeof n?n(Object.assign({},t,{placement:e})):n,u=c[0],s=c[1];return u=u||0,s=(s||0)*a,[i.left,i.right].indexOf(r)>=0?{x:s,y:u}:{x:u,y:s}}var c={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.offset,c=void 0===o?[0,0]:o,u=i.placements.reduce((function(e,n){return e[n]=a(n,t.rects,c),e}),{}),s=u[t.placement],l=s.x,d=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=d),t.modifiersData[r]=u}};t["default"]=c},74371:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var r,o=(r=n(17175))&&r.__esModule?r:{"default":r};var i={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=(0,o["default"])({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}};t["default"]=i},21532:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var r=n(56728),o=h(n(22709)),i=h(n(16615)),a=h(n(82898)),c=h(n(52534)),u=h(n(43545)),s=h(n(32440)),l=h(n(19574)),d=h(n(45412)),f=h(n(41801)),p=n(62836);function h(e){return e&&e.__esModule?e:{"default":e}}var m={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,h=e.name,m=n.mainAxis,v=void 0===m||m,g=n.altAxis,y=void 0!==g&&g,b=n.boundary,_=n.rootBoundary,C=n.altBoundary,w=n.padding,x=n.tether,N=void 0===x||x,E=n.tetherOffset,S=void 0===E?0:E,V=(0,l["default"])(t,{boundary:b,rootBoundary:_,padding:w,altBoundary:C}),k=(0,o["default"])(t.placement),O=(0,d["default"])(t.placement),M=!O,I=(0,i["default"])(k),L=(0,a["default"])(I),T=t.modifiersData.popperOffsets,A=t.rects.reference,P=t.rects.popper,B="function"==typeof S?S(Object.assign({},t.rects,{placement:t.placement})):S,j={x:0,y:0};if(T){if(v||y){var F="y"===I?r.top:r.left,R="y"===I?r.bottom:r.right,D="y"===I?"height":"width",K=T[I],Y=T[I]+V[F],z=T[I]-V[R],U=N?-P[D]/2:0,W=O===r.start?A[D]:P[D],H=O===r.start?-P[D]:-A[D],G=t.elements.arrow,$=N&&G?(0,u["default"])(G):{width:0,height:0},q=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:(0,f["default"])(),X=q[F],Q=q[R],J=(0,c["default"])(0,A[D],$[D]),Z=M?A[D]/2-U-J-X-B:W-J-X-B,ee=M?-A[D]/2+U+J+Q+B:H+J+Q+B,te=t.elements.arrow&&(0,s["default"])(t.elements.arrow),ne=te?"y"===I?te.clientTop||0:te.clientLeft||0:0,re=t.modifiersData.offset?t.modifiersData.offset[t.placement][I]:0,oe=T[I]+Z-re-ne,ie=T[I]+ee-re;if(v){var ae=(0,c["default"])(N?(0,p.min)(Y,oe):Y,K,N?(0,p.max)(z,ie):z);T[I]=ae,j[I]=ae-K}if(y){var ce="x"===I?r.top:r.left,ue="x"===I?r.bottom:r.right,se=T[L],le=se+V[ce],de=se-V[ue],fe=(0,c["default"])(N?(0,p.min)(le,oe):le,se,N?(0,p.max)(de,ie):de);T[L]=fe,j[L]=fe-se}}t.modifiersData[h]=j}},requiresIfExists:["offset"]};t["default"]=m},39030:function(e,t,n){"use strict";t.__esModule=!0,t.defaultModifiers=t.createPopper=void 0;var r=n(92179);t.popperGenerator=r.popperGenerator,t.detectOverflow=r.detectOverflow;var o=u(n(27020)),i=u(n(74371)),a=u(n(11300)),c=u(n(34559));function u(e){return e&&e.__esModule?e:{"default":e}}var s=[o["default"],i["default"],a["default"],c["default"]];t.defaultModifiers=s;var l=(0,r.popperGenerator)({defaultModifiers:s});t.createPopper=l},48069:function(e,t,n){"use strict";t.__esModule=!0;var r={createPopper:!0,createPopperLite:!0,defaultModifiers:!0,popperGenerator:!0,detectOverflow:!0};t.defaultModifiers=t.createPopperLite=t.createPopper=void 0;var o=n(92179);t.popperGenerator=o.popperGenerator,t.detectOverflow=o.detectOverflow;var i=v(n(27020)),a=v(n(74371)),c=v(n(11300)),u=v(n(34559)),s=v(n(33310)),l=v(n(45922)),d=v(n(21532)),f=v(n(76340)),p=v(n(82860)),h=n(39030);t.createPopperLite=h.createPopper;var m=n(18726);function v(e){return e&&e.__esModule?e:{"default":e}}Object.keys(m).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(r,e)||e in t&&t[e]===m[e]||(t[e]=m[e]))}));var g=[i["default"],a["default"],c["default"],u["default"],s["default"],l["default"],d["default"],f["default"],p["default"]];t.defaultModifiers=g;var y=(0,o.popperGenerator)({defaultModifiers:g});t.createPopperLite=t.createPopper=y},31565:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t){void 0===t&&(t={});var n=t,c=n.placement,u=n.boundary,s=n.rootBoundary,l=n.padding,d=n.flipVariations,f=n.allowedAutoPlacements,p=void 0===f?o.placements:f,h=(0,r["default"])(c),m=h?d?o.variationPlacements:o.variationPlacements.filter((function(e){return(0,r["default"])(e)===h})):o.basePlacements,v=m.filter((function(e){return p.indexOf(e)>=0}));0===v.length&&(v=m);var g=v.reduce((function(t,n){return t[n]=(0,i["default"])(e,{placement:n,boundary:u,rootBoundary:s,padding:l})[(0,a["default"])(n)],t}),{});return Object.keys(g).sort((function(e,t){return g[e]-g[t]}))};var r=c(n(45412)),o=n(56728),i=c(n(19574)),a=c(n(22709));function c(e){return e&&e.__esModule?e:{"default":e}}},17175:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t,n=e.reference,c=e.element,u=e.placement,s=u?(0,r["default"])(u):null,l=u?(0,o["default"])(u):null,d=n.x+n.width/2-c.width/2,f=n.y+n.height/2-c.height/2;switch(s){case a.top:t={x:d,y:n.y-c.height};break;case a.bottom:t={x:d,y:n.y+n.height};break;case a.right:t={x:n.x+n.width,y:f};break;case a.left:t={x:n.x-c.width,y:f};break;default:t={x:n.x,y:n.y}}var p=s?(0,i["default"])(s):null;if(null!=p){var h="y"===p?"height":"width";switch(l){case a.start:t[p]=t[p]-(n[h]/2-c[h]/2);break;case a.end:t[p]=t[p]+(n[h]/2-c[h]/2)}}return t};var r=c(n(22709)),o=c(n(45412)),i=c(n(16615)),a=n(56728);function c(e){return e&&e.__esModule?e:{"default":e}}},68369:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){var t;return function(){return t||(t=new Promise((function(n){Promise.resolve().then((function(){t=undefined,n(e())}))}))),t}}},19574:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t){void 0===t&&(t={});var n=t,f=n.placement,p=void 0===f?e.placement:f,h=n.boundary,m=void 0===h?u.clippingParents:h,v=n.rootBoundary,g=void 0===v?u.viewport:v,y=n.elementContext,b=void 0===y?u.popper:y,_=n.altBoundary,C=void 0!==_&&_,w=n.padding,x=void 0===w?0:w,N=(0,l["default"])("number"!=typeof x?x:(0,d["default"])(x,u.basePlacements)),E=b===u.popper?u.reference:u.popper,S=e.elements.reference,V=e.rects.popper,k=e.elements[C?E:b],O=(0,o["default"])((0,s.isElement)(k)?k:k.contextElement||(0,i["default"])(e.elements.popper),m,g),M=(0,r["default"])(S),I=(0,a["default"])({reference:M,element:V,strategy:"absolute",placement:p}),L=(0,c["default"])(Object.assign({},V,I)),T=b===u.popper?L:M,A={top:O.top-T.top+N.top,bottom:T.bottom-O.bottom+N.bottom,left:O.left-T.left+N.left,right:T.right-O.right+N.right},P=e.modifiersData.offset;if(b===u.popper&&P){var B=P[p];Object.keys(A).forEach((function(e){var t=[u.right,u.bottom].indexOf(e)>=0?1:-1,n=[u.top,u.bottom].indexOf(e)>=0?"y":"x";A[e]+=B[n]*t}))}return A};var r=f(n(94294)),o=f(n(48162)),i=f(n(58386)),a=f(n(17175)),c=f(n(20935)),u=n(56728),s=n(67458),l=f(n(32055)),d=f(n(76294));function f(e){return e&&e.__esModule?e:{"default":e}}},76294:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}},41434:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r=0?"x":"y"}},70045:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return e.replace(/left|right|bottom|top/g,(function(e){return n[e]}))};var n={left:"right",right:"left",bottom:"top",top:"bottom"}},28916:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return e.replace(/start|end/g,(function(e){return n[e]}))};var n={start:"end",end:"start"}},45412:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return e.split("-")[1]}},62836:function(e,t){"use strict";t.__esModule=!0,t.round=t.min=t.max=void 0;var n=Math.max;t.max=n;var r=Math.min;t.min=r;var o=Math.round;t.round=o},36284:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){var t=e.reduce((function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e}),{});return Object.keys(t).map((function(e){return t[e]}))}},32055:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return Object.assign({},(0,o["default"])(),e)};var r,o=(r=n(41801))&&r.__esModule?r:{"default":r}},45700:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=function(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}(e);return r.modifierPhases.reduce((function(e,n){return e.concat(t.filter((function(e){return e.phase===n})))}),[])};var r=n(56728)},20935:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}},25435:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e,t){var n=new Set;return e.filter((function(e){var r=t(e);if(!n.has(r))return n.add(r),!0}))}},38574:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){e.forEach((function(t){Object.keys(t).forEach((function(n){switch(n){case"name":t.name;break;case"enabled":t.enabled;case"phase":o.modifierPhases.indexOf(t.phase);break;case"fn":t.fn;break;case"effect":t.effect;break;case"requires":Array.isArray(t.requires);break;case"requiresIfExists":Array.isArray(t.requiresIfExists)}t.requires&&t.requires.forEach((function(t){e.find((function(e){return e.name===t}))}))}))}))};(r=n(41434))&&r.__esModule;var r,o=n(56728)},52534:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t,n){return(0,r.max)(e,(0,r.min)(t,n))};var r=n(62836)},83923:function(e){"use strict";e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},1372:function(e,t,n){"use strict";var r=n(35611);e.exports=function(e){if(!r(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},36910:function(e,t,n){"use strict";var r=n(17657),o=n(83681),i=n(74217),a=r("unscopables"),c=Array.prototype;c[a]==undefined&&i.f(c,a,{configurable:!0,value:o(null)}),e.exports=function(e){c[a][e]=!0}},69953:function(e,t,n){"use strict";var r=n(37015).charAt;e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},50997:function(e){"use strict";e.exports=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e}},63518:function(e,t,n){"use strict";var r=n(35611);e.exports=function(e){if(!r(e))throw TypeError(String(e)+" is not an object");return e}},32977:function(e){"use strict";e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},19216:function(e,t,n){"use strict";var r,o,i,a=n(32977),c=n(75592),u=n(84253),s=n(35611),l=n(28919),d=n(47953),f=n(52188),p=n(11807),h=n(74217).f,m=n(6863),v=n(18444),g=n(17657),y=n(41080),b=u.Int8Array,_=b&&b.prototype,C=u.Uint8ClampedArray,w=C&&C.prototype,x=b&&m(b),N=_&&m(_),E=Object.prototype,S=E.isPrototypeOf,V=g("toStringTag"),k=y("TYPED_ARRAY_TAG"),O=y("TYPED_ARRAY_CONSTRUCTOR"),M=a&&!!v&&"Opera"!==d(u.opera),I=!1,L={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},T={BigInt64Array:8,BigUint64Array:8},A=function(e){if(!s(e))return!1;var t=d(e);return"DataView"===t||l(L,t)||l(T,t)},P=function(e){if(!s(e))return!1;var t=d(e);return l(L,t)||l(T,t)};for(r in L)(i=(o=u[r])&&o.prototype)?f(i,O,o):M=!1;for(r in T)(i=(o=u[r])&&o.prototype)&&f(i,O,o);if((!M||"function"!=typeof x||x===Function.prototype)&&(x=function(){throw TypeError("Incorrect invocation")},M))for(r in L)u[r]&&v(u[r],x);if((!M||!N||N===E)&&(N=x.prototype,M))for(r in L)u[r]&&v(u[r].prototype,N);if(M&&m(w)!==N&&v(w,N),c&&!l(N,V))for(r in I=!0,h(N,V,{get:function(){return s(this)?this[k]:undefined}}),L)u[r]&&f(u[r],k,r);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:M,TYPED_ARRAY_CONSTRUCTOR:O,TYPED_ARRAY_TAG:I&&k,aTypedArray:function(e){if(P(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(v&&!S.call(x,e))throw TypeError("Target is not a typed array constructor");return e},exportTypedArrayMethod:function(e,t,n){if(c){if(n)for(var r in L){var o=u[r];if(o&&l(o.prototype,e))try{delete o.prototype[e]}catch(i){}}N[e]&&!n||p(N,e,n?t:M&&_[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var r,o;if(c){if(v){if(n)for(r in L)if((o=u[r])&&l(o,e))try{delete o[e]}catch(i){}if(x[e]&&!n)return;try{return p(x,e,n?t:M&&x[e]||t)}catch(i){}}for(r in L)!(o=u[r])||o[e]&&!n||p(o,e,t)}},isView:A,isTypedArray:P,TypedArray:x,TypedArrayPrototype:N}},80246:function(e,t,n){"use strict";var r=n(84253),o=n(75592),i=n(32977),a=n(52188),c=n(3993),u=n(69691),s=n(50997),l=n(3997),d=n(39570),f=n(77559),p=n(16567),h=n(6863),m=n(18444),v=n(78870).f,g=n(74217).f,y=n(22051),b=n(29108),_=n(79947),C=_.get,w=_.set,x="ArrayBuffer",N="DataView",E="Wrong index",S=r.ArrayBuffer,V=S,k=r.DataView,O=k&&k.prototype,M=Object.prototype,I=r.RangeError,L=p.pack,T=p.unpack,A=function(e){return[255&e]},P=function(e){return[255&e,e>>8&255]},B=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},j=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},F=function(e){return L(e,23,4)},R=function(e){return L(e,52,8)},D=function(e,t){g(e.prototype,t,{get:function(){return C(this)[t]}})},K=function(e,t,n,r){var o=f(n),i=C(e);if(o+t>i.byteLength)throw I(E);var a=C(i.buffer).bytes,c=o+i.byteOffset,u=a.slice(c,c+t);return r?u:u.reverse()},Y=function(e,t,n,r,o,i){var a=f(n),c=C(e);if(a+t>c.byteLength)throw I(E);for(var u=C(c.buffer).bytes,s=a+c.byteOffset,l=r(+o),d=0;dH;)(z=W[H++])in V||a(V,z,S[z]);U.constructor=V}m&&h(O)!==M&&m(O,M);var G=new k(new V(2)),$=O.setInt8;G.setInt8(0,2147483648),G.setInt8(1,2147483649),!G.getInt8(0)&&G.getInt8(1)||c(O,{setInt8:function(e,t){$.call(this,e,t<<24>>24)},setUint8:function(e,t){$.call(this,e,t<<24>>24)}},{unsafe:!0})}else V=function(e){s(this,V,x);var t=f(e);w(this,{bytes:y.call(new Array(t),0),byteLength:t}),o||(this.byteLength=t)},k=function(e,t,n){s(this,k,N),s(e,V,N);var r=C(e).byteLength,i=l(t);if(i<0||i>r)throw I("Wrong offset");if(i+(n=n===undefined?r-i:d(n))>r)throw I("Wrong length");w(this,{buffer:e,byteLength:n,byteOffset:i}),o||(this.buffer=e,this.byteLength=n,this.byteOffset=i)},o&&(D(V,"byteLength"),D(k,"buffer"),D(k,"byteLength"),D(k,"byteOffset")),c(k.prototype,{getInt8:function(e){return K(this,1,e)[0]<<24>>24},getUint8:function(e){return K(this,1,e)[0]},getInt16:function(e){var t=K(this,2,e,arguments.length>1?arguments[1]:undefined);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=K(this,2,e,arguments.length>1?arguments[1]:undefined);return t[1]<<8|t[0]},getInt32:function(e){return j(K(this,4,e,arguments.length>1?arguments[1]:undefined))},getUint32:function(e){return j(K(this,4,e,arguments.length>1?arguments[1]:undefined))>>>0},getFloat32:function(e){return T(K(this,4,e,arguments.length>1?arguments[1]:undefined),23)},getFloat64:function(e){return T(K(this,8,e,arguments.length>1?arguments[1]:undefined),52)},setInt8:function(e,t){Y(this,1,e,A,t)},setUint8:function(e,t){Y(this,1,e,A,t)},setInt16:function(e,t){Y(this,2,e,P,t,arguments.length>2?arguments[2]:undefined)},setUint16:function(e,t){Y(this,2,e,P,t,arguments.length>2?arguments[2]:undefined)},setInt32:function(e,t){Y(this,4,e,B,t,arguments.length>2?arguments[2]:undefined)},setUint32:function(e,t){Y(this,4,e,B,t,arguments.length>2?arguments[2]:undefined)},setFloat32:function(e,t){Y(this,4,e,F,t,arguments.length>2?arguments[2]:undefined)},setFloat64:function(e,t){Y(this,8,e,R,t,arguments.length>2?arguments[2]:undefined)}});b(V,x),b(k,N),e.exports={ArrayBuffer:V,DataView:k}},59571:function(e,t,n){"use strict";var r=n(12104),o=n(55205),i=n(39570),a=Math.min;e.exports=[].copyWithin||function(e,t){var n=r(this),c=i(n.length),u=o(e,c),s=o(t,c),l=arguments.length>2?arguments[2]:undefined,d=a((l===undefined?c:o(l,c))-s,c-u),f=1;for(s0;)s in n?n[u]=n[s]:delete n[u],u+=f,s+=f;return n}},22051:function(e,t,n){"use strict";var r=n(12104),o=n(55205),i=n(39570);e.exports=function(e){for(var t=r(this),n=i(t.length),a=arguments.length,c=o(a>1?arguments[1]:undefined,n),u=a>2?arguments[2]:undefined,s=u===undefined?n:o(u,n);s>c;)t[c++]=e;return t}},90369:function(e,t,n){"use strict";var r=n(69033).forEach,o=n(37902)("forEach");e.exports=o?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}},11955:function(e){"use strict";e.exports=function(e,t){for(var n=0,r=t.length,o=new e(r);r>n;)o[n]=t[n++];return o}},28213:function(e,t,n){"use strict";var r=n(74271),o=n(12104),i=n(32648),a=n(14195),c=n(39570),u=n(39241),s=n(3170);e.exports=function(e){var t,n,l,d,f,p,h=o(e),m="function"==typeof this?this:Array,v=arguments.length,g=v>1?arguments[1]:undefined,y=g!==undefined,b=s(h),_=0;if(y&&(g=r(g,v>2?arguments[2]:undefined,2)),b==undefined||m==Array&&a(b))for(n=new m(t=c(h.length));t>_;_++)p=y?g(h[_],_):h[_],u(n,_,p);else for(f=(d=b.call(h)).next,n=new m;!(l=f.call(d)).done;_++)p=y?i(d,g,[l.value,_],!0):l.value,u(n,_,p);return n.length=_,n}},25945:function(e,t,n){"use strict";var r=n(26553),o=n(39570),i=n(55205),a=function(e){return function(t,n,a){var c,u=r(t),s=o(u.length),l=i(a,s);if(e&&n!=n){for(;s>l;)if((c=u[l++])!=c)return!0}else for(;s>l;l++)if((e||l in u)&&u[l]===n)return e||l||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},69033:function(e,t,n){"use strict";var r=n(74271),o=n(50990),i=n(12104),a=n(39570),c=n(77454),u=[].push,s=function(e){var t=1==e,n=2==e,s=3==e,l=4==e,d=6==e,f=7==e,p=5==e||d;return function(h,m,v,g){for(var y,b,_=i(h),C=o(_),w=r(m,v,3),x=a(C.length),N=0,E=g||c,S=t?E(h,x):n||f?E(h,0):undefined;x>N;N++)if((p||N in C)&&(b=w(y=C[N],N,_),e))if(t)S[N]=b;else if(b)switch(e){case 3:return!0;case 5:return y;case 6:return N;case 2:u.call(S,y)}else switch(e){case 4:return!1;case 7:u.call(S,y)}return d?-1:s||l?l:S}};e.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6),filterReject:s(7)}},41183:function(e,t,n){"use strict";var r=n(26553),o=n(3997),i=n(39570),a=n(37902),c=Math.min,u=[].lastIndexOf,s=!!u&&1/[1].lastIndexOf(1,-0)<0,l=a("lastIndexOf"),d=s||!l;e.exports=d?function(e){if(s)return u.apply(this,arguments)||0;var t=r(this),n=i(t.length),a=n-1;for(arguments.length>1&&(a=c(a,o(arguments[1]))),a<0&&(a=n+a);a>=0;a--)if(a in t&&t[a]===e)return a||0;return-1}:u},93537:function(e,t,n){"use strict";var r=n(69691),o=n(17657),i=n(12338),a=o("species");e.exports=function(e){return i>=51||!r((function(){var t=[];return(t.constructor={})[a]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},37902:function(e,t,n){"use strict";var r=n(69691);e.exports=function(e,t){var n=[][e];return!!n&&r((function(){n.call(null,t||function(){throw 1},1)}))}},28249:function(e,t,n){"use strict";var r=n(83923),o=n(12104),i=n(50990),a=n(39570),c=function(e){return function(t,n,c,u){r(n);var s=o(t),l=i(s),d=a(s.length),f=e?d-1:0,p=e?-1:1;if(c<2)for(;;){if(f in l){u=l[f],f+=p;break}if(f+=p,e?f<0:d<=f)throw TypeError("Reduce of empty array with no initial value")}for(;e?f>=0:d>f;f+=p)f in l&&(u=n(u,l[f],f,s));return u}};e.exports={left:c(!1),right:c(!0)}},58737:function(e){"use strict";var t=Math.floor,n=function(e,t){for(var n,r,o=e.length,i=1;i0;)e[r]=e[--r];r!==i++&&(e[r]=n)}return e},r=function(e,t,n){for(var r=e.length,o=t.length,i=0,a=0,c=[];i1?arguments[1]:undefined,3);t=t?t.next:n.first;)for(r(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!g(this,e)}}),i(l.prototype,n?{get:function(e){var t=g(this,e);return t&&t.value},set:function(e,t){return v(this,0===e?0:e,t)}}:{add:function(e){return v(this,e=0===e?0:e,e)}}),d&&r(l.prototype,"size",{get:function(){return p(this).size}}),l},setStrong:function(e,t,n){var r=t+" Iterator",o=m(t),i=m(r);s(e,t,(function(e,t){h(this,{type:r,target:e,state:o(e),kind:t,last:undefined})}),(function(){for(var e=i(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?"keys"==t?{value:n.key,done:!1}:"values"==t?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(e.target=undefined,{value:undefined,done:!0})}),n?"entries":"values",!n,!0),l(t)}}},57396:function(e,t,n){"use strict";var r=n(3993),o=n(40421).getWeakData,i=n(63518),a=n(35611),c=n(50997),u=n(56342),s=n(69033),l=n(28919),d=n(79947),f=d.set,p=d.getterFor,h=s.find,m=s.findIndex,v=0,g=function(e){return e.frozen||(e.frozen=new y)},y=function(){this.entries=[]},b=function(e,t){return h(e.entries,(function(e){return e[0]===t}))};y.prototype={get:function(e){var t=b(this,e);if(t)return t[1]},has:function(e){return!!b(this,e)},set:function(e,t){var n=b(this,e);n?n[1]=t:this.entries.push([e,t])},"delete":function(e){var t=m(this.entries,(function(t){return t[0]===e}));return~t&&this.entries.splice(t,1),!!~t}},e.exports={getConstructor:function(e,t,n,s){var d=e((function(e,r){c(e,d,t),f(e,{type:t,id:v++,frozen:undefined}),r!=undefined&&u(r,e[s],{that:e,AS_ENTRIES:n})})),h=p(t),m=function(e,t,n){var r=h(e),a=o(i(t),!0);return!0===a?g(r).set(t,n):a[r.id]=n,e};return r(d.prototype,{"delete":function(e){var t=h(this);if(!a(e))return!1;var n=o(e);return!0===n?g(t)["delete"](e):n&&l(n,t.id)&&delete n[t.id]},has:function(e){var t=h(this);if(!a(e))return!1;var n=o(e);return!0===n?g(t).has(e):n&&l(n,t.id)}}),r(d.prototype,n?{get:function(e){var t=h(this);if(a(e)){var n=o(e);return!0===n?g(t).get(e):n?n[t.id]:undefined}},set:function(e,t){return m(this,e,t)}}:{add:function(e){return m(this,e,!0)}}),d}}},42006:function(e,t,n){"use strict";var r=n(56174),o=n(84253),i=n(41441),a=n(11807),c=n(40421),u=n(56342),s=n(50997),l=n(35611),d=n(69691),f=n(68762),p=n(29108),h=n(22285);e.exports=function(e,t,n){var m=-1!==e.indexOf("Map"),v=-1!==e.indexOf("Weak"),g=m?"set":"add",y=o[e],b=y&&y.prototype,_=y,C={},w=function(e){var t=b[e];a(b,e,"add"==e?function(e){return t.call(this,0===e?0:e),this}:"delete"==e?function(e){return!(v&&!l(e))&&t.call(this,0===e?0:e)}:"get"==e?function(e){return v&&!l(e)?undefined:t.call(this,0===e?0:e)}:"has"==e?function(e){return!(v&&!l(e))&&t.call(this,0===e?0:e)}:function(e,n){return t.call(this,0===e?0:e,n),this})};if(i(e,"function"!=typeof y||!(v||b.forEach&&!d((function(){(new y).entries().next()})))))_=n.getConstructor(t,e,m,g),c.enable();else if(i(e,!0)){var x=new _,N=x[g](v?{}:-0,1)!=x,E=d((function(){x.has(1)})),S=f((function(e){new y(e)})),V=!v&&d((function(){for(var e=new y,t=5;t--;)e[g](t,t);return!e.has(-0)}));S||((_=t((function(t,n){s(t,_,e);var r=h(new y,t,_);return n!=undefined&&u(n,r[g],{that:r,AS_ENTRIES:m}),r}))).prototype=b,b.constructor=_),(E||V)&&(w("delete"),w("has"),m&&w("get")),(V||N)&&w(g),v&&b.clear&&delete b.clear}return C[e]=_,r({global:!0,forced:_!=y},C),p(_,e),v||n.setStrong(_,e,m),_}},49957:function(e,t,n){"use strict";var r=n(28919),o=n(28482),i=n(22245),a=n(74217);e.exports=function(e,t){for(var n=o(t),c=a.f,u=i.f,s=0;s"+c+""}},38415:function(e,t,n){"use strict";var r=n(39881).IteratorPrototype,o=n(83681),i=n(39160),a=n(29108),c=n(82723),u=function(){return this};e.exports=function(e,t,n){var s=t+" Iterator";return e.prototype=o(r,{next:i(1,n)}),a(e,s,!1,!0),c[s]=u,e}},52188:function(e,t,n){"use strict";var r=n(75592),o=n(74217),i=n(39160);e.exports=r?function(e,t,n){return o.f(e,t,i(1,n))}:function(e,t,n){return e[t]=n,e}},39160:function(e){"use strict";e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},39241:function(e,t,n){"use strict";var r=n(14613),o=n(74217),i=n(39160);e.exports=function(e,t,n){var a=r(t);a in e?o.f(e,a,i(0,n)):e[a]=n}},79873:function(e,t,n){"use strict";var r=n(69691),o=n(47497).start,i=Math.abs,a=Date.prototype,c=a.getTime,u=a.toISOString;e.exports=r((function(){return"0385-07-25T07:06:39.999Z"!=u.call(new Date(-50000000000001))}))||!r((function(){u.call(new Date(NaN))}))?function(){if(!isFinite(c.call(this)))throw RangeError("Invalid time value");var e=this,t=e.getUTCFullYear(),n=e.getUTCMilliseconds(),r=t<0?"-":t>9999?"+":"";return r+o(i(t),r?6:4,0)+"-"+o(e.getUTCMonth()+1,2,0)+"-"+o(e.getUTCDate(),2,0)+"T"+o(e.getUTCHours(),2,0)+":"+o(e.getUTCMinutes(),2,0)+":"+o(e.getUTCSeconds(),2,0)+"."+o(n,3,0)+"Z"}:u},57763:function(e,t,n){"use strict";var r=n(63518),o=n(28734);e.exports=function(e){if(r(this),"string"===e||"default"===e)e="string";else if("number"!==e)throw TypeError("Incorrect hint");return o(this,e)}},71179:function(e,t,n){"use strict";var r=n(56174),o=n(38415),i=n(6863),a=n(18444),c=n(29108),u=n(52188),s=n(11807),l=n(17657),d=n(1986),f=n(82723),p=n(39881),h=p.IteratorPrototype,m=p.BUGGY_SAFARI_ITERATORS,v=l("iterator"),g="keys",y="values",b="entries",_=function(){return this};e.exports=function(e,t,n,l,p,C,w){o(n,t,l);var x,N,E,S=function(e){if(e===p&&I)return I;if(!m&&e in O)return O[e];switch(e){case g:case y:case b:return function(){return new n(this,e)}}return function(){return new n(this)}},V=t+" Iterator",k=!1,O=e.prototype,M=O[v]||O["@@iterator"]||p&&O[p],I=!m&&M||S(p),L="Array"==t&&O.entries||M;if(L&&(x=i(L.call(new e)),h!==Object.prototype&&x.next&&(d||i(x)===h||(a?a(x,h):"function"!=typeof x[v]&&u(x,v,_)),c(x,V,!0,!0),d&&(f[V]=_))),p==y&&M&&M.name!==y&&(k=!0,I=function(){return M.call(this)}),d&&!w||O[v]===I||u(O,v,I),f[t]=I,p)if(N={values:S(y),keys:C?I:S(g),entries:S(b)},w)for(E in N)(m||k||!(E in O))&&s(O,E,N[E]);else r({target:t,proto:!0,forced:m||k},N);return N}},55282:function(e,t,n){"use strict";var r=n(65781),o=n(28919),i=n(3444),a=n(74217).f;e.exports=function(e){var t=r.Symbol||(r.Symbol={});o(t,e)||a(t,e,{value:i.f(e)})}},75592:function(e,t,n){"use strict";var r=n(69691);e.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},21477:function(e,t,n){"use strict";var r=n(84253),o=n(35611),i=r.document,a=o(i)&&o(i.createElement);e.exports=function(e){return a?i.createElement(e):{}}},20967:function(e,t,n){"use strict";var r=n(72319).match(/firefox\/(\d+)/i);e.exports=!!r&&+r[1]},46392:function(e){"use strict";e.exports="object"==typeof window},85749:function(e,t,n){"use strict";var r=n(72319);e.exports=/MSIE|Trident/.test(r)},20037:function(e,t,n){"use strict";var r=n(72319),o=n(84253);e.exports=/iphone|ipod|ipad/i.test(r)&&o.Pebble!==undefined},24542:function(e,t,n){"use strict";var r=n(72319);e.exports=/(?:iphone|ipod|ipad).*applewebkit/i.test(r)},41488:function(e,t,n){"use strict";var r=n(77e3),o=n(84253);e.exports="process"==r(o.process)},47501:function(e,t,n){"use strict";var r=n(72319);e.exports=/web0s(?!.*chrome)/i.test(r)},72319:function(e,t,n){"use strict";var r=n(69808);e.exports=r("navigator","userAgent")||""},12338:function(e,t,n){"use strict";var r,o,i=n(84253),a=n(72319),c=i.process,u=i.Deno,s=c&&c.versions||u&&u.version,l=s&&s.v8;l?o=(r=l.split("."))[0]<4?1:r[0]+r[1]:a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(o=r[1]),e.exports=o&&+o},12200:function(e,t,n){"use strict";var r=n(72319).match(/AppleWebKit\/(\d+)\./);e.exports=!!r&&+r[1]},23344:function(e){"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},56174:function(e,t,n){"use strict";var r=n(84253),o=n(22245).f,i=n(52188),a=n(11807),c=n(30889),u=n(49957),s=n(41441);e.exports=function(e,t){var n,l,d,f,p,h=e.target,m=e.global,v=e.stat;if(n=m?r:v?r[h]||c(h,{}):(r[h]||{}).prototype)for(l in t){if(f=t[l],d=e.noTargetGet?(p=o(n,l))&&p.value:n[l],!s(m?l:h+(v?".":"#")+l,e.forced)&&d!==undefined){if(typeof f==typeof d)continue;u(f,d)}(e.sham||d&&d.sham)&&i(f,"sham",!0),a(n,l,f,e)}}},69691:function(e){"use strict";e.exports=function(e){try{return!!e()}catch(t){return!0}}},68880:function(e,t,n){"use strict";n(12654);var r=n(11807),o=n(71841),i=n(69691),a=n(17657),c=n(52188),u=a("species"),s=RegExp.prototype;e.exports=function(e,t,n,l){var d=a(e),f=!i((function(){var t={};return t[d]=function(){return 7},7!=""[e](t)})),p=f&&!i((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[u]=function(){return n},n.flags="",n[d]=/./[d]),n.exec=function(){return t=!0,null},n[d](""),!t}));if(!f||!p||n){var h=/./[d],m=t(d,""[e],(function(e,t,n,r,i){var a=t.exec;return a===o||a===s.exec?f&&!i?{done:!0,value:h.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}}));r(String.prototype,e,m[0]),r(s,d,m[1])}l&&c(s[d],"sham",!0)}},904:function(e,t,n){"use strict";var r=n(89999),o=n(39570),i=n(74271);e.exports=function a(e,t,n,c,u,s,l,d){for(var f,p=u,h=0,m=!!l&&i(l,d,3);h0&&r(f))p=a(e,t,f,o(f.length),p,s-1)-1;else{if(p>=9007199254740991)throw TypeError("Exceed the acceptable array length");e[p]=f}p++}h++}return p}},7056:function(e,t,n){"use strict";var r=n(69691);e.exports=!r((function(){return Object.isExtensible(Object.preventExtensions({}))}))},74271:function(e,t,n){"use strict";var r=n(83923);e.exports=function(e,t,n){if(r(e),t===undefined)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},68719:function(e,t,n){"use strict";var r=n(83923),o=n(35611),i=[].slice,a={},c=function(e,t,n){if(!(t in a)){for(var r=[],o=0;o]*>)/g,c=/\$([$&'`]|\d{1,2})/g;e.exports=function(e,t,n,u,s,l){var d=n+e.length,f=u.length,p=c;return s!==undefined&&(s=r(s),p=a),i.call(l,p,(function(r,i){var a;switch(i.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(d);case"<":a=s[i.slice(1,-1)];break;default:var c=+i;if(0===c)return r;if(c>f){var l=o(c/10);return 0===l?r:l<=f?u[l-1]===undefined?i.charAt(1):u[l-1]+i.charAt(1):r}a=u[c-1]}return a===undefined?"":a}))}},84253:function(e,t,n){"use strict";var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},28919:function(e,t,n){"use strict";var r=n(12104),o={}.hasOwnProperty;e.exports=Object.hasOwn||function(e,t){return o.call(r(e),t)}},90311:function(e){"use strict";e.exports={}},21419:function(e,t,n){"use strict";var r=n(84253);e.exports=function(e,t){var n=r.console;n&&n.error&&(1===arguments.length?n.error(e):n.error(e,t))}},2369:function(e,t,n){"use strict";var r=n(69808);e.exports=r("document","documentElement")},78251:function(e,t,n){"use strict";var r=n(75592),o=n(69691),i=n(21477);e.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},16567:function(e){"use strict";var t=Math.abs,n=Math.pow,r=Math.floor,o=Math.log,i=Math.LN2;e.exports={pack:function(e,a,c){var u,s,l,d=new Array(c),f=8*c-a-1,p=(1<>1,m=23===a?n(2,-24)-n(2,-77):0,v=e<0||0===e&&1/e<0?1:0,g=0;for((e=t(e))!=e||e===Infinity?(s=e!=e?1:0,u=p):(u=r(o(e)/i),e*(l=n(2,-u))<1&&(u--,l*=2),(e+=u+h>=1?m/l:m*n(2,1-h))*l>=2&&(u++,l/=2),u+h>=p?(s=0,u=p):u+h>=1?(s=(e*l-1)*n(2,a),u+=h):(s=e*n(2,h-1)*n(2,a),u=0));a>=8;d[g++]=255&s,s/=256,a-=8);for(u=u<0;d[g++]=255&u,u/=256,f-=8);return d[--g]|=128*v,d},unpack:function(e,t){var r,o=e.length,i=8*o-t-1,a=(1<>1,u=i-7,s=o-1,l=e[s--],d=127&l;for(l>>=7;u>0;d=256*d+e[s],s--,u-=8);for(r=d&(1<<-u)-1,d>>=-u,u+=t;u>0;r=256*r+e[s],s--,u-=8);if(0===d)d=1-c;else{if(d===a)return r?NaN:l?-Infinity:Infinity;r+=n(2,t),d-=c}return(l?-1:1)*r*n(2,d-t)}}},50990:function(e,t,n){"use strict";var r=n(69691),o=n(77e3),i="".split;e.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==o(e)?i.call(e,""):Object(e)}:Object},22285:function(e,t,n){"use strict";var r=n(35611),o=n(18444);e.exports=function(e,t,n){var i,a;return o&&"function"==typeof(i=t.constructor)&&i!==n&&r(a=i.prototype)&&a!==n.prototype&&o(e,a),e}},89853:function(e,t,n){"use strict";var r=n(55935),o=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(e){return o.call(e)}),e.exports=r.inspectSource},40421:function(e,t,n){"use strict";var r=n(56174),o=n(90311),i=n(35611),a=n(28919),c=n(74217).f,u=n(78870),s=n(59995),l=n(41080),d=n(7056),f=!1,p=l("meta"),h=0,m=Object.isExtensible||function(){return!0},v=function(e){c(e,p,{value:{objectID:"O"+h++,weakData:{}}})},g=e.exports={enable:function(){g.enable=function(){},f=!0;var e=u.f,t=[].splice,n={};n[p]=1,e(n).length&&(u.f=function(n){for(var r=e(n),o=0,i=r.length;of;f++)if((h=x(e[f]))&&h instanceof s)return h;return new s(!1)}l=d.call(e)}for(m=l.next;!(v=m.call(l)).done;){try{h=x(v.value)}catch(N){throw u(l),N}if("object"==typeof h&&h&&h instanceof s)return h}return new s(!1)}},61781:function(e,t,n){"use strict";var r=n(63518);e.exports=function(e){var t=e["return"];if(t!==undefined)return r(t.call(e)).value}},39881:function(e,t,n){"use strict";var r,o,i,a=n(69691),c=n(6863),u=n(52188),s=n(28919),l=n(17657),d=n(1986),f=l("iterator"),p=!1;[].keys&&("next"in(i=[].keys())?(o=c(c(i)))!==Object.prototype&&(r=o):p=!0);var h=r==undefined||a((function(){var e={};return r[f].call(e)!==e}));h&&(r={}),d&&!h||s(r,f)||u(r,f,(function(){return this})),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:p}},82723:function(e){"use strict";e.exports={}},19997:function(e){"use strict";var t=Math.expm1,n=Math.exp;e.exports=!t||t(10)>22025.465794806718||t(10)<22025.465794806718||-2e-17!=t(-2e-17)?function(e){return 0==(e=+e)?e:e>-1e-6&&e<1e-6?e+e*e/2:n(e)-1}:t},43334:function(e,t,n){"use strict";var r=n(24305),o=Math.abs,i=Math.pow,a=i(2,-52),c=i(2,-23),u=i(2,127)*(2-c),s=i(2,-126);e.exports=Math.fround||function(e){var t,n,i=o(e),l=r(e);return iu||n!=n?l*Infinity:l*n}},83659:function(e){"use strict";var t=Math.log;e.exports=Math.log1p||function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:t(1+e)}},24305:function(e){"use strict";e.exports=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1}},80909:function(e,t,n){"use strict";var r,o,i,a,c,u,s,l,d=n(84253),f=n(22245).f,p=n(33453).set,h=n(24542),m=n(20037),v=n(47501),g=n(41488),y=d.MutationObserver||d.WebKitMutationObserver,b=d.document,_=d.process,C=d.Promise,w=f(d,"queueMicrotask"),x=w&&w.value;x||(r=function(){var e,t;for(g&&(e=_.domain)&&e.exit();o;){t=o.fn,o=o.next;try{t()}catch(n){throw o?a():i=undefined,n}}i=undefined,e&&e.enter()},h||g||v||!y||!b?!m&&C&&C.resolve?((s=C.resolve(undefined)).constructor=C,l=s.then,a=function(){l.call(s,r)}):a=g?function(){_.nextTick(r)}:function(){p.call(d,r)}:(c=!0,u=b.createTextNode(""),new y(r).observe(u,{characterData:!0}),a=function(){u.data=c=!c})),e.exports=x||function(e){var t={fn:e,next:undefined};i&&(i.next=t),o||(o=t,a()),i=t}},4302:function(e,t,n){"use strict";var r=n(84253);e.exports=r.Promise},54772:function(e,t,n){"use strict";var r=n(12338),o=n(69691);e.exports=!!Object.getOwnPropertySymbols&&!o((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},82911:function(e,t,n){"use strict";var r=n(84253),o=n(89853),i=r.WeakMap;e.exports="function"==typeof i&&/native code/.test(o(i))},82101:function(e,t,n){"use strict";var r=n(83923),o=function(e){var t,n;this.promise=new e((function(e,r){if(t!==undefined||n!==undefined)throw TypeError("Bad Promise constructor");t=e,n=r})),this.resolve=r(t),this.reject=r(n)};e.exports.f=function(e){return new o(e)}},18774:function(e,t,n){"use strict";var r=n(86133);e.exports=function(e){if(r(e))throw TypeError("The method doesn't accept regular expressions");return e}},64630:function(e,t,n){"use strict";var r=n(84253).isFinite;e.exports=Number.isFinite||function(e){return"number"==typeof e&&r(e)}},78025:function(e,t,n){"use strict";var r=n(84253),o=n(92082),i=n(84703).trim,a=n(65181),c=r.parseFloat,u=1/c(a+"-0")!=-Infinity;e.exports=u?function(e){var t=i(o(e)),n=c(t);return 0===n&&"-"==t.charAt(0)?-0:n}:c},55092:function(e,t,n){"use strict";var r=n(84253),o=n(92082),i=n(84703).trim,a=n(65181),c=r.parseInt,u=/^[+-]?0[Xx]/,s=8!==c(a+"08")||22!==c(a+"0x16");e.exports=s?function(e,t){var n=i(o(e));return c(n,t>>>0||(u.test(n)?16:10))}:c},64905:function(e,t,n){"use strict";var r=n(75592),o=n(69691),i=n(84547),a=n(21061),c=n(77659),u=n(12104),s=n(50990),l=Object.assign,d=Object.defineProperty;e.exports=!l||o((function(){if(r&&1!==l({b:1},l(d({},"a",{enumerable:!0,get:function(){d(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),o="abcdefghijklmnopqrst";return e[n]=7,o.split("").forEach((function(e){t[e]=e})),7!=l({},e)[n]||i(l({},t)).join("")!=o}))?function(e,t){for(var n=u(e),o=arguments.length,l=1,d=a.f,f=c.f;o>l;)for(var p,h=s(arguments[l++]),m=d?i(h).concat(d(h)):i(h),v=m.length,g=0;v>g;)p=m[g++],r&&!f.call(h,p)||(n[p]=h[p]);return n}:l},83681:function(e,t,n){"use strict";var r,o=n(63518),i=n(91543),a=n(23344),c=n(90311),u=n(2369),s=n(21477),l=n(85152),d=l("IE_PROTO"),f=function(){},p=function(e){return"