143 lines
4.8 KiB
Plaintext
143 lines
4.8 KiB
Plaintext
|
|
/mob/living/carbon/human/restrained(ignore_grab)
|
|
. = ((wear_suit && wear_suit.breakouttime) || ..())
|
|
|
|
|
|
/mob/living/carbon/human/canBeHandcuffed()
|
|
if(get_num_arms(FALSE) >= 2)
|
|
return TRUE
|
|
else
|
|
return FALSE
|
|
|
|
//gets assignment from ID or ID inside PDA or PDA itself
|
|
//Useful when player do something with computers
|
|
/mob/living/carbon/human/proc/get_assignment(if_no_id = "No id", if_no_job = "No job", hand_first = TRUE)
|
|
var/obj/item/card/id/id = get_idcard(hand_first)
|
|
if(id)
|
|
. = id.assignment
|
|
else
|
|
var/obj/item/pda/pda = wear_id
|
|
if(istype(pda))
|
|
. = pda.ownjob
|
|
else
|
|
return if_no_id
|
|
if(!.)
|
|
return if_no_job
|
|
|
|
//gets name from ID or ID inside PDA or PDA itself
|
|
//Useful when player do something with computers
|
|
/mob/living/carbon/human/proc/get_authentification_name(if_no_id = "Unknown")
|
|
var/obj/item/card/id/id = get_idcard(FALSE)
|
|
if(id)
|
|
return id.registered_name
|
|
var/obj/item/pda/pda = wear_id
|
|
if(istype(pda))
|
|
return pda.owner
|
|
return if_no_id
|
|
|
|
//repurposed proc. Now it combines get_id_name() and get_face_name() to determine a mob's name variable. Made into a separate proc as it'll be useful elsewhere
|
|
/mob/living/carbon/human/get_visible_name()
|
|
var/face_name = get_face_name("")
|
|
var/id_name = get_id_name("")
|
|
if(name_override)
|
|
return name_override
|
|
if(face_name)
|
|
if(id_name && (id_name != face_name))
|
|
return "[face_name] (as [id_name])"
|
|
return face_name
|
|
if(id_name)
|
|
return id_name
|
|
return "Unknown"
|
|
|
|
//Returns "Unknown" if facially disfigured and real_name if not. Useful for setting name when Fluacided or when updating a human's name variable
|
|
/mob/living/carbon/human/proc/get_face_name(if_no_face="Unknown")
|
|
if( wear_mask && (wear_mask.flags_inv&HIDEFACE) ) //Wearing a mask which hides our face, use id-name if possible
|
|
return if_no_face
|
|
if( head && (head.flags_inv&HIDEFACE) )
|
|
return if_no_face //Likewise for hats
|
|
var/obj/item/bodypart/O = get_bodypart(BODY_ZONE_HEAD)
|
|
if( !O || (HAS_TRAIT(src, TRAIT_DISFIGURED)) || (O.brutestate+O.burnstate)>2 || cloneloss>50 || !real_name || nameless) //disfigured. use id-name if possible
|
|
return if_no_face
|
|
return real_name
|
|
|
|
//gets name from ID or PDA itself, ID inside PDA doesn't matter
|
|
//Useful when player is being seen by other mobs
|
|
/mob/living/carbon/human/proc/get_id_name(if_no_id = "Unknown")
|
|
var/obj/item/storage/wallet/wallet = wear_id
|
|
var/obj/item/pda/pda = wear_id
|
|
var/obj/item/card/id/id = wear_id
|
|
var/obj/item/modular_computer/tablet/tablet = wear_id
|
|
if(istype(wallet))
|
|
id = wallet.front_id
|
|
if(istype(id))
|
|
. = id.registered_name
|
|
else if(istype(pda))
|
|
. = pda.owner
|
|
else if(istype(tablet))
|
|
var/obj/item/computer_hardware/card_slot/card_slot = tablet.all_components[MC_CARD]
|
|
if(card_slot && (card_slot.stored_card2 || card_slot.stored_card))
|
|
if(card_slot.stored_card2) //The second card is the one used for authorization in the ID changing program, so we prioritize it here for consistency
|
|
. = card_slot.stored_card2.registered_name
|
|
else
|
|
if(card_slot.stored_card)
|
|
. = card_slot.stored_card.registered_name
|
|
if(!.)
|
|
. = if_no_id //to prevent null-names making the mob unclickable
|
|
return
|
|
|
|
//gets ID card object from special clothes slot or null.
|
|
/mob/living/carbon/human/get_idcard(hand_first = TRUE)
|
|
. = ..()
|
|
if(. && hand_first)
|
|
return
|
|
//Check inventory slots
|
|
var/obj/item/card/id/id_card = wear_id?.GetID()
|
|
if(!id_card)
|
|
id_card = belt?.GetID()
|
|
return id_card || .
|
|
|
|
/mob/living/carbon/human/IsAdvancedToolUser()
|
|
if(HAS_TRAIT(src, TRAIT_MONKEYLIKE))
|
|
return FALSE
|
|
return TRUE//Humans can use guns and such
|
|
|
|
/mob/living/carbon/human/reagent_check(datum/reagent/R)
|
|
return dna.species.handle_chemicals(R,src)
|
|
// if it returns 0, it will run the usual on_mob_life for that reagent. otherwise, it will stop after running handle_chemicals for the species.
|
|
|
|
/mob/living/carbon/human/can_track(mob/living/user)
|
|
if(wear_id && istype(wear_id.GetID(), /obj/item/card/id/syndicate))
|
|
return 0
|
|
if(istype(head, /obj/item/clothing/head))
|
|
var/obj/item/clothing/head/hat = head
|
|
if(hat.blockTracking)
|
|
return 0
|
|
|
|
return ..()
|
|
|
|
/mob/living/carbon/human/can_use_guns(obj/item/G)
|
|
. = ..()
|
|
if(!.)
|
|
return
|
|
if(G.trigger_guard == TRIGGER_GUARD_NORMAL)
|
|
if(HAS_TRAIT(src, TRAIT_CHUNKYFINGERS))
|
|
to_chat(src, "<span class='warning'>Your meaty finger is much too large for the trigger guard!</span>")
|
|
return FALSE
|
|
if(HAS_TRAIT(src, TRAIT_NOGUNS))
|
|
to_chat(src, "<span class='warning'>Your fingers don't fit in the trigger guard!</span>")
|
|
return FALSE
|
|
|
|
/mob/living/carbon/human/can_see_reagents()
|
|
. = ..()
|
|
if(.) //No need to run through all of this if it's already true.
|
|
return
|
|
if(isclothing(glasses) && (glasses.clothing_flags & SCAN_REAGENTS))
|
|
return TRUE
|
|
|
|
/*
|
|
/mob/living/carbon/human/transfer_blood_dna(list/blood_dna)
|
|
..()
|
|
if(blood_dna.len)
|
|
last_bloodtype = blood_dna[blood_dna[blood_dna.len]]//trust me this works
|
|
last_blood_DNA = blood_dna[blood_dna.len]*/
|