Headsets are now modular, and come with encryption keys that correspond to secure channels. Currently, encryption keys are based around previous groupings (HoS encrpytion key, Captain encrpytion key). Consideration was made to giving an encrpytion key for each channel (Security encryption key, Command encryption key), and might be switched to that.

Turns the binary translator into an encryption key and makes it actually work properly. 

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3189 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
VivianFoxfoot@gmail.com
2012-02-25 02:28:17 +00:00
parent 7fcfab5747
commit 06b4c17d97
7 changed files with 248 additions and 32 deletions

View File

@@ -205,7 +205,7 @@
if("botchat")
if (uses >= 3)
uses -= 3
new /obj/item/device/radio/headset/binary(get_turf(hostpda))
new /obj/item/device/radio/headset/encryptionkey/binary(get_turf(hostpda))
feedback_add_details("traitor_uplink_items_bought","BT")
if("singubeacon")
if(uses >= 7)

View File

@@ -0,0 +1,98 @@
/obj/item/device/radio/headset/encryptionkey/
name = "Standard Encrpytion Key"
desc = "An encyption key for a radio headset. Has no special codes in it. WHY DOES IT EXIST? ASK NANOTRASEN."
icon_state = "cypherkey"
item_state = ""
/obj/item/device/radio/headset/encryptionkey/New()
/obj/item/device/radio/headset/attackby(obj/item/weapon/W as obj, mob/user as mob)
/obj/item/device/radio/headset/encryptionkey/traitor
channels = list("Syndicate" = 1)
origin_tech = "syndicate=3"
/obj/item/device/radio/headset/encryptionkey/binary
translate_binary = 1
origin_tech = "syndicate=3"
/obj/item/device/radio/headset/encryptionkey/headset_sec
name = "Security Radio Encryption Key"
desc = "An encyption key for a radio headset. Contains cypherkeys."
channels = list("Security" = 1)
/obj/item/device/radio/headset/encryptionkey/headset_eng
name = "Engineering Radio Encryption Key"
desc = "An encyption key for a radio headset. Contains cypherkeys."
channels = list("Engineering" = 1)
/obj/item/device/radio/headset/encryptionkey/headset_rob
name = "Robotics Radio Encryption Key"
desc = "An encyption key for a radio headset. Contains cypherkeys."
channels = list("Engineering" = 1, "Science" = 1)
/obj/item/device/radio/headset/encryptionkey/headset_med
name = "Medical Radio Encryption Key"
desc = "An encyption key for a radio headset. Contains cypherkeys."
channels = list("Medical" = 1)
/obj/item/device/radio/headset/encryptionkey/headset_sci
name = "Science Radio Encryption Key"
desc = "An encyption key for a radio headset. Contains cypherkeys."
channels = list("Science" = 1)
/obj/item/device/radio/headset/encryptionkey/headset_medsci
name = "Medical Research Radio Encryption Key"
desc = "An encyption key for a radio headset. Contains cypherkeys."
channels = list("Medical" = 1, "Science" = 1)
/obj/item/device/radio/headset/encryptionkey/headset_com
name = "Command Radio Encryption Key"
desc = "An encyption key for a radio headset. Contains cypherkeys."
channels = list("Command" = 1)
/obj/item/device/radio/headset/encryptionkey/heads/captain
name = "Captain's Encryption Key"
desc = "An encyption key for a radio headset. Contains cypherkeys."
channels = list("Command" = 1, "Science" = 0, "Medical" = 0, "Security" = 1, "Engineering" = 0, "Mining" = 0, "Cargo" = 0)
/obj/item/device/radio/headset/encryptionkey/heads/rd
name = "Research Director's Encryption Key"
desc = "An encyption key for a radio headset. Contains cypherkeys."
channels = list("Science" = 1, "Command" = 1)
/obj/item/device/radio/headset/encryptionkey/heads/hos
name = "Head of Security's Encryption Key"
desc = "An encyption key for a radio headset. Contains cypherkeys."
channels = list("Security" = 1, "Command" = 1)
/obj/item/device/radio/headset/encryptionkey/heads/ce
name = "Chief Engineer's Encryption Key"
desc = "An encyption key for a radio headset. Contains cypherkeys."
channels = list("Engineering" = 1, "Command" = 1)
/obj/item/device/radio/headset/encryptionkey/heads/cmo
name = "Chief Medical Officer's Encryption Key"
desc = "An encyption key for a radio headset. Contains cypherkeys."
channels = list("Medical" = 1, "Command" = 1)
/obj/item/device/radio/headset/encryptionkey/heads/hop
name = "Head of Personnel's Encryption Key"
desc = "An encyption key for a radio headset. Contains cypherkeys."
channels = list("Command" = 1, "Security" = 0, "Cargo" = 1, "Mining" = 0)
/obj/item/device/radio/headset/encryptionkey/headset_mine
name = "Mining Radio Encryption Key"
desc = "An encyption key for a radio headset. Contains cypherkeys."
channels = list("Mining" = 1)
/obj/item/device/radio/headset/encryptionkey/heads/qm
name = "Quartermaster's Encryption Key"
desc = "An encyption key for a radio headset. Contains cypherkeys."
channels = list("Cargo" = 1, "Mining" = 1)
/obj/item/device/radio/headset/encryptionkey/headset_cargo
name = "Cargo Radio Encryption Key"
desc = "An encyption key for a radio headset. Contains cypherkeys."
channels = list("Cargo" = 1)

