Taj rebalance patch (#22451)

This is based on requests from the taj lore team. A future PR will do
more for the sensitive hearing as well, but the PR was growing by quite
a lot so it was best to split it up.

New: 
- Tajaran eyes can now extend their vision by 3 tiles while they stand
still.
- Taj can hear people whispering and talking into radios from 1 tiles
further away, if they are listening intently.

Bugfixes:
- Flashbangs no longer fuck taj up as much unless they got intent listen
active.
- The message for autakh farseer eyes no longer gives the wrong message
if it is disabled by moving.

Balance & Change:
- Taj have new heights. Before it was 150 to 190 cm
  - Hharar: 145-180
  - M'sai: 155-175
  - Zhan: 160-195
- The brute mod have been adjusted on tajara
  - Zhan: 10% -> 5%
  - Hharar: 20% -> 10%
  - M'sai: 30% -> 15%

Backend stuff:
- Action buttons were changed to accept lists, so multiple actions can
be given to a single item.
This commit is contained in:
Casper3667
2026-06-01 12:36:57 +02:00
committed by GitHub
parent 1b60e9948d
commit 8e53577ee7
14 changed files with 162 additions and 32 deletions
+34 -8
View File
@@ -2,14 +2,16 @@
name = "light sensitive eyes"
desc = "A pair of Tajaran eyes accustomed to the low light conditions of Adhomai."
icon = 'icons/obj/organs/tajara_organs.dmi'
action_button_name = "Activate Low Light Vision"
default_action_type = /datum/action/item_action/organ/night_eyes
action_button_name = list("Activate Low Light Vision", "Extend vision")
default_action_type = list(/datum/action/item_action/organ/night_eyes, /datum/action/item_action/organ/extended_eyes)
relative_size = 8
var/night_vision = FALSE
var/datum/client_color/vision_color = /datum/client_color/monochrome
var/datum/client_color/vision_mechanical_color = /datum/client_color/monochrome
var/eye_emote = "'s eyes dilate!"
var/allowed_model = PROSTHETIC_TESLA //what robotic model allows this eyes to use the night vision
var/cooldown = 30
zoom_out_message = "'s eyes widens as they stop focusing ahead."
/obj/item/organ/internal/eyes/night/Destroy()
disable_night_vision()
@@ -25,25 +27,49 @@
/obj/item/organ/internal/eyes/night/attack_self(var/mob/user)
. = ..()
/obj/item/organ/internal/eyes/night/proc/ability_check()
if(owner.last_special > world.time)
return
return FALSE
if(owner.stat || owner.paralysis || owner.stunned || owner.weakened)
return
return FALSE
if(is_broken())
return
return FALSE
if(status & ORGAN_ROBOT)
if(!robotic_check())
return
return FALSE
owner.last_special = world.time + 20
return TRUE
/obj/item/organ/internal/eyes/night/proc/night_vision()
if(attack_self())
return
if(!ability_check())
return
if(!night_vision)
enable_night_vision()
else
disable_night_vision()
owner.last_special = world.time + 20
/obj/item/organ/internal/eyes/night/proc/extended_vision()
if(attack_self())
return
if(!ability_check())
return
if(zoom)
owner.visible_message("[SPAN_BOLD("\The [owner]")]'s eyes widens as they stop focusing ahead.", range = 3)
else
owner.visible_message("[SPAN_BOLD("\The [owner]")]'s eyes begins to narrow as they focus on something in the distance.", range = 3)
if(!do_after(owner, 1.5 SECONDS))
owner.visible_message("[SPAN_BOLD("\The [owner]")]'s eyes stop focusing.", range = 3)
return
owner.visible_message("[SPAN_BOLD("\The [owner]")]'s eyes narrows as their lenses shift to focus ahead.", range = 3)
zoom(owner, 3, 7, FALSE, FALSE)
/obj/item/organ/internal/eyes/night/proc/robotic_check(var/mob/user)
if(robotize_type == allowed_model)
@@ -89,7 +115,7 @@
show_message = FALSE
break
if(show_message && eye_emote)
owner.visible_message("<b>[owner]</b>[eye_emote]")
owner.visible_message("[SPAN_BOLD("\The [owner]")][eye_emote]")
night_vision = TRUE
if(can_change_invisible())
@@ -3,6 +3,8 @@
desc = "A set of four vaurcaesian eyes, adapted to the low or no light tunnels of Sedantis."
icon = 'icons/obj/organs/vaurca_organs.dmi'
robotic_sprite = FALSE
action_button_name = list("Activate Low Light Vision")
default_action_type = list(/datum/action/item_action/organ/night_eyes)
vision_color = /datum/client_color/vaurca
vision_mechanical_color = /datum/client_color/monochrome
eye_emote = "'s eyes gently shift."