Adds Radio Jammers to Traitor Uplink

Subspace Jammers can be bought in the traitor uplink for 25 TC.  They are already in the code, but this PR adds them to the uplink.

This PR also adds a power meter to the sprite, as a small QoL change.

They run off of weapon cells and one cell will last for about a minute.
This commit is contained in:
Neerti
2017-07-06 21:20:10 -04:00
parent bbfb6f01fe
commit bc40a45cc4
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 \
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
name = "Cryptographic Sequencer"
item_cost = 30

View File

@@ -19,16 +19,18 @@ var/global/list/active_radio_jammers = list()
icon = 'icons/obj/device.dmi'
icon_state = "jammer0"
var/active_state = "jammer1"
var/last_overlay_percent = null // Stores overlay icon_state to avoid excessive recreation of overlays.
var/on = 0
var/jam_range = 7
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!
/obj/item/device/radio_jammer/New()
power_source = new(src)
update_icon() // So it starts with the full overlay.
/obj/item/device/radio_jammer/Destroy()
if(on)
@@ -42,7 +44,7 @@ var/global/list/active_radio_jammers = list()
processing_objects.Remove(src)
active_radio_jammers -= src
on = FALSE
icon_state = initial(icon_state)
update_icon()
/obj/item/device/radio_jammer/proc/turn_on(mob/user)
if(user)
@@ -50,7 +52,7 @@ var/global/list/active_radio_jammers = list()
processing_objects.Add(src)
active_radio_jammers += src
on = TRUE
icon_state = active_state
update_icon()
/obj/item/device/radio_jammer/process()
if(!power_source || !power_source.check_charge(tick_cost))
@@ -60,6 +62,7 @@ var/global/list/active_radio_jammers = list()
turn_off(notify)
else
power_source.use(tick_cost)
update_icon()
/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? :|
user.unEquip(power_source)
power_source.forceMove(src)
update_icon()
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