diff --git a/code/modules/client/preference_setup/loadout/items/xeno/unathi.dm b/code/modules/client/preference_setup/loadout/items/xeno/unathi.dm index 88f2cd573b8..7c91c782582 100644 --- a/code/modules/client/preference_setup/loadout/items/xeno/unathi.dm +++ b/code/modules/client/preference_setup/loadout/items/xeno/unathi.dm @@ -205,6 +205,7 @@ description = "An Aut'akh augment limb, this one is outfitted with a limited toolkit." path = /obj/item/organ/external/hand/right/autakh/tool whitelisted = list(SPECIES_UNATHI) + culture_restriction = list(/singleton/origin_item/culture/autakh) sort_category = "Xenowear - Unathi" cost = 2 allowed_roles = list("Engineer", "Chief Engineer", "Atmospheric Technician", "Engineering Apprentice", "Machinist") @@ -215,6 +216,7 @@ description = "An Aut'akh augment limb, this one is outfitted with a mining drill." path = /obj/item/organ/external/hand/right/autakh/tool/mining whitelisted = list(SPECIES_UNATHI) + culture_restriction = list(/singleton/origin_item/culture/autakh) sort_category = "Xenowear - Unathi" cost = 2 allowed_roles = list("Shaft Miner") @@ -225,6 +227,7 @@ description = "An Aut'akh augment limb, this one is outfitted with a health scanner." path = /obj/item/organ/external/hand/right/autakh/medical whitelisted = list(SPECIES_UNATHI) + culture_restriction = list(/singleton/origin_item/culture/autakh) sort_category = "Xenowear - Unathi" cost = 2 allowed_roles = list("Chief Medical Officer", "Physician", "Surgeon", "First Responder", "Medical Intern", "Psychiatrist", "Chemist") @@ -235,6 +238,7 @@ description = "An Aut'akh augment limb, this one is outfitted with an electroshock weapon." path = /obj/item/organ/external/hand/right/autakh/security whitelisted = list(SPECIES_UNATHI) + culture_restriction = list(/singleton/origin_item/culture/autakh) sort_category = "Xenowear - Unathi" cost = 2 allowed_roles = list("Security Officer", "Head of Security", "Warden") @@ -322,6 +326,7 @@ path = /obj/item/organ/internal/anchor cost = 0 whitelisted = list(SPECIES_UNATHI) + culture_restriction = list(/singleton/origin_item/culture/autakh) sort_category = "Xenowear - Unathi" /datum/gear/augment/autakh/calf_override diff --git a/code/modules/client/preference_setup/loadout/items/xeno/vaurca.dm b/code/modules/client/preference_setup/loadout/items/xeno/vaurca.dm index c27129d0afc..1dc902b4b72 100644 --- a/code/modules/client/preference_setup/loadout/items/xeno/vaurca.dm +++ b/code/modules/client/preference_setup/loadout/items/xeno/vaurca.dm @@ -246,7 +246,7 @@ cost = 5 path = /obj/item/organ/internal/augment/tool/combitool/vaurca sort_category = "Xenowear - Vaurca" - whitelisted = list(SPECIES_VAURCA_WORKER, SPECIES_VAURCA_BULWARK) + whitelisted = list(SPECIES_VAURCA_WORKER, SPECIES_VAURCA_BULWARK, SPECIES_VAURCA_WARRIOR) /datum/gear/augment/vaurcatool/New() ..() @@ -255,6 +255,26 @@ augs["vaurca integrated toolset, left hand"] = /obj/item/organ/internal/augment/tool/combitool/vaurca/left gear_tweaks += new /datum/gear_tweak/path(augs) +/datum/gear/augment/vaurcasec + display_name = "vaurca integrated electric weapon" + description = "A Vaurca-designed robotic hand that can deliver a painful electric shock." + cost = 2 + path = /obj/item/organ/external/hand/right/vaurca/security + whitelisted = list(SPECIES_VAURCA_WARRIOR) + sort_category = "Xenowear - Vaurca" + allowed_roles = list("Security Officer", "Warden") + flags = GEAR_NO_SELECTION + +/datum/gear/augment/vaurcamed + display_name = "vaurca integrated biological analyser" + description = "A Vaurca-designed robotic hand capable of providing a medical scan of a target." + cost = 2 + path = /obj/item/organ/external/hand/right/vaurca/medical + whitelisted = list(SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_WORKER) + sort_category = "Xenowear - Vaurca" + allowed_roles = list("Physician", "Surgeon", "First Responder", "Medical Intern", "Psychiatrist", "Chemist") + flags = GEAR_NO_SELECTION + /datum/gear/augment/vaurcamag display_name = "vaurca integrated mag-claws" description = "An integrated magnetic grip system, designed for Vaurcae without easy access to magboots." @@ -262,4 +282,4 @@ path = /obj/item/organ/internal/augment/tool/vaurcamag sort_category = "Xenowear - Vaurca" whitelisted = list(SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_BULWARK) - allowed_roles = list("Shaft Miner", "Engineer", "Atmospheric Technician", "Engineering Apprentice", "Xenoarchaeologist") + allowed_roles = list("Shaft Miner", "Engineer", "Atmospheric Technician", "Engineering Apprentice", "Xenoarchaeologist") \ No newline at end of file diff --git a/code/modules/organs/subtypes/vaurca.dm b/code/modules/organs/subtypes/vaurca.dm index f8e807d4dcc..0cd88570dd3 100644 --- a/code/modules/organs/subtypes/vaurca.dm +++ b/code/modules/organs/subtypes/vaurca.dm @@ -425,3 +425,108 @@ /obj/item/organ/external/head/vaurca limb_flags = ORGAN_CAN_AMPUTATE | ORGAN_CAN_MAIM encased = null + +//Beefier augments + +/obj/item/organ/external/hand/right/vaurca/security + name = "security grasper" + action_button_name = "Activate Integrated Electroshock Weapon" + dislocated = -1 + encased = "support frame" + robotize_type = PROSTHETIC_VAURCA + +/obj/item/organ/external/hand/right/vaurca/security/refresh_action_button() + . = ..() + if(.) + action.button_icon_state = "baton" + if(action.button) + action.button.update_icon() + +/obj/item/organ/external/hand/right/vaurca/security/attack_self(var/mob/user) + . = ..() + + if(.) + + if(owner.last_special > world.time) + to_chat(owner, "\The [src] is still recharging!") + return + + if(owner.stat || owner.paralysis || owner.stunned || owner.weakened) + to_chat(owner, "You can not use \the [src] in your current state!") + return + + if(is_broken()) + to_chat(owner, "\The [src] is too damaged to be used!") + return + + if(is_bruised()) + spark(get_turf(owner), 3) + + var/obj/item/grab/G = owner.get_active_hand() + if(!istype(G)) + to_chat(owner, "You must grab someone before trying to use your [src]!") + return + + if(owner.nutrition <= 150) //slightly more energy-efficient than aut'akh bc bugs are better at augments + to_chat(owner, "Your energy reserves are too low to use your [src]!") + return + + if(ishuman(G.affecting)) + + var/mob/living/carbon/human/H = G.affecting + var/target_zone = check_zone(owner.zone_sel.selecting) + + owner.last_special = world.time + 100 + owner.adjustNutritionLoss(50) + + if(owner.a_intent == I_HURT) + H.electrocute_act(10, owner, def_zone = target_zone) + else + H.stun_effect_act(0, 50, target_zone, owner) + + owner.visible_message("[H] has been prodded with [src] by [owner]!") + playsound(get_turf(owner), 'sound/weapons/Egloves.ogg', 50, 1, -1) + +/obj/item/organ/external/hand/right/vaurca/medical + name = "medical grasper" + action_button_name = "Activate Integrated Biological Analyser" + dislocated = -1 + encased = "support frame" + robotize_type = PROSTHETIC_VAURCA + +/obj/item/organ/external/hand/right/vaurca/medical/refresh_action_button() + . = ..() + if(.) + action.button_icon_state = "health" + if(action.button) + action.button.update_icon() + +/obj/item/organ/external/hand/right/vaurca/medical/attack_self(var/mob/user) + . = ..() + + if(.) + + if(owner.last_special > world.time) + to_chat(owner, "\The [src] is still recharging!") + return + + if(owner.stat || owner.paralysis || owner.stunned || owner.weakened) + to_chat(owner, "You can not use \the [src] in your current state!") + return + + if(is_broken()) + to_chat(owner, "\The [src] is too damaged to be used!") + return + + if(is_bruised()) + spark(get_turf(owner), 3) + + var/obj/item/grab/G = owner.get_active_hand() + if(!istype(G)) + to_chat(owner, "You must grab someone before trying to analyze their health!") + return + + owner.last_special = world.time + 50 + if(ishuman(G.affecting)) + var/mob/living/carbon/human/H = G.affecting + health_scan_mob(H, owner) diff --git a/html/changelogs/rustingwithyou - cyberpunk2477.yml b/html/changelogs/rustingwithyou - cyberpunk2477.yml new file mode 100644 index 00000000000..09d02a1d0fb --- /dev/null +++ b/html/changelogs/rustingwithyou - cyberpunk2477.yml @@ -0,0 +1,43 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +# balance +# admin +# backend +# security +# refactor +################################# + +# Your name. +author: RustingWithYou + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Adds medical and security graspers for Vaurca, similar to what Aut'akh currently have." + - tweak: "Tweaks the loadout cost of some whitelist-restricted augments to be similar to the Aut'akh ones." + - tweak: "Aut'akh augments are now culture-restricted."