From 7dcd8e82a9edd2b05fbfe868f82e426d2b74ae17 Mon Sep 17 00:00:00 2001 From: Schnayy Date: Fri, 26 Feb 2021 09:04:43 -0600 Subject: [PATCH] Hybridizes Point Defense Turrets with Bay's System --- code/datums/supplypacks/engineering.dm | 20 +- code/game/gamemodes/meteor/meteors.dm | 33 +-- code/game/machinery/pointdefense.dm | 215 ++++++++++++++++++ code/game/machinery/portable_turret.dm | 131 ++++++----- code/game/machinery/turret_control.dm | 65 +++++- .../temporary_visuals/projectiles/impact.dm | 7 +- .../temporary_visuals/projectiles/muzzle.dm | 7 +- .../temporary_visuals/projectiles/tracer.dm | 5 + .../weapons/circuitboards/machinery/ships.dm | 5 + code/modules/projectiles/projectile/beams.dm | 19 ++ .../research/designs/circuits/circuits.dm | 13 ++ icons/obj/projectiles_impact.dmi | Bin 20132 -> 21889 bytes icons/obj/projectiles_muzzle.dmi | Bin 20546 -> 25109 bytes icons/obj/projectiles_tracer.dmi | Bin 3051 -> 3013 bytes nano/templates/pointdefense_control.tmpl | 54 +++++ 15 files changed, 486 insertions(+), 88 deletions(-) create mode 100644 nano/templates/pointdefense_control.tmpl diff --git a/code/datums/supplypacks/engineering.dm b/code/datums/supplypacks/engineering.dm index 28a7431ec1..f295676402 100644 --- a/code/datums/supplypacks/engineering.dm +++ b/code/datums/supplypacks/engineering.dm @@ -77,13 +77,19 @@ containertype = /obj/structure/closet/crate/focalpoint containername = "advanced hull shield generator crate" -/datum/supply_pack/eng/pointdefense - name = "Point Defense Turret" - contains = list(/obj/machinery/porta_turret/pointdefense/orderable) - cost = 70 - containertype = /obj/structure/closet/crate/large/secure/heph - containername = "point defense crate" - access = access_security +/datum/supply_pack/eng/point_defense_cannon_circuit + name = "Point Defense Turret Circuit" + contains = list(/obj/item/weapon/circuitboard/pointdefense = 2) + cost = 20 + containertype = /obj/structure/closet/crate/heph + containername = "point defense turret circuit crate" + +/datum/supply_pack/eng/point_defense_control_circuit + name = "Point Defense Controller Circuit" + contains = list(/obj/item/weapon/circuitboard/pointdefense_control = 1) + cost = 30 + containertype = /obj/structure/closet/crate/heph + containername = "point defense mainframe circuit crate" /datum/supply_pack/eng/electrical name = "Electrical maintenance crate" diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index a6ceb219c8..5f3b8d542a 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -109,13 +109,13 @@ desc = "You should probably run instead of gawking at this." icon = 'icons/obj/meteor.dmi' icon_state = "small" - density = 1 - anchored = 1 + density = TRUE + anchored = TRUE var/hits = 4 var/hitpwr = 2 //Level of ex_act to be called on hit. var/dest pass_flags = PASSTABLE - var/heavy = 0 + var/heavy = FALSE var/z_original var/meteordrop = /obj/item/weapon/ore/iron @@ -147,7 +147,11 @@ get_hit() /obj/effect/meteor/Destroy() +<<<<<<< HEAD walk(src,0) //this cancels the walk_towards() proc +======= + walk(src,FALSE) //this cancels the walk_towards() proc +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting GLOB.meteor_list -= src return ..() @@ -162,10 +166,10 @@ ram_turf(get_turf(A)) get_hit() else - die(0) + die(FALSE) /obj/effect/meteor/CanPass(atom/movable/mover, turf/target) - return istype(mover, /obj/effect/meteor) ? 1 : ..() + return istype(mover, /obj/effect/meteor) ? TRUE : ..() /obj/effect/meteor/proc/ram_turf(var/turf/T) //first bust whatever is in the turf @@ -190,9 +194,9 @@ /obj/effect/meteor/proc/get_hit() hits-- if(hits <= 0) - die(1) + die(TRUE) -/obj/effect/meteor/proc/die(var/explode = 1) +/obj/effect/meteor/proc/die(var/explode = TRUE) make_debris() meteor_effect(explode) qdel(src) @@ -209,16 +213,13 @@ /obj/effect/meteor/bullet_act(var/obj/item/projectile/Proj) if(Proj.excavation_amount) get_hit() - if(!QDELETED(src)) - wall_power -= Proj.excavation_amount + Proj.damage + (Proj.hitscan * 25) // Instant-impact projectiles are inherently better at dealing with meteors. - wall_power = max(1, wall_power) - if(wall_power < Proj.excavation_amount) - if(prob(min(90, 100 - Proj.damage))) - die(TRUE) - else - die(FALSE) - return + if(!QDELETED(src)) + wall_power -= Proj.excavation_amount + Proj.damage + (Proj.hitscan * 25) // Instant-impact projectiles are inherently better at dealing with meteors. + + if(wall_power <= 0) + die(FALSE) // If you kill the meteor, then it dies. + return return /obj/effect/meteor/proc/make_debris() diff --git a/code/game/machinery/pointdefense.dm b/code/game/machinery/pointdefense.dm index 51f48c416b..54912ec94d 100644 --- a/code/game/machinery/pointdefense.dm +++ b/code/game/machinery/pointdefense.dm @@ -4,17 +4,29 @@ // GLOBAL_LIST_BOILERPLATE(pointdefense_controllers, /obj/machinery/pointdefense_control) +<<<<<<< HEAD GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/power/pointdefense) +======= +GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/pointdefense) +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting /obj/machinery/pointdefense_control name = "fire assist mainframe" desc = "A specialized computer designed to synchronize a variety of weapon systems and a vessel's astronav data." +<<<<<<< HEAD +======= + description_info = "To connect the mainframe to turrets, use a multitool to set the ident tag to that of the turrets." +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting icon = 'icons/obj/pointdefense.dmi' icon_state = "control" density = TRUE anchored = TRUE circuit = /obj/item/weapon/circuitboard/pointdefense_control var/list/targets = list() // Targets being engaged by associated batteries +<<<<<<< HEAD +======= + var/ui_template = "pointdefense_control.tmpl" +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting var/id_tag = null /obj/machinery/pointdefense_control/Initialize(mapload) @@ -36,6 +48,7 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/power/pointdefense) if(!id_tag) . += "[desc_panel_image("multitool")]to set ident tag" +<<<<<<< HEAD /obj/machinery/pointdefense_control/tgui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) if(!ui) @@ -72,11 +85,59 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/power/pointdefense) /obj/machinery/pointdefense_control/tgui_data(mob/user) var/list/data = list() data["id"] = id_tag +======= +/obj/machinery/pointdefense_control/ui_interact(var/mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + if(ui_template) + var/list/data = build_ui_data() + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, ui_template, name, 400, 600) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + +/obj/machinery/pointdefense_control/attack_hand(mob/user) + if((. = ..())) + return + if(CanUseTopic(user, global.default_state) > STATUS_CLOSE) + ui_interact(user) + return TRUE + +/obj/machinery/pointdefense_control/Topic(var/mob/user, var/href_list) + if((. = ..())) + return + + if(href_list["toggle_active"]) + var/obj/machinery/pointdefense/PD = locate(href_list["toggle_active"]) + if(!istype(PD)) + return TOPIC_NOACTION + + //if(!lan || !lan.is_connected(PD)) + if(PD.id_tag != id_tag) + return TOPIC_NOACTION + + if(!(get_z(PD) in GetConnectedZlevels(get_z(src)))) + to_chat(user, "[PD] is not within control range.") + return TOPIC_NOACTION + + if(!PD.Activate()) //Activate() whilst the device is active will return false. + PD.Deactivate() + return TOPIC_REFRESH + +/obj/machinery/pointdefense_control/proc/build_ui_data() + var/list/data = list() + data["id"] = id_tag + data["name"] = name +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting var/list/turrets = list() if(id_tag) var/list/connected_z_levels = GetConnectedZlevels(get_z(src)) for(var/i = 1 to LAZYLEN(pointdefense_turrets)) +<<<<<<< HEAD var/obj/machinery/power/pointdefense/PD = pointdefense_turrets[i] +======= + var/obj/machinery/pointdefense/PD = pointdefense_turrets[i] +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting if(!(PD.id_tag == id_tag && get_z(PD) in connected_z_levels)) continue var/list/turret = list() @@ -95,7 +156,11 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/power/pointdefense) /obj/machinery/pointdefense_control/attackby(var/obj/item/W, var/mob/user) if(W?.is_multitool()) var/new_ident = input(user, "Enter a new ident tag.", "[src]", id_tag) as null|text +<<<<<<< HEAD if(new_ident && new_ident != id_tag && user.Adjacent(src) && CanInteract(user, GLOB.tgui_physical_state)) +======= + if(new_ident && new_ident != id_tag && user.Adjacent(src) && CanInteract(user, physical_state)) +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting // Check for duplicate controllers with this ID for(var/thing in pointdefense_controllers) var/obj/machinery/pointdefense_control/PC = thing @@ -117,32 +182,52 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/power/pointdefense) // The acutal point defense battery // +<<<<<<< HEAD /obj/machinery/power/pointdefense name = "\improper point defense battery" icon = 'icons/obj/pointdefense.dmi' icon_state = "pointdefense2" desc = "A Kuiper pattern anti-meteor battery. Capable of destroying most threats in a single salvo." description_info = "Must have the same ident tag as a fire assist mainframe on the same facility." +======= +/obj/machinery/pointdefense + name = "\improper point defense battery" + icon = 'icons/obj/pointdefense.dmi' + icon_state = "pointdefense" + desc = "A Kuiper pattern anti-meteor battery. Capable of destroying most threats in a single salvo." + description_info = "Must have the same ident tag as a fire assist mainframe on the same facility. Use a multitool to set the ident tag." +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting density = TRUE anchored = TRUE circuit = /obj/item/weapon/circuitboard/pointdefense idle_power_usage = 0.1 KILOWATTS +<<<<<<< HEAD active_power_usage = 1 KILOWATTS +======= +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting appearance_flags = PIXEL_SCALE var/active = TRUE var/charge_cooldown = 1 SECOND //time between it can fire at different targets var/last_shot = 0 var/kill_range = 18 var/rotation_speed = 0.25 SECONDS //How quickly we turn to face threats +<<<<<<< HEAD var/engaging = FALSE var/id_tag = null /obj/machinery/power/pointdefense/Initialize() +======= + var/weakref/engaging = null // The meteor we're shooting at + var/id_tag = null + +/obj/machinery/pointdefense/Initialize() +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting . = ..() // TODO - Remove this bit once machines are converted to Initialize if(ispath(circuit)) circuit = new circuit(src) default_apply_parts() +<<<<<<< HEAD if(anchored) connect_to_network() update_icon() @@ -156,16 +241,26 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/power/pointdefense) . += "It is connected to a power cable below." /obj/machinery/power/pointdefense/get_description_interaction() +======= + update_icon() + +/obj/machinery/pointdefense/get_description_interaction() +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting . = ..() if(!id_tag) . += "[desc_panel_image("multitool")]to set ident tag and connect to a mainframe." +<<<<<<< HEAD /obj/machinery/power/pointdefense/update_icon() +======= +/obj/machinery/pointdefense/update_icon() +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting if(!active || !id_tag || inoperable()) icon_state = "[initial(icon_state)]_off" else icon_state = initial(icon_state) +<<<<<<< HEAD /obj/machinery/power/pointdefense/default_unfasten_wrench(var/mob/user, var/obj/item/weapon/W, var/time) if((. = ..())) src.transform = null // Reset rotation if we're anchored/unanchored @@ -184,11 +279,15 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/power/pointdefense) /obj/machinery/power/pointdefense/power_change() if(powernet) return // We don't care, we are cable powered anyway +======= +/obj/machinery/pointdefense/power_change() +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting var/old_stat = stat ..() if(old_stat != stat) update_icon() +<<<<<<< HEAD // Decide where to get the power to fire from /obj/machinery/power/pointdefense/use_power_oneoff(var/amount, var/chan = -1) if(powernet) @@ -200,6 +299,10 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/power/pointdefense) // Find controller with the same tag on connected z levels (if any) /obj/machinery/power/pointdefense/proc/get_controller() +======= +// Find controller with the same tag on connected z levels (if any) +/obj/machinery/pointdefense/proc/get_controller() +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting if(!id_tag) return null var/list/connected_z_levels = GetConnectedZlevels(get_z(src)) @@ -208,10 +311,17 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/power/pointdefense) if(PDC.id_tag == id_tag && (get_z(PDC) in connected_z_levels)) return PDC +<<<<<<< HEAD /obj/machinery/power/pointdefense/attackby(var/obj/item/W, var/mob/user) if(W?.is_multitool()) var/new_ident = input(user, "Enter a new ident tag.", "[src]", id_tag) as null|text if(new_ident && new_ident != id_tag && user.Adjacent(src) && CanInteract(user, GLOB.tgui_physical_state)) +======= +/obj/machinery/pointdefense/attackby(var/obj/item/W, var/mob/user) + if(W?.is_multitool()) + var/new_ident = input(user, "Enter a new ident tag.", "[src]", id_tag) as null|text + if(new_ident && new_ident != id_tag && user.Adjacent(src) && CanInteract(user, physical_state)) +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting to_chat(user, "You register [src] with the [new_ident] network.") id_tag = new_ident return @@ -221,22 +331,38 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/power/pointdefense) return if(default_part_replacement(user, W)) return +<<<<<<< HEAD if(default_unfasten_wrench(user, W, 40)) return return ..() //Guns cannot shoot through hull or generally dense turfs. /obj/machinery/power/pointdefense/proc/space_los(meteor) +======= + return ..() + +//Guns cannot shoot through hull or generally dense turfs. +/obj/machinery/pointdefense/proc/space_los(meteor) +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting for(var/turf/T in getline(src,meteor)) if(T.density) return FALSE return TRUE +<<<<<<< HEAD /obj/machinery/power/pointdefense/proc/Shoot(var/weakref/target) var/obj/effect/meteor/M = target.resolve() if(!istype(M)) return engaging = TRUE +======= +/obj/machinery/pointdefense/proc/Shoot(var/weakref/target) + var/obj/effect/meteor/M = target.resolve() + if(!istype(M)) + engaging = null + return + engaging = target +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting var/Angle = round(Get_Angle(src,M)) var/matrix/rot_matrix = matrix() rot_matrix.Turn(Angle) @@ -245,6 +371,7 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/power/pointdefense) set_dir(ATAN2(transform.b, transform.a) > 0 ? NORTH : SOUTH) +<<<<<<< HEAD /obj/machinery/power/pointdefense/proc/finish_shot(var/weakref/target) //Cleanup from list var/obj/machinery/pointdefense_control/PC = get_controller() @@ -252,10 +379,19 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/power/pointdefense) PC.targets -= target engaging = FALSE +======= +/obj/machinery/pointdefense/proc/finish_shot(var/weakref/target) + + var/obj/machinery/pointdefense_control/PC = get_controller() + engaging = null + PC.targets -= target + +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting last_shot = world.time var/obj/effect/meteor/M = target.resolve() if(!istype(M)) return +<<<<<<< HEAD if(use_power_oneoff(active_power_usage) < active_power_usage) var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) @@ -287,12 +423,39 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/power/pointdefense) /obj/machinery/power/pointdefense/proc/find_and_shoot() if(LAZYLEN(GLOB.meteor_list) == 0) return +======= + //We throw a laser but it doesnt have to hit for meteor to explode + var/obj/item/projectile/beam/pointdefense/beam = new(get_turf(src)) + playsound(src, 'sound/weapons/mandalorian.ogg', 75, 1) + use_power_oneoff(idle_power_usage * 10) + beam.launch_projectile(target = M.loc, user = src) + +/obj/machinery/pointdefense/process() + ..() + if(stat & (NOPOWER|BROKEN)) + return + if(!active) + return + var/desiredir = ATAN2(transform.b, transform.a) > 0 ? NORTH : SOUTH + if(dir != desiredir) + set_dir(desiredir) + + if(LAZYLEN(GLOB.meteor_list) > 0) + find_and_shoot() + +/obj/machinery/pointdefense/proc/find_and_shoot() + // There ARE meteors to shoot + if(LAZYLEN(GLOB.meteor_list) == 0) + return + // We can shoot +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting if(engaging || ((world.time - last_shot) < charge_cooldown)) return var/obj/machinery/pointdefense_control/PC = get_controller() if(!istype(PC)) return +<<<<<<< HEAD var/list/connected_z_levels = GetConnectedZlevels(get_z(src)) for(var/obj/effect/meteor/M in GLOB.meteor_list) @@ -319,6 +482,47 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/power/pointdefense) return /obj/machinery/power/pointdefense/RefreshParts() +======= + + // Compile list of known targets + var/list/existing_targets = list() + for(var/weakref/WR in PC.targets) + var/obj/effect/meteor/M = WR.resolve() + existing_targets += M + + // First, try and acquire new targets + var/list/potential_targets = GLOB.meteor_list.Copy() - existing_targets + for(var/obj/effect/meteor/M in potential_targets) + if(targeting_check(M)) + var/weakref/target = weakref(M) + PC.targets += target + engaging = target + Shoot(target) + return + + // Then, focus fire on existing targets + for(var/obj/effect/meteor/M in existing_targets) + if(targeting_check(M)) + var/weakref/target = weakref(M) + engaging = target + Shoot(target) + return + +/obj/machinery/pointdefense/proc/targeting_check(var/obj/effect/meteor/M) + // Target in range + var/list/connected_z_levels = GetConnectedZlevels(get_z(src)) + if(!(M.z in connected_z_levels)) + return FALSE + if(get_dist(M, src) > kill_range) + return FALSE + // If we can shoot it, then shoot + if(emagged || !space_los(M)) + return FALSE + + return TRUE + +/obj/machinery/pointdefense/RefreshParts() +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting . = ..() // Calculates an average rating of components that affect shooting rate var/shootrate_divisor = total_component_rating_of_type(/obj/item/weapon/stock_parts/capacitor) @@ -334,7 +538,11 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/power/pointdefense) var/rotation_divisor = total_component_rating_of_type(/obj/item/weapon/stock_parts/manipulator) rotation_speed = 0.5 SECONDS / (rotation_divisor ? rotation_divisor : 1) +<<<<<<< HEAD /obj/machinery/power/pointdefense/proc/Activate() +======= +/obj/machinery/pointdefense/proc/Activate() +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting if(active) return FALSE @@ -344,7 +552,11 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/power/pointdefense) update_icon() return TRUE +<<<<<<< HEAD /obj/machinery/power/pointdefense/proc/Deactivate() +======= +/obj/machinery/pointdefense/proc/Deactivate() +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting if(!active) return FALSE playsound(src, 'sound/machines/apc_nopower.ogg', 50, 0) @@ -352,6 +564,7 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/power/pointdefense) active = FALSE update_icon() return TRUE +<<<<<<< HEAD // // Projectile Beam Definitions @@ -381,3 +594,5 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/power/pointdefense) /obj/effect/projectile/impact/pointdefense icon = 'icons/obj/projectiles_vr.dmi' icon_state = "impact_pointdef" +======= +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 8e9e6da8f7..259a52797f 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -74,7 +74,6 @@ var/check_anomalies = TRUE //checks if it can shoot at unidentified lifeforms (ie xenos) var/check_synth = FALSE //if active, will shoot at anything not an AI or cyborg var/check_all = FALSE //If active, will fire on anything, including synthetics. - var/fire_at_movement = FALSE // If active, will fire on the most recent thing to move in range, as soon as possible. var/ailock = FALSE // AI cannot use this var/check_down = FALSE //If active, will shoot to kill when lethals are also on var/faction = null //if set, will not fire at people in the same faction for any reason. @@ -96,8 +95,6 @@ var/timeout = 10 // When a turret pops up, then finds nothing to shoot at, this number decrements until 0, when it pops down. var/can_salvage = TRUE // If false, salvaging doesn't give you anything. - var/stay_up = FALSE // If true, the turret will remain open while it is powered. - /obj/machinery/porta_turret/crescent req_one_access = list(access_cent_specops) enabled = FALSE @@ -279,31 +276,6 @@ ) return data -/obj/machinery/porta_turret/pointdefense - name = "point-defense turret" - turret_type = "core" - desc = "A basic ship-mounted rock-breaker." - description_info = "This turret is capable of blasting incoming meteors into gravel, but it is very limited in range." - - installation = /obj/item/weapon/gun/energy/mininglaser - - check_arrest = FALSE - check_records = FALSE - check_weapons = FALSE - check_access = FALSE - check_anomalies = FALSE - check_synth = FALSE - check_all = FALSE - fire_at_movement = TRUE - stay_up = TRUE - ailock = FALSE - check_down = FALSE - -/obj/machinery/porta_turret/pointdefense/orderable - enabled = FALSE - anchored = FALSE - locked = FALSE - /obj/machinery/porta_turret/Initialize() //Sets up a spark system spark_system = new /datum/effect/effect/system/spark_spread @@ -350,8 +322,11 @@ var/obj/item/projectile/P = initial(E.projectile_type) //var/obj/item/ammo_casing/shottype = E.projectile_type +<<<<<<< HEAD //GLOB.moved_event.register_global(src, /obj/machinery/porta_turret/proc/point_defense) //VOREStation Removal +======= +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting projectile = P lethal_projectile = projectile shot_sound = initial(P.fire_sound) @@ -407,14 +382,6 @@ lethal_shot_sound = 'sound/weapons/eluger.ogg' shot_sound = 'sound/weapons/Taser.ogg' - if(/obj/item/weapon/gun/energy/mininglaser) - lethal_icon_color = "green" - lethal_projectile = /obj/item/projectile/beam/mininglaser - lethal_shot_sound = 'sound/weapons/eluger.ogg' - icon_color = "red" - projectile = /obj/item/projectile/beam/weaklaser - shot_sound = 'sound/weapons/Laser.ogg' - /obj/machinery/porta_turret/proc/isLocked(mob/user) if(locked && !issilicon(user)) to_chat(user, "Controls locked.") @@ -444,7 +411,41 @@ tgui_interact(user) /obj/machinery/porta_turret/attack_hand(mob/user) +<<<<<<< HEAD tgui_interact(user) +======= + if(isLocked(user)) + return + + ui_interact(user) + +/obj/machinery/porta_turret/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + var/data[0] + data["access"] = !isLocked(user) + data["locked"] = locked + data["enabled"] = enabled + data["is_lethal"] = 1 + data["lethal"] = lethal + + if(data["access"]) + var/settings[0] + settings[++settings.len] = list("category" = "Neutralize All Non-Synthetics", "setting" = "check_synth", "value" = check_synth) + settings[++settings.len] = list("category" = "Check Weapon Authorization", "setting" = "check_weapons", "value" = check_weapons) + settings[++settings.len] = list("category" = "Check Security Records", "setting" = "check_records", "value" = check_records) + settings[++settings.len] = list("category" = "Check Arrest Status", "setting" = "check_arrest", "value" = check_arrest) + settings[++settings.len] = list("category" = "Check Access Authorization", "setting" = "check_access", "value" = check_access) + settings[++settings.len] = list("category" = "Check misc. Lifeforms", "setting" = "check_anomalies", "value" = check_anomalies) + settings[++settings.len] = list("category" = "Neutralize All Entities", "setting" = "check_all", "value" = check_all) + settings[++settings.len] = list("category" = "Neutralize Downed Entities", "setting" = "check_down", "value" = check_down) + data["settings"] = settings + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if(!ui) + ui = new(user, src, ui_key, "turret_control.tmpl", "Turret Controls", 500, 300) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting /obj/machinery/porta_turret/proc/HasController() var/area/A = get_area(src) @@ -482,6 +483,7 @@ /obj/machinery/porta_turret/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state) if(..()) +<<<<<<< HEAD return TRUE if(isLocked(usr)) return TRUE @@ -511,6 +513,34 @@ check_all = !check_all if("authdown") check_down = !check_down +======= + return 1 + + if(href_list["command"] && href_list["value"]) + var/value = text2num(href_list["value"]) + if(href_list["command"] == "enable") + enabled = value + else if(href_list["command"] == "lethal") + lethal = value + else if(href_list["command"] == "check_synth") + check_synth = value + else if(href_list["command"] == "check_weapons") + check_weapons = value + else if(href_list["command"] == "check_records") + check_records = value + else if(href_list["command"] == "check_arrest") + check_arrest = value + else if(href_list["command"] == "check_access") + check_access = value + else if(href_list["command"] == "check_anomalies") + check_anomalies = value + else if(href_list["command"] == "check_all") + check_all = value + else if(href_list["command"] == "check_down") + check_down = value + + return 1 +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting /obj/machinery/porta_turret/power_change() if(powered()) @@ -712,10 +742,6 @@ popDown() return - if(stay_up) - timeout = 10 - popUp() - var/list/targets = list() //list of primary targets var/list/secondarytargets = list() //targets that are least important @@ -738,7 +764,7 @@ if(!tryToShootAt(targets)) if(!tryToShootAt(secondarytargets)) // if no valid targets, go for secondary targets timeout-- - if(timeout <= 0 && !stay_up) + if(timeout <= 0) spawn() popDown() // no valid targets, close the cover @@ -746,14 +772,6 @@ use_power(20000) health = min(health+1, maxhealth) // 1HP for 20kJ -// We're expecting the first arg to be a target, for this we don't care about previous and next turfs. -/obj/machinery/porta_turret/proc/point_defense(var/atom/movable/Targ) - if((stat & (NOPOWER|BROKEN)) || !fire_at_movement) // Are we even able or supposed to fire at non-moving targets? - return - - if((isliving(Targ) && assess_living(Targ)) || ((istype(Targ, /obj/item) || istype(Targ, /obj/effect/meteor)) && Targ.invisibility < INVISIBILITY_LEVEL_ONE && Targ in view(7,src))) // Is the target a living thing, if so, is it a valid target? Or if it's not living, is it in sight? - target(Targ) // Yes? Blast it. - /obj/machinery/porta_turret/proc/assess_and_assign(var/mob/living/L, var/list/targets, var/list/secondarytargets) switch(assess_living(L)) if(TURRET_PRIORITY_TARGET) @@ -780,10 +798,10 @@ if(L.stat == DEAD && !emagged) //if the perp is dead, no need to bother really return TURRET_NOT_TARGET //move onto next potential victim! - if(get_dist(src, get_turf(L)) > 7) //if it's too far away, why bother? + if(get_dist(src, L) > 7) //if it's too far away, why bother? return TURRET_NOT_TARGET - if(!(L in check_trajectory(get_turf(L), src))) //check if we have true line of sight + if(!(L in check_trajectory(L, src))) //check if we have true line of sight return TURRET_NOT_TARGET if(emagged) // If emagged not even the dead get a rest @@ -890,9 +908,8 @@ last_target = target spawn() popUp() //pop the turret up if it's not already up. - if(dir != get_dir(src, target)) - set_dir(get_dir(src, target)) //even if you can't shoot, follow the target - playsound(src, 'sound/machines/turrets/turret_rotate.ogg', 100, 1) // Play rotating sound + set_dir(get_dir(src, target)) //even if you can't shoot, follow the target + playsound(src, 'sound/machines/turrets/turret_rotate.ogg', 100, 1) // Play rotating sound spawn() shootAt(target) return 1 @@ -956,9 +973,6 @@ var/check_weapons var/check_anomalies var/check_all - var/check_down - var/fire_at_movement - var/stay_up var/ailock /obj/machinery/porta_turret/proc/setState(var/datum/turret_checks/TC) @@ -974,9 +988,6 @@ check_weapons = TC.check_weapons check_anomalies = TC.check_anomalies check_all = TC.check_all - check_down = TC.check_down - fire_at_movement = TC.fire_at_movement - stay_up = TC.stay_up ailock = TC.ailock power_change() diff --git a/code/game/machinery/turret_control.dm b/code/game/machinery/turret_control.dm index 7f5a1d8e56..83a24fbbde 100644 --- a/code/game/machinery/turret_control.dm +++ b/code/game/machinery/turret_control.dm @@ -19,6 +19,7 @@ var/locked = TRUE var/area/control_area //can be area name, path or nothing. +<<<<<<< HEAD var/targetting_is_configurable = TRUE // if false, you cannot change who this turret attacks via its UI var/check_arrest = TRUE //checks if the perp is set to arrest var/check_records = TRUE //checks if a security record exists at all @@ -33,6 +34,16 @@ var/ailock = FALSE //Silicons cannot use this var/syndicate = FALSE +======= + var/check_arrest = 1 //checks if the perp is set to arrest + var/check_records = 1 //checks if a security record exists at all + var/check_weapons = 0 //checks if it can shoot people that have a weapon they aren't authorized to have + var/check_access = 1 //if this is active, the turret shoots everything that does not meet the access requirements + var/check_anomalies = 1 //checks if it can shoot at unidentified lifeforms (ie xenos) + var/check_synth = 0 //if active, will shoot at anything not an AI or cyborg + var/check_all = 0 //If active, will shoot at anything. + var/ailock = 0 //Silicons cannot use this +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting req_access = list(access_ai_upload) @@ -124,8 +135,34 @@ /obj/machinery/turretid/attack_hand(mob/user as mob) tgui_interact(user) +<<<<<<< HEAD /obj/machinery/turretid/tgui_interact(mob/user, datum/tgui/ui = null) ui = SStgui.try_update_ui(user, src, ui) +======= + ui_interact(user) + +/obj/machinery/turretid/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + var/data[0] + data["access"] = !isLocked(user) + data["locked"] = locked + data["enabled"] = enabled + data["is_lethal"] = 1 + data["lethal"] = lethal + + if(data["access"]) + var/settings[0] + settings[++settings.len] = list("category" = "Neutralize All Non-Synthetics", "setting" = "check_synth", "value" = check_synth) + settings[++settings.len] = list("category" = "Check Weapon Authorization", "setting" = "check_weapons", "value" = check_weapons) + settings[++settings.len] = list("category" = "Check Security Records", "setting" = "check_records", "value" = check_records) + settings[++settings.len] = list("category" = "Check Arrest Status", "setting" = "check_arrest", "value" = check_arrest) + settings[++settings.len] = list("category" = "Check Access Authorization", "setting" = "check_access", "value" = check_access) + settings[++settings.len] = list("category" = "Check misc. Lifeforms", "setting" = "check_anomalies", "value" = check_anomalies) + settings[++settings.len] = list("category" = "Neutralize All Entities", "setting" = "check_all", "value" = check_all) + + data["settings"] = settings + + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting if(!ui) ui = new(user, src, "PortableTurret", name) // 500, 400 ui.open() @@ -153,9 +190,34 @@ /obj/machinery/turretid/tgui_act(action, params) if(..()) +<<<<<<< HEAD return if(isLocked(usr)) return +======= + return 1 + + if(href_list["command"] && href_list["value"]) + var/value = text2num(href_list["value"]) + if(href_list["command"] == "enable") + enabled = value + else if(href_list["command"] == "lethal") + lethal = value + else if(href_list["command"] == "check_synth") + check_synth = value + else if(href_list["command"] == "check_weapons") + check_weapons = value + else if(href_list["command"] == "check_records") + check_records = value + else if(href_list["command"] == "check_arrest") + check_arrest = value + else if(href_list["command"] == "check_access") + check_access = value + else if(href_list["command"] == "check_anomalies") + check_anomalies = value + else if(href_list["command"] == "check_all") + check_all = value +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting . = TRUE switch(action) @@ -196,9 +258,6 @@ TC.check_weapons = check_weapons TC.check_anomalies = check_anomalies TC.check_all = check_all - TC.check_down = check_down - TC.stay_up = stay_up - TC.fire_at_movement = fire_at_movement TC.ailock = ailock if(istype(control_area)) diff --git a/code/game/objects/effects/temporary_visuals/projectiles/impact.dm b/code/game/objects/effects/temporary_visuals/projectiles/impact.dm index e48606a2ac..0b7225aab2 100644 --- a/code/game/objects/effects/temporary_visuals/projectiles/impact.dm +++ b/code/game/objects/effects/temporary_visuals/projectiles/impact.dm @@ -80,6 +80,7 @@ light_power = 3 light_color = "#3300ff" +<<<<<<< HEAD //VOREStation edit: medigun /obj/effect/projectile/impact/medigun icon = 'icons/obj/projectiles_vr.dmi' @@ -87,4 +88,8 @@ light_range = 2 light_power = 0.5 light_color = "#80F5FF" -//VOREStation edit ends \ No newline at end of file +//VOREStation edit ends +======= +/obj/effect/projectile/impact/pointdefense + icon_state = "impact_pointdef" +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting diff --git a/code/game/objects/effects/temporary_visuals/projectiles/muzzle.dm b/code/game/objects/effects/temporary_visuals/projectiles/muzzle.dm index a5c70aab2c..5325b63262 100644 --- a/code/game/objects/effects/temporary_visuals/projectiles/muzzle.dm +++ b/code/game/objects/effects/temporary_visuals/projectiles/muzzle.dm @@ -92,6 +92,7 @@ light_power = 3 light_color = "#3300ff" +<<<<<<< HEAD //VOREStation edit: medigun /obj/effect/projectile/muzzle/medigun icon = 'icons/obj/projectiles_vr.dmi' @@ -99,4 +100,8 @@ light_range = 2 light_power = 0.5 light_color = "#80F5FF" -//VOREStation edit ends \ No newline at end of file +//VOREStation edit ends +======= +/obj/effect/projectile/muzzle/pointdefense + icon_state = "muzzle_pointdef" +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting diff --git a/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm b/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm index 4326bc536d..ee55a87b9b 100644 --- a/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm +++ b/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm @@ -121,6 +121,7 @@ light_power = 0.5 light_color = "#f6f2b6" +<<<<<<< HEAD //VOREStation edit: medigun /obj/effect/projectile/tracer/medigun icon = 'icons/obj/projectiles_vr.dmi' @@ -129,3 +130,7 @@ light_power = 0.5 light_color = "#80F5FF" //VOREStation edit ends +======= +/obj/effect/projectile/tracer/pointdefense + icon_state = "beam_pointdef" +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting diff --git a/code/game/objects/items/weapons/circuitboards/machinery/ships.dm b/code/game/objects/items/weapons/circuitboards/machinery/ships.dm index b71e7ce37b..ff5c25c2ec 100644 --- a/code/game/objects/items/weapons/circuitboards/machinery/ships.dm +++ b/code/game/objects/items/weapons/circuitboards/machinery/ships.dm @@ -6,8 +6,13 @@ name = T_BOARD("point defense battery") board_type = new /datum/frame/frame_types/machine desc = "Control systems for a Kuiper pattern point defense battery. Aim away from vessel." +<<<<<<< HEAD build_path = /obj/machinery/power/pointdefense origin_tech = list(TECH_ENGINEERING = 3, TECH_COMBAT = 2, TECH_POWER = 2) +======= + build_path = /obj/machinery/pointdefense + origin_tech = list(TECH_ENGINEERING = 3, TECH_COMBAT = 2) +>>>>>>> 031f8a7... Merge pull request #7919 from Atermonera/point_defense_targeting req_components = list( /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser = 1, /obj/item/weapon/stock_parts/manipulator = 2, diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 1612e1cab3..12f2cf09e6 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -279,3 +279,22 @@ /obj/item/projectile/beam/shock/weak damage = 5 agony = 10 + + +// +// Projectile Beam Definitions +// + +/obj/item/projectile/beam/pointdefense + name = "point defense salvo" + icon_state = "laser" + damage = 15 + damage_type = ELECTROCUTE //You should be safe inside a voidsuit + sharp = FALSE //"Wide" spectrum beam + light_color = COLOR_GOLD + + excavation_amount = 200 // Good at shooting rocks + + muzzle_type = /obj/effect/projectile/muzzle/pointdefense + tracer_type = /obj/effect/projectile/tracer/pointdefense + impact_type = /obj/effect/projectile/impact/pointdefense diff --git a/code/modules/research/designs/circuits/circuits.dm b/code/modules/research/designs/circuits/circuits.dm index d24644ce7b..87b86fe1fe 100644 --- a/code/modules/research/designs/circuits/circuits.dm +++ b/code/modules/research/designs/circuits/circuits.dm @@ -632,6 +632,19 @@ CIRCUITS BELOW build_path = /obj/item/weapon/circuitboard/microwave/advanced sort_string = "HACAA" +/datum/design/circuit/pointdefense + name = "point defense battery" + id = "pointdefense" + req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 3, TECH_COMBAT = 4) + build_path = /obj/item/weapon/circuitboard/pointdefense + sort_string = "OAABA" + +/datum/design/circuit/pointdefense_control + name = "point defense control" + id = "pointdefense_control" + req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_COMBAT = 2) + build_path = /obj/item/weapon/circuitboard/pointdefense_control + sort_string = "OAABB" /datum/design/circuit/shield_generator name = "shield generator" diff --git a/icons/obj/projectiles_impact.dmi b/icons/obj/projectiles_impact.dmi index 9d63ee10fcba812dd853b3b112c371016deec2ea..de1c614b53c74e66404531d1f2dc272636ad26bd 100644 GIT binary patch literal 21889 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 DAvzjB diff --git a/icons/obj/projectiles_muzzle.dmi b/icons/obj/projectiles_muzzle.dmi index 86a8b747d88526c2371885119424ad193106e0eb..254f33e950603bac852fc3a99c1fc7996ddbe6dc 100644 GIT binary patch literal 25109 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%0AK08>Kw~h=Vaz^DJtQ_woRRcT(VP_)G>N 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 IM6N<$f`fHe<^TWy literal 20546 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

