diff --git a/nsv13.dme b/nsv13.dme index fa0b30da307..f0a3513fc95 100644 --- a/nsv13.dme +++ b/nsv13.dme @@ -4084,6 +4084,7 @@ #include "nsv13\code\modules\overmap\weapons\delta_overmap_ship_weapons\physical.dm" #include "nsv13\code\modules\overmap\weapons\delta_overmap_ship_weapons\selection.dm" #include "nsv13\code\modules\overmap\weapons\delta_overmap_ship_weapons\new_weapon_types\weapon_datum_types.dm" +#include "nsv13\code\modules\overmap_pointed\overmap_pointed.dm" #include "nsv13\code\modules\paperwork\stamps.dm" #include "nsv13\code\modules\pixelshifting\pixelshifting.dm" #include "nsv13\code\modules\power\gravitygenerator_modular.dm" diff --git a/nsv13/code/modules/overmap_pointed/overmap_pointed.dm b/nsv13/code/modules/overmap_pointed/overmap_pointed.dm new file mode 100644 index 00000000000..59b102d8066 --- /dev/null +++ b/nsv13/code/modules/overmap_pointed/overmap_pointed.dm @@ -0,0 +1,40 @@ +// heads can mark overmap targets (by chichmuch) + +/obj/effect/temp_visual/overmap_order + icon = 'icons/effects/aiming.dmi' + icon_state = "perp_alert" + duration = 3 SECONDS + layer = ABOVE_MOB_LAYER + + +/mob/living/carbon/human/pointed(atom/A as mob|obj|turf in view()) + if(!SSmapping.level_trait(A.z, ZTRAIT_OVERMAP)) + return ..() + + if(!src || !isturf(src.loc)) + return FALSE + + var/turf/tile = get_turf(A) + if (!tile) + return FALSE + + var/obj/item/card/id/I = get_idcard(TRUE) + if(!I) + return FALSE + var/list/access = I.GetAccess() + + if(!(ACCESS_HEADS in access)) + return FALSE + + if(istype(A, /obj/structure/overmap) && !A.filter_data) + A.add_filter("target_outline", 1, list(type="outline", size=2, color=rgb(255, 51, 51, A.alpha))) + addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/structure/overmap, remove_target_outline)), 15 SECONDS) + else + new /obj/effect/temp_visual/overmap_order(tile, invisibility) + + SEND_SIGNAL(src, COMSIG_MOB_POINTED, A) + return TRUE + + +/obj/structure/overmap/proc/remove_target_outline() + remove_filter("target_outline")