diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm
index 8c3982369ef..e7e6a941796 100644
--- a/code/__defines/mobs.dm
+++ b/code/__defines/mobs.dm
@@ -128,6 +128,7 @@
#define BP_AUG_AIR_ANALYZER "integrated air analyzer"
#define BP_AUG_LANGUAGE "integrated language processor"
#define BP_AUG_PSI "psionic receiver"
+#define BP_AUG_CALF_OVERRIDE "calf overdrive"
//Organ defines
#define PROCESS_ACCURACY 10
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index e35125ee228..6d8a4bd841b 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -695,7 +695,7 @@ modules/mob/mob_movement.dm if you move you will be zoomed out
modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
*/
//Looking through a scope or binoculars should /not/ improve your periphereal vision. Still, increase viewsize a tiny bit so that sniping isn't as restricted to NSEW
-/obj/item/proc/zoom(var/mob/M, var/tileoffset = 14, var/viewsize = 9) //tileoffset is client view offset in the direction the user is facing. viewsize is how far out this thing zooms. 7 is normal view
+/obj/item/proc/zoom(var/mob/M, var/tileoffset = 14, var/viewsize = 9, var/do_device_check = TRUE) //tileoffset is client view offset in the direction the user is facing. viewsize is how far out this thing zooms. 7 is normal view
if (!M)
return
@@ -714,7 +714,7 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
else if(!zoom && (global_hud.darkMask[1] in M.client.screen))
to_chat(M, SPAN_WARNING("Your visor gets in the way of looking through the [devicename]!"))
cannotzoom = 1
- else if(!zoom && M.get_active_hand() != src)
+ else if(do_device_check && !zoom && M.get_active_hand() != src)
to_chat(M, SPAN_WARNING("You are too distracted to look through the [devicename], perhaps if it was in your active hand this might work better."))
cannotzoom = 1
diff --git a/code/modules/client/preference_setup/loadout/loadout_xeno/unathi.dm b/code/modules/client/preference_setup/loadout/loadout_xeno/unathi.dm
index 482ac843225..c239e20893b 100644
--- a/code/modules/client/preference_setup/loadout/loadout_xeno/unathi.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_xeno/unathi.dm
@@ -140,26 +140,37 @@
sort_category = "Xenowear - Unathi"
flags = GEAR_HAS_DESC_SELECTION
-/datum/gear/augment/anchor
+/datum/gear/augment/autakh
display_name = "soul anchor"
- description = "An implant that connects the Aut'akh to the Mesh."
+ description = "A rune inscribed mirror or piece of glass placed behind the eyes. Believed to be the 'Window to the Soul' and house the concentrated spirit of an individual."
path = /obj/item/organ/internal/anchor
cost = 1
whitelisted = list("Unathi")
sort_category = "Xenowear - Unathi"
-/datum/gear/augment/haemodynamic
- display_name = "haemodynamic control system"
- description = "An Aut'akh augment that allows the user to stabilize themselves."
- path = /obj/item/organ/internal/augment/haemodynamic
- cost = 4
- whitelisted = list("Unathi")
- sort_category = "Xenowear - Unathi"
+/datum/gear/augment/autakh/calf_override
+ display_name = "calf overdrive"
+ description = "An Aut'akh augment that allows the user to run at high speeds without the cost of stamina, causes damage to the lower body when used."
+ path = /obj/item/organ/internal/augment/calf_override
-/datum/gear/augment/adrenal
- display_name = "adrenal management system"
- description = "A series of aut'akh mechanical stimulants and extra glands placed along the adrenal system. ."
- path = /obj/item/organ/internal/augment/adrenal
- cost = 4
- whitelisted = list("Unathi")
- sort_category = "Xenowear - Unathi"
+/datum/gear/augment/autakh/protein_valve
+ display_name = "protein breakdown valve"
+ description = "An aut'akh valve on the chest that releases a dangerous chemical into the stomach, forcing rapid digestion for immediate adrenal stimulation. Causes long-term damage."
+ path = /obj/item/organ/internal/augment/protein_valve
+
+/datum/gear/augment/autakh/venomous_rest
+ display_name = "venomous rest implant"
+ description = "An aut'akh compartment connected to the blood system that administers a traditional Unathi healing agent."
+ path = /obj/item/organ/internal/augment/venomous_rest
+
+/datum/gear/augment/autakh/eyes
+ display_name = "eye augment selection"
+ description = "A selection of au'takh eye augments."
+ path = /obj/item/organ/internal/augment/farseer_eye
+
+/datum/gear/augment/autakh/eyes/New()
+ ..()
+ var/augs = list()
+ augs["farseer eye"] = /obj/item/organ/internal/augment/farseer_eye
+ augs["eye flashlight"] = /obj/item/organ/internal/augment/eye_flashlight
+ gear_tweaks += new /datum/gear_tweak/path(augs)
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm
index 006790b4a79..da71e6c4b66 100644
--- a/code/modules/mob/living/carbon/human/species/species.dm
+++ b/code/modules/mob/living/carbon/human/species/species.dm
@@ -517,6 +517,11 @@
log_debug("Error: Species with special sprint mechanics has not overridden cost function.")
return 0
+ var/obj/item/organ/internal/augment/calf_override/C = H.internal_organs_by_name[BP_AUG_CALF_OVERRIDE]
+ if(C && !C.is_broken())
+ cost = 0
+ C.do_run_act()
+
var/remainder = 0
if (H.stamina > cost)
H.stamina -= cost
diff --git a/code/modules/organs/subtypes/autakh.dm b/code/modules/organs/subtypes/autakh.dm
index 309692d72f7..10376bb14f0 100644
--- a/code/modules/organs/subtypes/autakh.dm
+++ b/code/modules/organs/subtypes/autakh.dm
@@ -67,192 +67,181 @@
//internal organs
-/obj/item/organ/internal/kidneys/autakh
- name = "toxin screen"
- icon_state = "screen"
- robotic = 1
- robotic_name = null
- robotic_sprite = null
-
-/obj/item/organ/internal/kidneys/autakh/Initialize()
- mechassist()
- . = ..()
-
/obj/item/organ/internal/anchor
name = "soul anchor"
icon_state = "anchor"
organ_tag = "anchor"
parent_organ = BP_HEAD
robotic = 2
+ var/suffered_revelation = FALSE
/obj/item/organ/internal/anchor/Initialize()
robotize()
. = ..()
-/obj/item/organ/internal/eyes/autakh
- name = "bionic eyeballs"
- icon_state = "mk1eyes"
- singular_name = "bionic eye"
- action_button_name = "Toggle Bionic Eyes Sensors"
- robotic_name = null
- robotic_sprite = null
- robotic = 2
+/obj/item/organ/internal/anchor/process()
- var/static/list/hud_types = list(
- "Disabled",
- "Security",
- "Medical")
-
- var/selected_hud = "Disabled"
- var/disabled = FALSE
-
-/obj/item/organ/internal/eyes/autakh/Initialize()
- robotize()
- . = ..()
-
-/obj/item/organ/internal/eyes/autakh/refresh_action_button()
- . = ..()
- if(.)
- action.button_icon_state = "mk1eyes"
- if(action.button)
- action.button.UpdateIcon()
-
-/obj/item/organ/internal/eyes/autakh/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 your \the [src] in your current state!")
- return
-
- if(disabled || is_broken())
- to_chat(owner, "\The [src] shudders and sparks, unable to change its sensors!")
- return
-
- owner.last_special = world.time + 100
-
- var/choice = input("Select the Sensor Type.", "Bionic Eyes Sensors") as null|anything in hud_types
-
- selected_hud = choice
-
-/obj/item/organ/internal/eyes/autakh/process()
..()
if(!owner)
return
- if(disabled)
- return
- switch(selected_hud)
+ if(!suffered_revelation)
+ if(prob(0.1))
+ revelation()
+ suffered_revelation = TRUE
- if("Security")
- req_access = list(access_security)
- if(allowed(owner))
- process_sec_hud(owner, 1)
-
- if("Medical")
- req_access = list(access_medical)
- if(allowed(owner))
- process_med_hud(owner, 1)
-
-/obj/item/organ/internal/eyes/autakh/flash_act()
- if(owner)
- to_chat(owner, "Your [singular_name]'s retinal overlays are overloaded by the strong light!")
- owner.eye_blind = 5
- owner.eye_blurry = 5
- spark(get_turf(owner), 3)
- disabled = TRUE
- selected_hud = "Disabled"
- addtimer(CALLBACK(src, .proc/rearm), 40 SECONDS)
- return
-
-/obj/item/organ/internal/eyes/autakh/emp_act(severity)
+/obj/item/organ/internal/anchor/emp_act(severity)
..()
- disabled = TRUE
- selected_hud = "Disabled"
- addtimer(CALLBACK(src, .proc/rearm), 40 SECONDS)
-
-/obj/item/organ/internal/eyes/autakh/proc/rearm()
- if(!disabled)
- return
- disabled = FALSE
+ revelation()
+/obj/item/organ/internal/anchor/proc/revelation()
if(owner)
- to_chat(owner, "\The [singular_name]'s retinal overlays clicks and shifts!")
+ owner.hallucination += 20
-/obj/item/organ/internal/augment/adrenal
- name = "adrenal management system"
+/obj/item/organ/internal/augment/calf_override
+ name = "calf overdrive"
icon_state = "ams"
- organ_tag = "adrenal"
+ organ_tag = BP_AUG_CALF_OVERRIDE
+ parent_organ = BP_GROIN
+
+/obj/item/organ/internal/augment/calf_override/proc/do_run_act()
+ owner.apply_damage(1, BRUTE, BP_GROIN)
+
+/obj/item/organ/internal/augment/protein_valve
+ name = "protein breakdown valve"
+ icon_state = "screen"
+ organ_tag = "protein valve"
parent_organ = BP_CHEST
- action_button_icon = "ams"
- action_button_name = "Activate Adrenal Management System"
+ action_button_icon = "screen"
+ action_button_name = "Activate Protein Breakdown Valve"
cooldown = 300
activable = TRUE
-/obj/item/organ/internal/augment/adrenal/attack_self(var/mob/user)
+/obj/item/organ/internal/augment/protein_valve/attack_self(var/mob/user)
. = ..()
if(!.)
return FALSE
- to_chat(owner, "\The [src] activates, releasing a stream of chemicals into your veins!")
-
if(owner.reagents)
+ var/obj/item/organ/F = owner.internal_organs_by_name[BP_STOMACH]
- owner.vessel.remove_reagent("blood",rand(15,30))
- owner.reagents.add_reagent("paracetamol", 5)
- owner.reagents.add_reagent("norepinephrine", 5)
+ if(isnull(F))
+ return FALSE
-/obj/item/organ/internal/augment/adrenal/do_broken_act()
- if(owner.reagents)
- owner.reagents.add_reagent("toxin", 25)
- return TRUE
+ if(F.is_broken())
+ return FALSE
-/obj/item/organ/internal/augment/adrenal/do_bruised_act()
- if(owner.reagents)
- owner.reagents.add_reagent("toxin", 10)
- return FALSE
+ F.take_damage(10)
+ to_chat(owner, "\The [src] activates, releasing a stream of chemicals into your veins!")
-/obj/item/organ/internal/augment/haemodynamic
- name = "haemodynamic control system"
+ owner.reagents.add_reagent("adrenaline", 15)
+
+/obj/item/organ/internal/augment/venomous_rest
+ name = "venomous rest implant"
icon_state = "stabilizer"
- organ_tag = "haemodynamic"
+ organ_tag = "venomous rest"
parent_organ = BP_CHEST
- action_button_name = "Activate Haemodynamic Control System"
+ action_button_name = "Activate Venomous Rest Implant"
action_button_icon = "stabilizer"
cooldown = 300
activable = TRUE
-/obj/item/organ/internal/augment/haemodynamic/attack_self(var/mob/user)
+/obj/item/organ/internal/augment/venomous_rest/attack_self(var/mob/user)
. = ..()
if(!.)
return FALSE
- owner.adjustNutritionLoss(300)
- owner.adjustHydrationLoss(300)
-
- to_chat(owner, "\The [src] activates, releasing a stream of chemicals into your veins!")
-
if(owner.reagents)
- owner.reagents.add_reagent("coagulant", 15)
+ owner.reagents.add_reagent("norepinephrine", 10)
+ owner.reagents.add_reagent("tricordrazine", 10)
+ owner.reagents.add_reagent("stoxin", 15)
+ take_damage(15)
+ to_chat(owner, "\The [src] activates, releasing a stream of chemicals into your veins!")
-/obj/item/organ/internal/augment/haemodynamic/do_broken_act()
- if(owner.reagents)
- owner.vessel.remove_reagent("blood",rand(50,75))
- return TRUE
+/obj/item/organ/internal/augment/farseer_eye
+ name = "farseer eye"
+ icon_state = "hunterseye"
+ organ_tag = "farseer eye"
+ parent_organ = BP_HEAD
+ action_button_name = "Activate Farseer Eye"
+ action_button_icon = "hunterseye"
+ cooldown = 30
+ activable = TRUE
-/obj/item/organ/internal/augment/haemodynamic/do_bruised_act()
- if(owner.reagents)
- owner.vessel.remove_reagent("blood",rand(25,50))
- return FALSE
+/obj/item/organ/internal/augment/farseer_eye/attack_self(var/mob/user)
+ . = ..()
+
+ if(!.)
+ return FALSE
+
+ owner.visible_message("[user]'s eyes whirrs loudly as they focus ahead.")
+ take_damage(1)
+ zoom(owner,7,3, FALSE)
+
+/obj/item/organ/internal/augment/eye_flashlight
+ name = "eye flashlight"
+ icon_state = "mk1eyes"
+ organ_tag = "eye flashlight"
+ parent_organ = BP_HEAD
+ action_button_name = "Activate Eye Flashlight"
+ action_button_icon = "mk1eyes"
+ cooldown = 50
+ activable = TRUE
+ var/online = FALSE
+ var/warning_level = 0
+
+/obj/item/organ/internal/augment/eye_flashlight/attack_self(var/mob/user)
+ . = ..()
+
+ if(!.)
+ return FALSE
+
+ if(!online)
+ set_light(3, 2, LIGHT_COLOR_RED, uv = 0, angle = LIGHT_WIDE)
+ owner.change_eye_color(250, 130, 130)
+ owner.update_eyes()
+ online = TRUE
+ addtimer(CALLBACK(src, .proc/add_warning), 5 MINUTES)
+ addtimer(CALLBACK(src, .proc/add_warning), 6 MINUTES)
+ else
+ turn_off()
+
+/obj/item/organ/internal/augment/eye_flashlight/proc/turn_off()
+ online = FALSE
+ set_light(0)
+ if(owner.client)
+ owner.change_eye_color(owner.client.prefs.r_eyes, owner.client.prefs.g_eyes, owner.client.prefs.b_eyes)
+ owner.update_eyes()
+ warning_level = 0
+
+/obj/item/organ/internal/augment/eye_flashlight/emp_act(severity)
+ ..()
+ turn_off()
+
+/obj/item/organ/internal/augment/eye_flashlight/proc/add_warning()
+ if(online)
+
+ warning_level = min(warning_level+1,2)
+
+ if(warning_level >= 1)
+ to_chat(owner, SPAN_DANGER ("Your eyes are feeling warm!"))
+
+/obj/item/organ/internal/augment/eye_flashlight/process()
+
+ ..()
+
+ if(!owner)
+ return
+
+ if(warning_level >= 2)
+ var/obj/item/organ/internal/eyes/E = owner.get_eyes()
+ if(!E)
+ return
+ E.take_damage(1)
//limb implants
diff --git a/html/changelogs/alberyk-autakhaugs.yml b/html/changelogs/alberyk-autakhaugs.yml
new file mode 100644
index 00000000000..4d8deb4c6ae
--- /dev/null
+++ b/html/changelogs/alberyk-autakhaugs.yml
@@ -0,0 +1,6 @@
+author: Alberyk
+
+delete-after: True
+
+changes:
+ - tweak: "Reworked aut'akh augments."
\ No newline at end of file
diff --git a/icons/obj/action_buttons/organs.dmi b/icons/obj/action_buttons/organs.dmi
index 0db0a83f09d..3895aee651c 100644
Binary files a/icons/obj/action_buttons/organs.dmi and b/icons/obj/action_buttons/organs.dmi differ