{te*F7r+6Ju!(S=Il9uq%QN#?AR=4 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 diff --git a/nano/templates/pointdefense_control.tmpl b/nano/templates/pointdefense_control.tmpl new file mode 100644 index 0000000000..19f85d3dba --- /dev/null +++ b/nano/templates/pointdefense_control.tmpl @@ -0,0 +1,54 @@ +

Fire Assist Mainframe: {{:data.id || "[no tag]"}}

+{{if !(data.id)}} +
+ This system has not been assigned an ident tag. Please contact your system administrator or conduct a manual update with a standard multitool. +
+ {{/if}} +{{for data.turrets}} +

{{:value.id}}

+
+
+ Battery status +
+
+ {{if value.active}} + Online {{:helper.link('Shut down', null, {'toggle_active': value.ref})}} + {{else}} + Offline {{:helper.link('Start up', null, {'toggle_active': value.ref})}} + {{/if}} +
+
+
+
+ Effective range +
+
+ {{:value.effective_range}} +
+
+
+
+ Reaction wheel delay +
+
+ {{:value.reaction_wheel_delay}} +
+
+
+
+ Recharge time +
+
+ {{:value.recharge_time}} +
+{{empty}} +
+
+ Error: +
+
+ No weapon systems detected. Please check network connection. +
+
+
+{{/for}}