mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-30 16:38:22 +01:00
Reworks aut'akh augments (#9079)
This pr changes all aut'akh augments and adds a couple of new ones, with effects and the like. Requested by sleepy.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
@@ -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
|
||||
|
||||
@@ -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, "<span class='danger'>\The [src] is still recharging!</span>")
|
||||
return
|
||||
|
||||
if(owner.stat || owner.paralysis || owner.stunned || owner.weakened)
|
||||
to_chat(owner, "<span class='danger'>You can not use your \the [src] in your current state!</span>")
|
||||
return
|
||||
|
||||
if(disabled || is_broken())
|
||||
to_chat(owner, "<span class='danger'>\The [src] shudders and sparks, unable to change its sensors!</span>")
|
||||
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, "<span class='notice'>Your [singular_name]'s retinal overlays are overloaded by the strong light!</span>")
|
||||
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, "<span class='notice'>\The [singular_name]'s retinal overlays clicks and shifts!</span>")
|
||||
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, "<span class='notice'>\The [src] activates, releasing a stream of chemicals into your veins!</span>")
|
||||
|
||||
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, "<span class='notice'>\The [src] activates, releasing a stream of chemicals into your veins!</span>")
|
||||
|
||||
/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, "<span class='notice'>\The [src] activates, releasing a stream of chemicals into your veins!</span>")
|
||||
|
||||
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, "<span class='notice'>\The [src] activates, releasing a stream of chemicals into your veins!</span>")
|
||||
|
||||
/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("<b>[user]'s</b> 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
|
||||
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
author: Alberyk
|
||||
|
||||
delete-after: True
|
||||
|
||||
changes:
|
||||
- tweak: "Reworked aut'akh augments."
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 18 KiB |
Reference in New Issue
Block a user