Better Icarus Drones (#10047)

Improved Icarus combat drone code across the board, added a non-malfunctioning variant.
    The Icarus now sends combat drones to substantial space wildlife migrations.
    Added an Icarus drone target painter to some admin roles. It is an orbital drop device that will warp two Icarus drones at the targetted location.
    Added examine texts to malfunctioning combat drones that tells you what they're doing.
This commit is contained in:
Geeves
2020-10-06 14:23:48 +03:00
committed by GitHub
parent 8b1cfdd60e
commit d86dcf74f8
19 changed files with 437 additions and 319 deletions
@@ -14,6 +14,7 @@
var/paint_distance = 14 // From how far away can you paint a target?
var/does_explosion = TRUE
var/emagged = FALSE // If emagged, things can be dropped in on station areas
var/drop_message = "Orbital package inbound, clear the targetted area immediately!"
@@ -77,7 +78,8 @@
announcer.autosay(drop_message_emagged, announcer_name, "Common")
has_dropped++
addtimer(CALLBACK(GLOBAL_PROC, /proc/explosion, targloc, 1, 2, 4, 6), 100) //YEEHAW
if(does_explosion)
addtimer(CALLBACK(GLOBAL_PROC, /proc/explosion, targloc, 1, 2, 4, 6), 100) //YEEHAW
addtimer(CALLBACK(src, .proc/orbital_drop, targloc, user), 105)
flick_overlay(I, showto, 20) //2 seconds of the red dot appearing
@@ -86,7 +88,7 @@
/obj/item/device/orbital_dropper/proc/orbital_drop(var/turf/target, var/user)
if(!map)
return
log_and_message_admins("[key_name_admin(src)] has used a [src] at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[target.x];Y=[target.y];Z=[target.z]'>JMP</a>.")
log_and_message_admins("[key_name_admin(user)] has used a [src] at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[target.x];Y=[target.y];Z=[target.z]'>JMP</a>.")
map.load(target, TRUE) //Target must be the center!
@@ -46,3 +46,23 @@
desc_antag = "This is a stealthy variant of the standard armory orbital drop. It will not report itself dropping on common, unless emagged."
announcer_name = "Syndicate Autodrone"
announcer_channel = "Mercenary"
/obj/item/device/orbital_dropper/icarus_drones
name = "icarus painter"
desc = "A device used to paint a target, which will then promptly orbitally drop the requested items. This one has been modified to call in Icarus Drones."
var/num_of_drones = 2
drop_amount = 1
does_explosion = FALSE
emagged = TRUE // to let people drop it in the station
drop_message_emagged = "NanoTrasen combat drones coming your way! Happy hunting!"
announcer_name = "NDV Icarus"
map = null
/obj/item/device/orbital_dropper/icarus_drones/orbital_drop(var/turf/target, var/user)
log_and_message_admins("[key_name_admin(user)] has used a [src] at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[target.x];Y=[target.y];Z=[target.z]'>JMP</a>.")
for(var/i = 1, i <= num_of_drones, i++)
new /mob/living/simple_animal/hostile/icarus_drone(get_random_turf_in_range(target, 4, 2, TRUE))