View File

@@ -1,136 +1,245 @@
/obj/item/device/radio/headset
name = "Radio Headset"
desc = "An intercom that fits over the head."
desc = "An updated, modular intercom that fits over the head. Takes encryption keys"
icon_state = "headset"
item_state = "headset"
g_amt = 0
m_amt = 75
subspace_transmission = 1
var
protective_temperature = 0
translate_binary = 0
translate_hive = 0
var/protective_temperature = 0
var/translate_binary = 0
var/translate_hive = 0
var/obj/item/device/radio/headset/encryptionkey/keyslot1 = null
var/obj/item/device/radio/headset/encryptionkey/keyslot2 = null
/obj/item/device/radio/headset/New()
..()
keyslot1 = new /obj/item/device/radio/headset/encryptionkey/
recalculateChannels()
/obj/item/device/radio/headset/traitor
channels = list("Syndicate" = 1)
origin_tech = "syndicate=3"
/obj/item/device/radio/headset/traitor/New()
..()
del(keyslot1)
keyslot1 = new /obj/item/device/radio/headset/encryptionkey/traitor
/obj/item/device/radio/headset/binary
translate_binary = 1
origin_tech = "syndicate=3"
/obj/item/device/radio/headset/binary/New()
..()
del(keyslot1)
keyslot1 = new /obj/item/device/radio/headset/encryptionkey/binary
/obj/item/device/radio/headset/headset_sec
name = "Security Radio Headset"
desc = "This is used by your elite security force. To access the security channel, use :s."
icon_state = "sec_headset"
item_state = "headset"
channels = list("Security" = 1)
keyslot2 = new /obj/item/device/radio/headset/encryptionkey/headset_sec
/obj/item/device/radio/headset/headset_eng
name = "Engineering Radio Headset"
desc = "When the engineers wish to chat like girls. To access the engineering channel, use :e. "
icon_state = "eng_headset"
item_state = "headset"
channels = list("Engineering" = 1)
keyslot2 = new /obj/item/device/radio/headset/encryptionkey/headset_eng
/obj/item/device/radio/headset/headset_rob
name = "Robotics Radio Headset"
desc = "Made specifically for the roboticists who cannot decide between departments. To access the engineering channel, use :e. For research, use :n."
icon_state = "rob_headset"
item_state = "headset"
channels = list("Engineering" = 1, "Science" = 1)
keyslot2 = new /obj/item/device/radio/headset/encryptionkey/headset_rob
/obj/item/device/radio/headset/headset_med
name = "Medical Radio Headset"
desc = "A headset for the trained staff of the medbay. To access the medical channel, use :m."
icon_state = "med_headset"
item_state = "headset"
channels = list("Medical" = 1)
keyslot2 = new /obj/item/device/radio/headset/encryptionkey/headset_med
/obj/item/device/radio/headset/headset_sci
name = "Science Radio Headset"
desc = "A sciency headset. Like usual. To access the science channel, use :n."
icon_state = "com_headset"
item_state = "headset"
channels = list("Science" = 1)
keyslot2 = new /obj/item/device/radio/headset/encryptionkey/headset_sci
/obj/item/device/radio/headset/headset_medsci
name = "Medical Research Radio Headset"
desc = "A headset that is a result of the mating between medical and science. To access the medical channel, use :m. For science, use :n."
icon_state = "med_headset"
item_state = "headset"
channels = list("Medical" = 1, "Science" = 1)
keyslot2 = new /obj/item/device/radio/headset/encryptionkey/headset_medsci
/obj/item/device/radio/headset/headset_com
name = "Command Radio Headset"
desc = "A headset with a commanding channel. To access the command channel, use :c."
icon_state = "com_headset"
item_state = "headset"
channels = list("Command" = 1)
keyslot2 = new /obj/item/device/radio/headset/encryptionkey/headset_com
/obj/item/device/radio/headset/heads/captain
name = "Captain's Headset"
desc = "The headset of the boss. Channels are as follows: :c - command, :s - security, :e - engineering, :d - mining, :q - cargo, :m - medical, :n - science."
icon_state = "com_headset"
item_state = "headset"
channels = list("Command" = 1, "Science" = 0, "Medical" = 0, "Security" = 1, "Engineering" = 0, "Mining" = 0, "Cargo" = 0)
keyslot2 = new /obj/item/device/radio/headset/encryptionkey/heads/captain
/obj/item/device/radio/headset/heads/rd
name = "Research Director's Headset"
desc = "Headset of the researching God. To access the science channel, use :n. For command, use :c."
icon_state = "com_headset"
item_state = "headset"
channels = list("Science" = 1, "Command" = 1)
keyslot2 = new /obj/item/device/radio/headset/encryptionkey/heads/rd
/obj/item/device/radio/headset/heads/hos
name = "Head of Security's Headset"
desc = "The headset of the man who protects your worthless lifes. To access the security channel, use :s. For command, use :c."
icon_state = "com_headset"
item_state = "headset"
channels = list("Security" = 1, "Command" = 1)
keyslot2 = new /obj/item/device/radio/headset/encryptionkey/heads/hos
/obj/item/device/radio/headset/heads/ce
name = "Chief Engineer's Headset"
desc = "The headset of the guy who is in charge of morons. To access the engineering channel, use :e. For command, use :c."
icon_state = "com_headset"
item_state = "headset"
channels = list("Engineering" = 1, "Command" = 1)
keyslot2 = new /obj/item/device/radio/headset/encryptionkey/heads/ce
/obj/item/device/radio/headset/heads/cmo
name = "Chief Medical Officer's Headset"
desc = "The headset of the highly trained medical chief. To access the medical channel, use :m. For command, use :c."
icon_state = "com_headset"
item_state = "headset"
channels = list("Medical" = 1, "Command" = 1)
keyslot2 = new /obj/item/device/radio/headset/encryptionkey/heads/cmo
/obj/item/device/radio/headset/heads/hop
name = "Head of Personnel's Headset"
desc = "The headset of the guy who will one day be captain. Channels are as follows: :c - command, :s - security, :q - cargo, :d - mining."
icon_state = "com_headset"
item_state = "headset"
channels = list("Command" = 1, "Security" = 0, "Cargo" = 1, "Mining" = 0)
keyslot2 = new /obj/item/device/radio/headset/encryptionkey/heads/hop
/obj/item/device/radio/headset/headset_mine
name = "Mining Radio Headset"
desc = "Headset used by miners. How useless. To access the mining channel, use :d."
icon_state = "mine_headset"
item_state = "headset"
channels = list("Mining" = 1)
keyslot2 = new /obj/item/device/radio/headset/encryptionkey/headset_mine
/obj/item/device/radio/headset/heads/qm
name = "Quartermaster's Headset"
desc = "The headset of the man who control your toiletpaper supply. To access the cargo channel, use :q. For mining, use :d."
icon_state = "cargo_headset"
item_state = "headset"
channels = list("Cargo" = 1, "Mining" = 1)
keyslot2 = new /obj/item/device/radio/headset/encryptionkey/heads/qm
/obj/item/device/radio/headset/headset_cargo
name = "Cargo Radio Headset"
desc = "Headset used by the QM's slaves. To access the cargo channel, use :q."
icon_state = "cargo_headset"
item_state = "headset"
channels = list("Cargo" = 1)
keyslot2 = new /obj/item/device/radio/headset/encryptionkey/headset_cargo
/obj/item/device/radio/headset/attackby(obj/item/weapon/W as obj, mob/user as mob)
// ..()
user.machine = src
if (!( istype(W, /obj/item/weapon/screwdriver) || (istype(W, /obj/item/device/radio/headset/encryptionkey/ ))))
return
if(istype(W, /obj/item/weapon/screwdriver))
if(keyslot1 || keyslot2)
for(var/ch_name in channels)
radio_controller.remove_object(src, radiochannels[ch_name])
secure_radio_connections[ch_name] = null
if(keyslot1)
var/turf/T = get_turf(user)
if(T)
keyslot1.loc = T
keyslot1 = null
if(keyslot2)
var/turf/T = get_turf(user)
if(T)
keyslot2.loc = T
keyslot2 = null
recalculateChannels()
user << "You pop out the encryption keys in the headset!"
else
user << "This headset doesn't have any encryption keys! How useless..."
if(istype(W, /obj/item/device/radio/headset/encryptionkey/))
if(keyslot1 && keyslot2)
user << "The headset can't hold another key!"
return
if(!keyslot1)
user.drop_item()
W.loc = src
keyslot1 = W
else
user.drop_item()
W.loc = src
keyslot2 = W
recalculateChannels()
return
/obj/item/device/radio/headset/proc/recalculateChannels()
src.channels = list()
src.translate_binary = 0
src.translate_hive = 0
if(keyslot1)
for(var/ch_name in keyslot1.channels)
if(ch_name in src.channels)
continue
src.channels += ch_name
src.channels[ch_name] = keyslot1.channels[ch_name]
if(keyslot1.translate_binary)
src.translate_binary = 1
if(keyslot1.translate_hive)
src.translate_hive = 1
if(keyslot2)
for(var/ch_name in keyslot2.channels)
if(ch_name in src.channels)
continue
src.channels += ch_name
src.channels[ch_name] = keyslot2.channels[ch_name]
if(keyslot2.translate_binary)
src.translate_binary = 1
if(keyslot2.translate_hive)
src.translate_hive = 1
for (var/ch_name in channels)
if(!radio_controller)
sleep(30) // Waiting for the radio_controller to be created.
if(!radio_controller)
src.name = "Broken Radio Headset"
return
secure_radio_connections[ch_name] = radio_controller.add_object(src, radiochannels[ch_name], RADIO_CHAT)
return

