mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-23 03:57:48 +01:00
Makes it possible for syndicate borgs to copy access from other ids.
This commit is contained in:
@@ -36,7 +36,7 @@
|
||||
if(!W) return
|
||||
W.access |= default_access
|
||||
W.assignment = "[assignment]"
|
||||
W.set_owner_info(player)
|
||||
player.set_id_info(W)
|
||||
if(equip) player.equip_to_slot_or_del(W, slot_wear_id)
|
||||
return W
|
||||
|
||||
|
||||
@@ -19,8 +19,7 @@
|
||||
|
||||
/datum/antagonist/proc/update_access(var/mob/living/player)
|
||||
for(var/obj/item/weapon/card/id/id in player.contents)
|
||||
id.name = "[player.real_name]'s ID Card"
|
||||
id.registered_name = player.real_name
|
||||
player.set_id_info(id)
|
||||
|
||||
/datum/antagonist/proc/update_all_icons()
|
||||
if(!antag_indicator)
|
||||
|
||||
@@ -528,7 +528,7 @@ var/global/datum/controller/occupations/job_master
|
||||
if(C)
|
||||
C.rank = rank
|
||||
C.assignment = title ? title : rank
|
||||
C.set_owner_info(H)
|
||||
H.set_id_info(C)
|
||||
|
||||
//put the player's account number onto the ID
|
||||
if(H.mind && H.mind.initial_account)
|
||||
|
||||
@@ -223,6 +223,9 @@ mob/living/proc/near_camera()
|
||||
/mob/living/proc/tracking_status()
|
||||
// Easy checks first.
|
||||
// Don't detect mobs on Centcom. Since the wizard den is on Centcomm, we only need this.
|
||||
var/obj/item/weapon/card/id/id = GetIdCard()
|
||||
if(id && id.prevent_tracking())
|
||||
return TRACKING_TERMINATE
|
||||
if(InvalidPlayerTurf(get_turf(src)))
|
||||
return TRACKING_TERMINATE
|
||||
if(invisibility >= INVISIBILITY_LEVEL_ONE) //cloaked
|
||||
@@ -240,14 +243,8 @@ mob/living/proc/near_camera()
|
||||
if(. == TRACKING_NO_COVERAGE)
|
||||
return camera && camera.can_use() ? TRACKING_POSSIBLE : TRACKING_NO_COVERAGE
|
||||
|
||||
/mob/living/silicon/robot/syndicate/tracking_status()
|
||||
return TRACKING_TERMINATE
|
||||
|
||||
/mob/living/carbon/human/tracking_status()
|
||||
//Cameras can't track people wearing an agent card or a ninja hood.
|
||||
var/obj/item/weapon/card/id/id = GetIdCard(src)
|
||||
if(id && id.prevent_tracking())
|
||||
return TRACKING_TERMINATE
|
||||
if(istype(head, /obj/item/clothing/head/helmet/space/rig))
|
||||
var/obj/item/clothing/head/helmet/space/rig/helmet = head
|
||||
if(helmet.prevent_track())
|
||||
|
||||
@@ -616,7 +616,7 @@ var/image/default_abstract_uplink_icon
|
||||
if(!user)
|
||||
return 0
|
||||
|
||||
var/obj/item/weapon/card/id/I = GetIdCard(user)
|
||||
var/obj/item/weapon/card/id/I = user.GetIdCard()
|
||||
var/datum/data/record/random_general_record
|
||||
var/datum/data/record/random_medical_record
|
||||
if(data_core.general.len)
|
||||
|
||||
@@ -33,6 +33,8 @@
|
||||
|
||||
R.notify_ai(ROBOT_NOTIFICATION_MODULE_RESET, R.module.name)
|
||||
R.module.Reset(R)
|
||||
qdel(R.module)
|
||||
R.module = null
|
||||
R.updatename("Default")
|
||||
|
||||
return 1
|
||||
|
||||
@@ -137,17 +137,26 @@
|
||||
front = getFlatIcon(M, SOUTH, always_use_defdir = 1)
|
||||
side = getFlatIcon(M, WEST, always_use_defdir = 1)
|
||||
|
||||
/obj/item/weapon/card/id/proc/set_owner_info(var/mob/living/carbon/human/H)
|
||||
if(!H || !H.dna)
|
||||
return
|
||||
age = H.age
|
||||
blood_type = H.dna.b_type
|
||||
dna_hash = H.dna.unique_enzymes
|
||||
fingerprint_hash = md5(H.dna.uni_identity)
|
||||
registered_name = H.real_name
|
||||
sex = capitalize(H.gender)
|
||||
set_id_photo(H)
|
||||
update_name()
|
||||
/mob/proc/set_id_info(var/obj/item/weapon/card/id/id_card)
|
||||
id_card.age = 0
|
||||
id_card.registered_name = real_name
|
||||
id_card.sex = capitalize(gender)
|
||||
id_card.set_id_photo(src)
|
||||
|
||||
if(dna)
|
||||
id_card.blood_type = dna.b_type
|
||||
id_card.dna_hash = dna.unique_enzymes
|
||||
id_card.fingerprint_hash= md5(dna.uni_identity)
|
||||
id_card.update_name()
|
||||
|
||||
/mob/living/silicon/set_id_info(var/obj/item/weapon/card/id/id_card)
|
||||
id_card.assignment = "Synthetic"
|
||||
id_card.rank = "Synthetic"
|
||||
..()
|
||||
|
||||
/mob/living/carbon/human/set_id_info(var/obj/item/weapon/card/id/id_card)
|
||||
..()
|
||||
id_card.age = age
|
||||
|
||||
/obj/item/weapon/card/id/proc/dat()
|
||||
var/dat = ("<table><tr><td>")
|
||||
|
||||
@@ -6,12 +6,11 @@ var/global/list/syndicate_ids = list()
|
||||
origin_tech = list(TECH_ILLEGAL = 3)
|
||||
var/electronic_warfare = 1
|
||||
var/registered_user = null
|
||||
var/list/initial_access = list(access_maint_tunnels, access_syndicate, access_external_airlocks)
|
||||
|
||||
/obj/item/weapon/card/id/syndicate/New(mob/user as mob)
|
||||
syndicate_ids += src
|
||||
..()
|
||||
access = initial_access.Copy()
|
||||
access = syndicate_access.Copy()
|
||||
|
||||
/obj/item/weapon/card/id/syndicate/Destroy()
|
||||
syndicate_ids -= src
|
||||
@@ -39,7 +38,7 @@ var/global/list/syndicate_ids = list()
|
||||
/obj/item/weapon/card/id/syndicate/attack_self(mob/user as mob)
|
||||
if(!registered_user)
|
||||
registered_user = user
|
||||
set_owner_info(user)
|
||||
user.set_id_info(src)
|
||||
user << "<span class='notice'>The microscanner marks you as its owner, preventing others some accessing its internals.</span>"
|
||||
if(registered_user == user)
|
||||
switch(alert("Would you like edit the ID, or show it?","Show or Edit?", "Edit","Show"))
|
||||
@@ -163,7 +162,7 @@ var/global/list/syndicate_ids = list()
|
||||
if("Factory Reset")
|
||||
if(alert("This will factory reset the card, including access and owner. Continue?", "Factory Reset", "No", "Yes") == "Yes" && CanUseTopic(user, state))
|
||||
age = initial(age)
|
||||
access = initial_access.Copy()
|
||||
access = syndicate_access.Copy()
|
||||
assignment = initial(assignment)
|
||||
blood_type = initial(blood_type)
|
||||
dna_hash = initial(dna_hash)
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
W.access = list()
|
||||
if(corpseidjob)
|
||||
W.assignment = corpseidjob
|
||||
W.set_owner_info(M)
|
||||
M.set_id_info(W)
|
||||
M.equip_to_slot_or_del(W, slot_wear_id)
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -53,8 +53,6 @@ var/global/list/robot_modules = list(
|
||||
R.choose_icon(R.module_sprites.len + 1, R.module_sprites)
|
||||
|
||||
/obj/item/weapon/robot_module/proc/Reset(var/mob/living/silicon/robot/R)
|
||||
R.module = null
|
||||
|
||||
remove_camera_networks(R)
|
||||
remove_languages(R)
|
||||
remove_subsystems(R)
|
||||
@@ -64,15 +62,15 @@ var/global/list/robot_modules = list(
|
||||
R.radio.recalculateChannels()
|
||||
R.choose_icon(0, R.set_module_sprites(list("Default" = "robot")))
|
||||
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/robot_module/Destroy()
|
||||
qdel(modules)
|
||||
qdel(synths)
|
||||
for(var/module in modules)
|
||||
qdel(module)
|
||||
for(var/synth in synths)
|
||||
qdel(synths)
|
||||
modules.Cut()
|
||||
synths.Cut()
|
||||
qdel(emag)
|
||||
qdel(jetpack)
|
||||
modules = null
|
||||
synths = null
|
||||
emag = null
|
||||
jetpack = null
|
||||
return ..()
|
||||
@@ -624,6 +622,7 @@ var/global/list/robot_modules = list(
|
||||
sprites = list(
|
||||
"Dread" = "securityrobot",
|
||||
)
|
||||
var/id
|
||||
|
||||
/obj/item/weapon/robot_module/syndicate/New(var/mob/living/silicon/robot/R)
|
||||
..()
|
||||
@@ -635,8 +634,16 @@ var/global/list/robot_modules = list(
|
||||
var/jetpack = new/obj/item/weapon/tank/jetpack/carbondioxide(src)
|
||||
src.modules += jetpack
|
||||
R.internals = jetpack
|
||||
|
||||
id = R.idcard
|
||||
src.modules += id
|
||||
return
|
||||
|
||||
/obj/item/weapon/robot_module/syndicate/Destroy()
|
||||
src.modules -= id
|
||||
id = null
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/robot_module/security/combat
|
||||
name = "combat robot module"
|
||||
sprites = list("Combat Android" = "droid-combat")
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
icon_state = "securityrobot"
|
||||
modtype = "Security"
|
||||
lawchannel = "State"
|
||||
idcard_type = /obj/item/weapon/card/id/syndicate
|
||||
|
||||
/mob/living/silicon/robot/syndicate/New()
|
||||
if(!cell)
|
||||
@@ -14,11 +15,11 @@
|
||||
..()
|
||||
|
||||
/mob/living/silicon/robot/syndicate/init()
|
||||
idcard = new/obj/item/weapon/card/id/syndicate(src)
|
||||
aiCamera = new/obj/item/device/camera/siliconcam/robot_camera(src)
|
||||
|
||||
laws = new /datum/ai_laws/syndicate_override
|
||||
overlays.Cut()
|
||||
init_id()
|
||||
new /obj/item/weapon/robot_module/syndicate(src)
|
||||
|
||||
radio.keyslot = new /obj/item/device/encryptionkey/syndicate(radio)
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
var/list/access_rights
|
||||
var/obj/item/weapon/card/id/idcard
|
||||
var/idcard_type = /obj/item/weapon/card/id/captains_spare
|
||||
|
||||
#define SEC_HUD 1 //Security HUD mode
|
||||
#define MED_HUD 2 //Medical HUD mode
|
||||
@@ -33,9 +34,8 @@
|
||||
silicon_mob_list |= src
|
||||
..()
|
||||
add_language("Galactic Common")
|
||||
init_id()
|
||||
init_subsystems()
|
||||
if(!idcard)
|
||||
idcard = new/obj/item/weapon/card/id/captains_spare(src)
|
||||
|
||||
/mob/living/silicon/Destroy()
|
||||
silicon_mob_list -= src
|
||||
@@ -43,6 +43,12 @@
|
||||
AH.unregister(src)
|
||||
..()
|
||||
|
||||
/mob/living/silicon/proc/init_id()
|
||||
if(idcard)
|
||||
return
|
||||
idcard = new idcard_type(src)
|
||||
set_id_info(idcard)
|
||||
|
||||
/mob/living/silicon/proc/SetName(pickedName as text)
|
||||
real_name = pickedName
|
||||
name = real_name
|
||||
|
||||
Reference in New Issue
Block a user