mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-24 04:27:35 +01:00
Merge branch 'master' into corporate-comms
This commit is contained in:
@@ -212,6 +212,17 @@
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/hacking
|
||||
name = "hacking arm implant"
|
||||
desc = "A small arm implant containing an advanced screwdriver, wirecutters, and multitool designed for engineers and on-the-field machine modification. Actually legal, despite what the name may make you think."
|
||||
origin_tech = "materials=3;engineering=4;biotech=3;powerstorage=4;abductor=3"
|
||||
contents = newlist(/obj/item/screwdriver/cyborg, /obj/item/wirecutters/cyborg, /obj/item/multitool/abductor)
|
||||
action_icon = list(/datum/action/item_action/organ_action/toggle = 'icons/obj/device.dmi')
|
||||
action_icon_state = list(/datum/action/item_action/organ_action/toggle = "hacktool")
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/hacking/l
|
||||
parent_organ = "l_arm"
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/esword
|
||||
name = "arm-mounted energy blade"
|
||||
desc = "An illegal, and highly dangerous cybernetic implant that can project a deadly blade of concentrated enregy."
|
||||
@@ -278,6 +289,30 @@
|
||||
parent_organ = "l_arm"
|
||||
slot = "l_arm_device"
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/janitorial
|
||||
name = "janitorial toolset implant"
|
||||
desc = "A set of janitorial tools hidden behind a concealed panel on the user's arm"
|
||||
contents = newlist(/obj/item/mop/advanced, /obj/item/soap, /obj/item/lightreplacer, /obj/item/holosign_creator, /obj/item/melee/flyswatter, /obj/item/reagent_containers/spray/cleaner/safety)
|
||||
origin_tech = "materials=3;engineering=4;biotech=3"
|
||||
action_icon = list(/datum/action/item_action/organ_action/toggle = 'icons/obj/clothing/belts.dmi')
|
||||
action_icon_state = list(/datum/action/item_action/organ_action/toggle = "janibelt")
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/janitorial/l
|
||||
parent_organ = "l_arm"
|
||||
slot = "l_arm_device"
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/botanical
|
||||
name = "botanical toolset implant"
|
||||
desc = "A set of botanical tools hidden behind a concealed panel on the user's arm"
|
||||
contents = newlist(/obj/item/plant_analyzer, /obj/item/cultivator, /obj/item/hatchet, /obj/item/shovel/spade, /obj/item/wirecutters, /obj/item/wrench)
|
||||
origin_tech = "materials=3;engineering=4;biotech=3"
|
||||
action_icon = list(/datum/action/item_action/organ_action/toggle = 'icons/obj/clothing/belts.dmi')
|
||||
action_icon_state = list(/datum/action/item_action/organ_action/toggle = "botanybelt")
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/botanical/l
|
||||
parent_organ = "l_arm"
|
||||
slot = "l_arm_device"
|
||||
|
||||
// lets make IPCs even *more* vulnerable to EMPs!
|
||||
/obj/item/organ/internal/cyberimp/arm/power_cord
|
||||
name = "APC-compatible power adapter implant"
|
||||
|
||||
@@ -122,7 +122,7 @@
|
||||
|
||||
/obj/item/organ/internal/cyberimp/brain/anti_stun
|
||||
name = "CNS Rebooter implant"
|
||||
desc = "This implant will automatically give you back control over your central nervous system, reducing downtime when stunned."
|
||||
desc = "This implant will automatically give you back control over your central nervous system, reducing downtime when stunned. Incompatible with the Neural Jumpstarter."
|
||||
implant_color = "#FFFF00"
|
||||
slot = "brain_antistun"
|
||||
origin_tech = "materials=5;programming=4;biotech=5"
|
||||
@@ -161,6 +161,54 @@
|
||||
origin_tech = "materials=6;programming=5;biotech=5"
|
||||
emp_proof = TRUE
|
||||
|
||||
/obj/item/organ/internal/cyberimp/brain/anti_sleep
|
||||
name = "Nerual Jumpstarter implant"
|
||||
desc = "This implant will automatically attempt to jolt you awake when it detects you have fallen unconscious. Has a short cooldown, incompatible with the CNS Rebooter."
|
||||
implant_color = "#0356fc"
|
||||
slot = "brain_antistun" //one or the other not both.
|
||||
origin_tech = "materials=5;programming=4;biotech=5"
|
||||
var/cooldown = FALSE
|
||||
|
||||
/obj/item/organ/internal/cyberimp/brain/anti_sleep/on_life()
|
||||
..()
|
||||
if(crit_fail)
|
||||
return
|
||||
if(owner.stat == UNCONSCIOUS && cooldown == FALSE)
|
||||
owner.AdjustSleeping(-100, FALSE)
|
||||
owner.AdjustParalysis(-100, FALSE)
|
||||
to_chat(owner, "<span class='notice'>You feel a rush of energy course through your body!</span>")
|
||||
cooldown = TRUE
|
||||
addtimer(CALLBACK(src, .proc/sleepy_timer_end), 50)
|
||||
|
||||
/obj/item/organ/internal/cyberimp/brain/anti_sleep/proc/sleepy_timer_end()
|
||||
cooldown = FALSE
|
||||
to_chat(owner, "<span class='notice'>You hear a small beep in your head as your Neural Jumpstarter finishes recharging.</span>")
|
||||
|
||||
/obj/item/organ/internal/cyberimp/brain/anti_sleep/emp_act(severity)
|
||||
. = ..()
|
||||
if(crit_fail || emp_proof)
|
||||
return
|
||||
crit_fail = TRUE
|
||||
owner.AdjustSleeping(200)
|
||||
cooldown = TRUE
|
||||
addtimer(CALLBACK(src, .proc/reboot), 90 / severity)
|
||||
|
||||
/obj/item/organ/internal/cyberimp/brain/anti_sleep/proc/reboot()
|
||||
crit_fail = FALSE
|
||||
cooldown = FALSE
|
||||
|
||||
/obj/item/organ/internal/cyberimp/brain/anti_sleep/hardened
|
||||
name = "Hardened Neural Jumpstarter implant"
|
||||
desc = "A military-grade version of the standard implant, for NT's more elite forces."
|
||||
origin_tech = "materials=6;programming=5;biotech=5"
|
||||
emp_proof = TRUE
|
||||
|
||||
/obj/item/organ/internal/cyberimp/brain/anti_sleep/hardened/compatible
|
||||
name = "Hardened Neural Jumpstarter implant"
|
||||
desc = "A military-grade version of the standard implant, for NT's more elite forces. This one is compatible with the CNS Rebooter implant"
|
||||
slot = "brain_antisleep"
|
||||
emp_proof = TRUE
|
||||
|
||||
/obj/item/organ/internal/cyberimp/brain/clown_voice
|
||||
name = "Comical implant"
|
||||
desc = "<span class='sans'>Uh oh.</span>"
|
||||
|
||||
@@ -162,10 +162,13 @@ GLOBAL_LIST_EMPTY(limb_icon_cache)
|
||||
new_icon_state = "[icon_name][gendered_icon ? "_f" : ""]"
|
||||
else
|
||||
if(gendered_icon)
|
||||
if(dna.GetUIState(DNA_UI_GENDER))
|
||||
gender = "f"
|
||||
else
|
||||
gender = "m"
|
||||
switch(dna.GetUITriState(DNA_UI_GENDER))
|
||||
if(DNA_GENDER_FEMALE)
|
||||
gender = "f"
|
||||
if(DNA_GENDER_MALE)
|
||||
gender = "m"
|
||||
else
|
||||
gender = "f" //Default to "f" (per line 162). Using a pick("m", "f") will make different body parts different genders for the same character.
|
||||
if(limb_name == "head")
|
||||
var/obj/item/organ/external/head/head_organ = src
|
||||
head_organ.handle_alt_icon()
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
/obj/item/organ/internal/headpocket/on_life()
|
||||
..()
|
||||
var/obj/item/organ/external/head/head = owner.get_organ("head")
|
||||
if(pocket.contents.len && (owner.stunned || !findtextEx(head.h_style, "Tentacles")))
|
||||
if(pocket.contents.len && !findtextEx(head.h_style, "Tentacles"))
|
||||
owner.visible_message("<span class='notice'>Something falls from [owner]'s head!</span>",
|
||||
"<span class='notice'>Something falls from your head!</span>")
|
||||
empty_contents()
|
||||
|
||||
@@ -30,12 +30,46 @@
|
||||
user.visible_message("[user] successfully restores [target]'s appearance!", "<span class='notice'>You successfully restore [target]'s appearance.</span>")
|
||||
else
|
||||
var/list/names = list()
|
||||
var/list_size = 10
|
||||
var/obj/item/card/id/ID
|
||||
|
||||
//IDs in hand
|
||||
if(istype(user, /mob/living/carbon/human)) //Only 'humans' can hold ID cards
|
||||
var/mob/living/carbon/human/H = user
|
||||
ID = H.get_id_from_hands()
|
||||
if(ID)
|
||||
names += ID.registered_name
|
||||
list_size-- //To stop list bloat
|
||||
|
||||
//IDs on body
|
||||
var/list/ID_list = list()
|
||||
for(var/obj/item/I in range(0, target)) //Get ID cards
|
||||
if(istype(I, /obj/item/card/id))
|
||||
ID_list += I
|
||||
else if(istype(I, /obj/item/pda))
|
||||
var/obj/item/pda/PDA = I
|
||||
if(PDA.id)
|
||||
ID_list += PDA.id
|
||||
else if(istype(I, /obj/item/storage/wallet))
|
||||
var/obj/item/storage/wallet/W = I
|
||||
if(W.front_id)
|
||||
ID_list += W.front_id
|
||||
|
||||
for(var/I in ID_list) //Add card names to 'names'
|
||||
var/obj/item/card/id/Card = I
|
||||
ID = Card.registered_name
|
||||
if(ID != target.real_name)
|
||||
names += ID
|
||||
list_size--
|
||||
|
||||
if(!isabductor(user))
|
||||
for(var/i in 1 to 10)
|
||||
for(var/i in 1 to list_size)
|
||||
names += random_name(target.gender, species_names)
|
||||
else
|
||||
for(var/_i in 1 to 9)
|
||||
names += "Subject [target.gender == MALE ? "i" : "o"]-[pick("a", "b", "c", "d", "e")]-[rand(10000, 99999)]"
|
||||
|
||||
else //Abductors get to pick fancy names
|
||||
list_size-- //One less cause they get a normal name too
|
||||
for(var/i in 1 to list_size)
|
||||
names += "Subject [target.gender == MALE ? "I" : "O"]-[pick("A", "B", "C", "D", "E")]-[rand(10000, 99999)]"
|
||||
names += random_name(target.gender, species_names) //give one normal name in case they want to do regular plastic surgery
|
||||
var/chosen_name = input(user, "Choose a new name to assign.", "Plastic Surgery") as null|anything in names
|
||||
if(!chosen_name)
|
||||
|
||||
Reference in New Issue
Block a user