mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 03:27:05 +01:00
Migrate pinpointers to the new attack chain. (#32331)
* Migrate pinpointers to the new attack chain. * Migrate contractor pinpointer as well. * Add the coveted trailing newline. Signed-off-by: Alan <alfalfascout@users.noreply.github.com> * Apply suggestions from CRUNCH review. Co-authored-by: CRUNCH <143041327+CRUNCH-Borg@users.noreply.github.com> Signed-off-by: Alan <alfalfascout@users.noreply.github.com> * Unscramble GitHub shenanigans. --------- Signed-off-by: Alan <alfalfascout@users.noreply.github.com> Co-authored-by: CRUNCH <143041327+CRUNCH-Borg@users.noreply.github.com>
This commit is contained in:
@@ -26,18 +26,24 @@
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
||||
var/obj/item/disk/nuclear/the_disk = null
|
||||
var/obj/machinery/nuclearbomb/the_bomb = null
|
||||
var/obj/machinery/nuclearbomb/syndicate/the_s_bomb = null // used by syndicate pinpointers.
|
||||
var/cur_index = 1 // Which index the current mode is
|
||||
var/mode = MODE_OFF // On which mode the pointer is at
|
||||
var/modes = list(MODE_DISK, MODE_NUKE) // Which modes are there
|
||||
// Used by syndicate pinpointers.
|
||||
var/obj/machinery/nuclearbomb/syndicate/the_s_bomb = null
|
||||
// Which index the current mode is.
|
||||
var/cur_index = 1
|
||||
// On which mode the pointer is at.
|
||||
var/mode = MODE_OFF
|
||||
// Which modes are there
|
||||
var/modes = list(MODE_DISK, MODE_NUKE)
|
||||
var/shows_nuke_timer = TRUE
|
||||
var/syndicate = FALSE // Indicates pointer is syndicate, and points to the syndicate nuke.
|
||||
// Indicates pointer is syndicate, and points to the syndicate nuke.
|
||||
var/syndicate = FALSE
|
||||
var/icon_off = "pinoff"
|
||||
var/icon_null = "pinonnull"
|
||||
var/icon_direct = "pinondirect"
|
||||
var/icon_close = "pinonclose"
|
||||
var/icon_medium = "pinonmedium"
|
||||
var/icon_far = "pinonfar"
|
||||
new_attack_chain = TRUE
|
||||
|
||||
/obj/item/pinpointer/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -56,10 +62,16 @@
|
||||
else if(mode == MODE_NUKE)
|
||||
workbomb()
|
||||
|
||||
/obj/item/pinpointer/attack_self__legacy__attackchain(mob/user)
|
||||
/obj/item/pinpointer/activate_self(mob/user)
|
||||
if(..())
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
if(mode == PINPOINTER_MODE_DET)
|
||||
return
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
cycle(user)
|
||||
add_fingerprint(user)
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
/obj/item/pinpointer/proc/cycle(mob/user)
|
||||
if(cur_index > length(modes))
|
||||
@@ -92,7 +104,7 @@
|
||||
if(MODE_TENDRIL)
|
||||
return "High energy scanner active"
|
||||
|
||||
/obj/item/pinpointer/proc/activate_mode(mode, mob/user) //for crew pinpointer
|
||||
/obj/item/pinpointer/proc/activate_mode(mode, mob/user) // For crew pinpointer.
|
||||
return
|
||||
|
||||
/obj/item/pinpointer/proc/scandisk()
|
||||
@@ -150,14 +162,17 @@
|
||||
|
||||
/obj/item/pinpointer/advpinpointer
|
||||
name = "advanced pinpointer"
|
||||
desc = "A larger version of the normal pinpointer, this unit features a helpful quantum entanglement detection system to locate various objects that do not broadcast a locator signal. \n \
|
||||
<span class='notice'>Alt-click to toggle mode.</span>"
|
||||
desc = "A larger version of the normal pinpointer, this unit features a helpful quantum entanglement detection system to locate various objects that do not broadcast a locator signal."
|
||||
modes = list(MODE_ADV)
|
||||
var/modelocked = FALSE // If true, user cannot change mode.
|
||||
var/turf/location = null
|
||||
var/obj/target = null
|
||||
var/setting = 0
|
||||
|
||||
/obj/item/pinpointer/advpinpointer/examine(mob/user)
|
||||
. = ..()
|
||||
. += SPAN_NOTICE("<b>Alt-click</b> to toggle mode.")
|
||||
|
||||
/obj/item/pinpointer/advpinpointer/process()
|
||||
switch(setting)
|
||||
if(SETTING_DISK)
|
||||
@@ -167,7 +182,7 @@
|
||||
if(SETTING_OBJECT)
|
||||
point_at_target(target)
|
||||
|
||||
/obj/item/pinpointer/advpinpointer/workdisk() //since mode works diffrently for advpinpointer
|
||||
/obj/item/pinpointer/advpinpointer/workdisk() // Since mode works differently for advpinpointer.
|
||||
scandisk()
|
||||
point_at_target(the_disk)
|
||||
|
||||
@@ -289,22 +304,22 @@
|
||||
worklocation()
|
||||
|
||||
/obj/item/pinpointer/nukeop/workdisk()
|
||||
if(GLOB.bomb_set) //If the bomb is set, lead to the shuttle
|
||||
mode = MODE_SHIP //Ensures worklocation() continues to work
|
||||
if(GLOB.bomb_set) // If the bomb is set, lead to the shuttle.
|
||||
mode = MODE_SHIP // Ensures `worklocation()` continues to work.
|
||||
modes = list(MODE_SHIP)
|
||||
playsound(loc, 'sound/machines/twobeep.ogg', 50, 1) //Plays a beep
|
||||
visible_message("Shuttle Locator mode actived.") //Lets the mob holding it know that the mode has changed
|
||||
return //Get outta here
|
||||
playsound(loc, 'sound/machines/twobeep.ogg', 50, 1) // Plays a beep.
|
||||
visible_message("Shuttle Locator mode actived.") // Lets the mob holding it know that the mode has changed.
|
||||
return // Get outta here.
|
||||
scandisk()
|
||||
point_at_target(the_disk)
|
||||
|
||||
/obj/item/pinpointer/nukeop/workbomb()
|
||||
if(GLOB.bomb_set) //If the bomb is set, lead to the shuttle
|
||||
mode = MODE_SHIP //Ensures worklocation() continues to work
|
||||
if(GLOB.bomb_set) // If the bomb is set, lead to the shuttle.
|
||||
mode = MODE_SHIP // Ensures `worklocation()` continues to work.
|
||||
modes = list(MODE_SHIP)
|
||||
playsound(loc, 'sound/machines/twobeep.ogg', 50, 1) //Plays a beep
|
||||
visible_message("Shuttle Locator mode actived.") //Lets the mob holding it know that the mode has changed
|
||||
return //Get outta here
|
||||
playsound(loc, 'sound/machines/twobeep.ogg', 50, 1) // Plays a beep.
|
||||
visible_message("Shuttle Locator mode actived.") // Lets the mob holding it know that the mode has changed.
|
||||
return // Get outta here.
|
||||
scanbomb()
|
||||
point_at_target(the_s_bomb)
|
||||
|
||||
@@ -320,7 +335,7 @@
|
||||
if(!home)
|
||||
icon_state = icon_null
|
||||
return
|
||||
if(loc.z != home.z) //If you are on a different z-level from the shuttle
|
||||
if(loc.z != home.z) // If you are on a different z-level from the shuttle.
|
||||
icon_state = icon_null
|
||||
else
|
||||
point_at_target(home)
|
||||
@@ -340,7 +355,7 @@
|
||||
/obj/item/pinpointer/operative/proc/scan_for_ops()
|
||||
if(mode != MODE_OPERATIVE)
|
||||
return
|
||||
nearest_op = null //Resets nearest_op every time it scans
|
||||
nearest_op = null // Resets `nearest_op` every time it scans.
|
||||
|
||||
var/closest_distance = 1000
|
||||
for(var/datum/mind/Mind in SSticker.mode.syndicates)
|
||||
@@ -391,15 +406,18 @@
|
||||
icon_medium = "pinonmedium_crew"
|
||||
icon_far = "pinonfar_crew"
|
||||
modes = list(MODE_CREW)
|
||||
var/target = null //for targeting in processing
|
||||
var/target_set = FALSE //have we set a target at any point?
|
||||
///Var to track the linked detective gun
|
||||
// For targeting in processing.
|
||||
var/target = null
|
||||
// Have we set a target at any point?
|
||||
var/target_set = FALSE
|
||||
/// Var to track the linked detective gun.
|
||||
var/linked_gun_UID
|
||||
|
||||
/obj/item/pinpointer/crew/attackby__legacy__attackchain(obj/item/I, mob/living/user)
|
||||
/obj/item/pinpointer/crew/item_interaction(mob/user, obj/item/used, list/modifiers)
|
||||
. = ..()
|
||||
if(istype(I, /obj/item/gun/energy/detective))
|
||||
link_gun(I.UID())
|
||||
if(istype(used, /obj/item/gun/energy/detective))
|
||||
link_gun(used.UID())
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
/obj/item/pinpointer/crew/emp_act(severity)
|
||||
var/obj/item/gun/energy/detective/D = locateUID(linked_gun_UID)
|
||||
@@ -539,7 +557,7 @@
|
||||
/obj/item/pinpointer/tendril/proc/scan_for_tendrils()
|
||||
var/turf/our_turf = get_turf(src)
|
||||
if(mode == MODE_TENDRIL)
|
||||
target = null //Resets nearest_op every time it scans
|
||||
target = null // Resets nearest_op every time it scans.
|
||||
var/closest_distance = 1000
|
||||
for(var/obj/structure/spawner/lavaland/T in GLOB.tendrils)
|
||||
if(T.z != our_turf.z)
|
||||
|
||||
@@ -37,12 +37,15 @@
|
||||
var/turf/there = get_turf(H)
|
||||
return here && there && there.z == here.z
|
||||
|
||||
/obj/item/pinpointer/crew/contractor/attack_self__legacy__attackchain(mob/living/user)
|
||||
if(owner)
|
||||
if(owner != user.mind.current)
|
||||
to_chat(user, SPAN_WARNING("[src] refuses to do anything."))
|
||||
return
|
||||
else
|
||||
/obj/item/pinpointer/crew/contractor/activate_self(mob/living/user)
|
||||
if(!owner)
|
||||
owner = user.mind.current
|
||||
to_chat(user, SPAN_NOTICE("[src] now recognizes you as its sole user."))
|
||||
add_fingerprint(user)
|
||||
return ..()
|
||||
|
||||
if(owner != user.mind.current)
|
||||
to_chat(user, SPAN_WARNING("[src] refuses to do anything!"))
|
||||
return ITEM_INTERACT_COMPLETE
|
||||
|
||||
return ..()
|
||||
|
||||
Reference in New Issue
Block a user