Merge pull request #3565 from Neerti/7/6/2017_jammers

Adds Radio Jammers to Traitor Uplink
This commit is contained in:
Anewbe
2017-07-09 16:15:42 -05:00
committed by GitHub
3 changed files with 34 additions and 3 deletions

View File

@@ -74,6 +74,13 @@
watched, by changing color and beeping. It is able to detect both AI visual surveillance and security camera utilization from terminals, and \ watched, by changing color and beeping. It is able to detect both AI visual surveillance and security camera utilization from terminals, and \
will give different warnings by beeping and changing colors based on what it detects. Only the holder can hear the warnings." will give different warnings by beeping and changing colors based on what it detects. Only the holder can hear the warnings."
/datum/uplink_item/item/tools/radio_jammer
name = "Subspace Jammer"
item_cost = 25
path = /obj/item/device/radio_jammer
desc = "A device which is capable of disrupting subspace communications, preventing the use of headsets, PDAs, and communicators within \
a radius of seven meters. It runs off weapon cells, which can be replaced as needed. One cell will last for approximately a minute."
/datum/uplink_item/item/tools/emag /datum/uplink_item/item/tools/emag
name = "Cryptographic Sequencer" name = "Cryptographic Sequencer"
item_cost = 30 item_cost = 30

View File

@@ -19,16 +19,18 @@ var/global/list/active_radio_jammers = list()
icon = 'icons/obj/device.dmi' icon = 'icons/obj/device.dmi'
icon_state = "jammer0" icon_state = "jammer0"
var/active_state = "jammer1" var/active_state = "jammer1"
var/last_overlay_percent = null // Stores overlay icon_state to avoid excessive recreation of overlays.
var/on = 0 var/on = 0
var/jam_range = 7 var/jam_range = 7
var/obj/item/weapon/cell/device/weapon/power_source var/obj/item/weapon/cell/device/weapon/power_source
var/tick_cost = 80 var/tick_cost = 80 // Will last for roughly one minute, as process() ticks every 2 seconds.
origin_tech = list(TECH_ILLEGAL = 7, TECH_BLUESPACE = 5) //Such technology! Subspace jamming! origin_tech = list(TECH_ILLEGAL = 7, TECH_BLUESPACE = 5) //Such technology! Subspace jamming!
/obj/item/device/radio_jammer/New() /obj/item/device/radio_jammer/New()
power_source = new(src) power_source = new(src)
update_icon() // So it starts with the full overlay.
/obj/item/device/radio_jammer/Destroy() /obj/item/device/radio_jammer/Destroy()
if(on) if(on)
@@ -42,7 +44,7 @@ var/global/list/active_radio_jammers = list()
processing_objects.Remove(src) processing_objects.Remove(src)
active_radio_jammers -= src active_radio_jammers -= src
on = FALSE on = FALSE
icon_state = initial(icon_state) update_icon()
/obj/item/device/radio_jammer/proc/turn_on(mob/user) /obj/item/device/radio_jammer/proc/turn_on(mob/user)
if(user) if(user)
@@ -50,7 +52,7 @@ var/global/list/active_radio_jammers = list()
processing_objects.Add(src) processing_objects.Add(src)
active_radio_jammers += src active_radio_jammers += src
on = TRUE on = TRUE
icon_state = active_state update_icon()
/obj/item/device/radio_jammer/process() /obj/item/device/radio_jammer/process()
if(!power_source || !power_source.check_charge(tick_cost)) if(!power_source || !power_source.check_charge(tick_cost))
@@ -60,6 +62,7 @@ var/global/list/active_radio_jammers = list()
turn_off(notify) turn_off(notify)
else else
power_source.use(tick_cost) power_source.use(tick_cost)
update_icon()
/obj/item/device/radio_jammer/attack_hand(mob/user) /obj/item/device/radio_jammer/attack_hand(mob/user)
@@ -86,4 +89,25 @@ var/global/list/active_radio_jammers = list()
power_source.update_icon() //Why doesn't a cell do this already? :| power_source.update_icon() //Why doesn't a cell do this already? :|
user.unEquip(power_source) user.unEquip(power_source)
power_source.forceMove(src) power_source.forceMove(src)
update_icon()
to_chat(user,"<span class='notice'>You insert \the [power_source] into \the [src].</span>") to_chat(user,"<span class='notice'>You insert \the [power_source] into \the [src].</span>")
/obj/item/device/radio_jammer/update_icon()
if(on)
icon_state = active_state
else
icon_state = initial(icon_state)
var/overlay_percent = 0
if(power_source)
overlay_percent = between(0, round( power_source.percent() , 25), 100)
else
overlay_percent = 0
// Only Cut() if we need to.
if(overlay_percent != last_overlay_percent)
overlays.Cut()
var/image/I = image(src.icon, src, "jammer_overlay_[overlay_percent]")
overlays += I
last_overlay_percent = overlay_percent

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 61 KiB