makes these lasers (#18209)

This commit is contained in:
S34N
2022-07-05 13:41:48 +01:00
committed by GitHub
parent ad608c84e3
commit 52f3323760
5 changed files with 73 additions and 66 deletions
@@ -356,6 +356,10 @@
icon_state = "impact_laser_purple"
duration = 4
/obj/effect/temp_visual/impact_effect/yellow_laser
icon_state = "impact_laser_yellow"
duration = 4
/obj/effect/temp_visual/impact_effect/ion
icon_state = "shieldsparkles"
duration = 6
@@ -316,16 +316,16 @@
..(mimic_type)
/obj/item/ammo_casing/energy/detective
projectile_type = /obj/item/projectile/energy/detective
projectile_type = /obj/item/projectile/beam/laser/detective
fire_sound = 'sound/weapons/gunshots/gunshot_det_energy.ogg'
select_name = "disabler"
/obj/item/ammo_casing/energy/detective/tracker_warrant
projectile_type = /obj/item/projectile/energy/detective/tracker_warrant_shot
projectile_type = /obj/item/projectile/beam/laser/detective/tracker_warrant_shot
e_cost = 50
select_name = "tracker and warrant generator"
/obj/item/ammo_casing/energy/detective/overcharge
projectile_type = /obj/item/projectile/energy/detective/overcharged
projectile_type = /obj/item/projectile/beam/laser/detective/overcharged
e_cost = 200
select_name = "overcharged"
@@ -161,3 +161,69 @@
var/mob/living/L = target
L.visible_message("<span class='danger'>[L] explodes!</span>")
L.gib()
/obj/item/projectile/beam/laser/detective
name = "energy revolver shot"
icon_state = "omnilaser"
light_color = LIGHT_COLOR_CYAN
impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser
damage = 5
stamina = 25
eyeblur = 2 SECONDS
/obj/item/projectile/beam/laser/detective/overcharged
name = "overcharged shot"
icon_state = "spark"
light_color = LIGHT_COLOR_DARKRED
color = LIGHT_COLOR_DARKRED
impact_effect_type = /obj/effect/temp_visual/impact_effect/red_laser
damage = 45
stamina = 15
eyeblur = 4 SECONDS
/obj/item/projectile/beam/laser/detective/tracker_warrant_shot
name = "tracker shot"
icon_state = "yellow_laser"
light_color = LIGHT_COLOR_YELLOW
impact_effect_type = /obj/effect/temp_visual/impact_effect/yellow_laser
stamina = 0
reflectability = REFLECTABILITY_PHYSICAL //No mr cult juggernaught, please don't set me to search!
/obj/item/projectile/beam/laser/detective/tracker_warrant_shot/on_hit(atom/target)
. = ..()
if(!ishuman(target))
no_worky(target)
return
start_tracking(target)
set_warrant(target)
/obj/item/projectile/beam/laser/detective/tracker_warrant_shot/proc/start_tracking(atom/target)
var/obj/item/gun/energy/detective/D = firer_source_atom
if(!D)
no_worky(target)
return
if(D.tracking_target_UID)
no_worky(tracking_already = TRUE)
return
D.start_pointing(target.UID())
/obj/item/projectile/beam/laser/detective/tracker_warrant_shot/proc/set_warrant(atom/target)
var/mob/living/carbon/human/target_to_mark = target
var/perpname = target_to_mark.get_visible_name(TRUE)
if(!perpname || perpname == "Unknown")
no_worky(target, warrant_fail = TRUE)
return
var/datum/data/record/R = find_record("name", perpname, GLOB.data_core.security)
if(!R || (R.fields["criminal"] in list(SEC_RECORD_STATUS_EXECUTE, SEC_RECORD_STATUS_ARREST)))
no_worky(target, warrant_fail = TRUE)
return
set_criminal_status(firer, R, SEC_RECORD_STATUS_SEARCH, "Target tagged by Detective Revolver", "Detective Revolver")
/obj/item/projectile/beam/laser/detective/tracker_warrant_shot/proc/no_worky(atom/target, tracking_already, warrant_fail)
if(tracking_already)
to_chat(firer, "<span class='danger'>Weapon Alert: You are already tracking a target!</span>")
return
if(warrant_fail)
to_chat(firer, "<span class='danger'>Weapon Alert: unable to generate warrant on [target]!</span>")
return
to_chat(firer, "<span class='danger'>Weapon Alert: unable to track [target]!</span>")
@@ -147,66 +147,3 @@
armour_penetration = 10 // It can have a little armor pen, as a treat. Bigger than it looks, energy armor is often low.
shield_buster = TRUE
reflectability = REFLECTABILITY_PHYSICAL //I will let eswords block it like a normal projectile, but it's not getting reflected, and eshields will take the hit hard. Carp still can reflect though, screw you.
/obj/item/projectile/energy/detective
name = "energy revolver shot"
icon_state = "omnilaser"
light_color = LIGHT_COLOR_CYAN
damage = 5
stamina = 25
eyeblur = 2 SECONDS
/obj/item/projectile/energy/detective/overcharged
name = "overcharged shot"
icon_state = "spark"
light_color = LIGHT_COLOR_DARKRED
color = LIGHT_COLOR_DARKRED
damage = 45
stamina = 15
eyeblur = 4 SECONDS
/obj/item/projectile/energy/detective/tracker_warrant_shot
name = "tracker shot"
icon_state = "yellow_laser"
light_color = LIGHT_COLOR_YELLOW
stamina = 0
reflectability = REFLECTABILITY_PHYSICAL //No mr cult juggernaught, please don't set me to search!
/obj/item/projectile/energy/detective/tracker_warrant_shot/on_hit(atom/target)
. = ..()
if(!ishuman(target))
no_worky(target)
return
start_tracking(target)
set_warrant(target)
/obj/item/projectile/energy/detective/tracker_warrant_shot/proc/start_tracking(atom/target)
var/obj/item/gun/energy/detective/D = firer_source_atom
if(!D)
no_worky(target)
return
if(D.tracking_target_UID)
no_worky(tracking_already = TRUE)
return
D.start_pointing(target.UID())
/obj/item/projectile/energy/detective/tracker_warrant_shot/proc/set_warrant(atom/target)
var/mob/living/carbon/human/target_to_mark = target
var/perpname = target_to_mark.get_visible_name(TRUE)
if(!perpname || perpname == "Unknown")
no_worky(target, warrant_fail = TRUE)
return
var/datum/data/record/R = find_record("name", perpname, GLOB.data_core.security)
if(!R || (R.fields["criminal"] in list(SEC_RECORD_STATUS_EXECUTE, SEC_RECORD_STATUS_ARREST)))
no_worky(target, warrant_fail = TRUE)
return
set_criminal_status(firer, R, SEC_RECORD_STATUS_SEARCH, "Target tagged by Detective Revolver", "Detective Revolver")
/obj/item/projectile/energy/detective/tracker_warrant_shot/proc/no_worky(atom/target, tracking_already, warrant_fail)
if(tracking_already)
to_chat(firer, "<span class='danger'>Weapon Alert: You are already tracking a target!</span>")
return
if(warrant_fail)
to_chat(firer, "<span class='danger'>Weapon Alert: unable to generate warrant on [target]!</span>")
return
to_chat(firer, "<span class='danger'>Weapon Alert: unable to track [target]!</span>")
Binary file not shown.

Before

Width:  |  Height:  |  Size: 379 KiB

After

Width:  |  Height:  |  Size: 373 KiB