View File

@@ -81,9 +81,8 @@
var/rendered = "<i><span class='game say'>Robotic Talk, <span class='name'>[name]</span> <span class='message'>[message_a]</span></span></i>"
for (var/mob/living/S in world)
if(!S.stat)
if(S.robot_talk_understand)
if(S.robot_talk_understand == robot_talk_understand)
S.show_message(rendered, 2)
if(S.robot_talk_understand && (S.robot_talk_understand == robot_talk_understand))
S.show_message(rendered, 2)
else if (S.binarycheck())
S.show_message(rendered, 2)

View File

@@ -92,6 +92,15 @@ should be listed in the changelog upon commit tho. Thanks. -->
<!-- To take advantage of the pretty new format (well it was new when I wrote this anyway), open the "add-to-changelog.html" file in any browser and add the stuff and then generate the html code and paste it here -->
<div class="commit sansserif">
<h2 class="date">2/24/2012</h2>
<h3 class="author">PolymorphBlue updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Headsets are now modular! Use a screwdriver on them to pop out their encrpytion keys, and use a key on one to put it in. A headset can hold two keys. Normal headsets start with 1 key, department headsets with two. The standard chip does nothing, and is not required for listening to the common radio.</li>
<li class="bugfix">Binary translators made into a encrpytion key, and fixed. They now broadcast to AIs properly. </li>
</ul>
</div>
<div class="commit sansserif">
<h2 class="date">2/23/2012</h2>
<h3 class="author">PolymorphBlue updated:</h3>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@@ -163,10 +163,10 @@
#define FILE_DIR "icons/vending_icons"
#define FILE_DIR "interface"
#define FILE_DIR "maps"
#define FILE_DIR "maps/backup"
#define FILE_DIR "sound"
#define FILE_DIR "sound/AI"
#define FILE_DIR "sound/ambience"
#define FILE_DIR "sound/announcer"
#define FILE_DIR "sound/effects"
#define FILE_DIR "sound/items"
#define FILE_DIR "sound/machines"
@@ -677,6 +677,7 @@
#include "code\game\objects\items\weapons\implants\implantpad.dm"
#include "code\game\objects\radio\beacon.dm"
#include "code\game\objects\radio\electropack.dm"
#include "code\game\objects\radio\encryptionkey.dm"
#include "code\game\objects\radio\headset.dm"
#include "code\game\objects\radio\intercom.dm"
#include "code\game\objects\radio\radio.dm"