Skip to content

Commit c2b3b1a

Browse files
authored
Merge pull request ParadiseSS13#7682 from Fox-McCloud/radio-jammer
Adds Radio Jammers
2 parents 9c11b1c + 8e9eae8 commit c2b3b1a

File tree

8 files changed

+47
-5
lines changed

8 files changed

+47
-5
lines changed

code/_globalvars/lists/objects.dm

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,4 @@ var/global/list/global_radios = list() //list of all radios, across all z-lev
4242

4343
var/global/list/meteor_list = list() //list of all meteors
4444
var/global/list/poi_list = list() //list of points of interest for observe/follow
45-
45+
var/global/list/active_jammers = list() // List of active radio jammers

code/datums/uplink_item.dm

+7
Original file line numberDiff line numberDiff line change
@@ -1124,6 +1124,13 @@ var/list/uplink_items = list()
11241124
cost = 1
11251125
surplus = 0
11261126

1127+
/datum/uplink_item/device_tools/jammer
1128+
name = "Radio Jammer"
1129+
desc = "This device will disrupt any nearby outgoing radio communication when activated."
1130+
reference = "RJ"
1131+
item = /obj/item/device/jammer
1132+
cost = 5
1133+
11271134
/datum/uplink_item/device_tools/teleporter
11281135
name = "Teleporter Circuit Board"
11291136
desc = "A printed circuit board that completes the teleporter onboard the mothership. Advise you test fire the teleporter before entering it, as malfunctions can occur."

code/game/objects/items/devices/radio/radio.dm

+16
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,13 @@ var/global/list/default_medbay_channels = list(
247247
A.name = from
248248
A.role = role
249249
A.message = message
250+
var/jammed = FALSE
251+
for(var/obj/item/device/jammer/jammer in active_jammers)
252+
if(get_dist(get_turf(src), get_turf(jammer)) < jammer.range)
253+
jammed = TRUE
254+
break
255+
if(jammed)
256+
message = Gibberish(message, 100)
250257
Broadcast_Message(connection, A,
251258
0, "*garbled automated announcement*", src,
252259
message, from, "Automated Announcement", from, "synthesized voice",
@@ -332,6 +339,12 @@ var/global/list/default_medbay_channels = list(
332339
var/datum/radio_frequency/connection = message_mode
333340
var/turf/position = get_turf(src)
334341

342+
var/jammed = FALSE
343+
for(var/obj/item/device/jammer/jammer in active_jammers)
344+
if(get_dist(position, get_turf(jammer)) < jammer.range)
345+
jammed = TRUE
346+
break
347+
335348
//#### Tagging the signal with all appropriate identity values ####//
336349

337350
// ||-- The mob's name identity --||
@@ -345,6 +358,9 @@ var/global/list/default_medbay_channels = list(
345358

346359
var/jobname // the mob's "job"
347360

361+
if(jammed)
362+
message = Gibberish(message, 100)
363+
348364
// --- Human: use their actual job ---
349365
if(ishuman(M))
350366
var/mob/living/carbon/human/H = M

code/game/objects/items/devices/traitordevices.dm

+19
Original file line numberDiff line numberDiff line change
@@ -146,3 +146,22 @@ effective or pretty fucking useless.
146146
attack_self(usr)
147147
add_fingerprint(usr)
148148
return
149+
150+
/obj/item/device/jammer
151+
name = "radio jammer"
152+
desc = "Device used to disrupt nearby radio communication."
153+
icon_state = "jammer"
154+
var/active = FALSE
155+
var/range = 12
156+
157+
/obj/item/device/jammer/Destroy()
158+
active_jammers -= src
159+
return ..()
160+
161+
/obj/item/device/jammer/attack_self(mob/user)
162+
to_chat(user,"<span class='notice'>You [active ? "deactivate" : "activate"] the [src].</span>")
163+
active = !active
164+
if(active)
165+
active_jammers |= src
166+
else
167+
active_jammers -= src

code/game/objects/items/weapons/implants/implant_death_alarm.dm

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
var/mob/M = imp_in
3636
var/area/t = get_area(M)
3737

38-
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(null)
38+
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(src)
3939
a.follow_target = M
4040

4141
switch(cause)
@@ -52,7 +52,7 @@
5252
else
5353
a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm")
5454
qdel(src)
55-
55+
5656
qdel(a)
5757

5858
/obj/item/weapon/implant/death_alarm/emp_act(severity) //for some reason alarms stop going off in case they are emp'd, even without this

code/modules/clothing/under/accessories/accessory.dm

+1-1
Original file line numberDiff line numberDiff line change
@@ -620,7 +620,7 @@
620620
return
621621

622622
var/area/t = get_area(M)
623-
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(null)
623+
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(src)
624624
if(istype(t, /area/syndicate_station) || istype(t, /area/syndicate_mothership) || istype(t, /area/shuttle/syndicate_elite) )
625625
//give the syndicats a bit of stealth
626626
a.autosay("[M] has been vandalized in Space!", "[M]'s Death Alarm")

code/modules/mob/mob_helpers.dm

+1-1
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ proc/slur(phrase, var/list/slurletters = ("'"))//use a different list as an inpu
242242
return sanitize(copytext(t,1,MAX_MESSAGE_LEN))
243243

244244

245-
proc/Gibberish(t, p)//t is the inputted message, and any value higher than 70 for p will cause letters to be replaced instead of added
245+
/proc/Gibberish(t, p)//t is the inputted message, and any value higher than 70 for p will cause letters to be replaced instead of added
246246
/* Turn text into complete gibberish! */
247247
var/returntext = ""
248248
for(var/i = 1, i <= length(t), i++)

icons/obj/device.dmi

378 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)