Cyborg Update (#4992)

Changes / Fixes a few things around borgs:

    A borgs voice is now garbled if its damaged too much
    Completely broken components are now accounted for in health
    The taser cooling module can now be applied to sec borgs again
    Added a lower power warning ability
    Fixes a mistake in the NT Aggressive lawset

Fixes #4112
This commit is contained in:
Werner
2018-07-20 21:11:13 +02:00
committed by GitHub
parent 814dae3821
commit da454793fe
9 changed files with 85 additions and 9 deletions
+1 -1
View File
@@ -125,7 +125,7 @@
return verb
/mob/living/carbon/human/handle_speech_problems(var/message, var/verb)
/mob/living/carbon/human/handle_speech_problems(var/message, var/verb, var/message_mode)
message = handle_speech_muts(message,verb)
for(var/datum/brain_trauma/trauma in get_traumas())
if(!trauma.suppressed)
+2 -2
View File
@@ -98,7 +98,7 @@ proc/get_radio_key_from_channel(var/channel)
/mob/living/proc/is_muzzled()
return 0
/mob/living/proc/handle_speech_problems(var/message, var/verb)
/mob/living/proc/handle_speech_problems(var/message, var/verb, var/message_mode)
var/list/returns[3]
var/speech_problem_flag = 0
if((HULK in mutations) && health >= 25 && length(message))
@@ -205,7 +205,7 @@ proc/get_radio_key_from_channel(var/channel)
if(!(speaking && (speaking.flags & NO_STUTTER)))
message = handle_autohiss(message, speaking)
var/list/handle_s = handle_speech_problems(message, verb)
var/list/handle_s = handle_speech_problems(message, verb, message_mode)
message = handle_s[1]
verb = handle_s[2]
@@ -34,7 +34,6 @@
if(wrapped)
qdel(wrapped)
wrapped = new/obj/item/broken_device
wrapped.icon_state = brokenstate // Module-specific broken icons! Yay!
@@ -42,6 +41,9 @@
uninstall()
installed = -1
/datum/robot_component/proc/get_damage(var/type)
return Clamp(brute_damage + electronics_damage,0,max_damage)
/datum/robot_component/proc/take_damage(brute, electronics, sharp, edge)
if(installed != 1) return
@@ -212,3 +212,13 @@
custom_emote(m_type,message)
return
/mob/living/silicon/robot/verb/powerwarn()
set category = "Robot Commands"
set name = "Power Warning"
if(!is_component_functioning("power cell") || !cell || !cell.charge)
visible_message("The power warning light on <span class='name'>[src]</span> flashes urgently.",\
"You announce you are operating in low power mode.")
playsound(loc, 'sound/machines/buzz-two.ogg', 50, 0)
else
to_chat(src, "<span class='warning'>You can only use this emote when you're out of charge.</span>")
@@ -10,14 +10,20 @@
var/amount = 0
for(var/V in components)
var/datum/robot_component/C = components[V]
if(C.installed != 0) amount += C.brute_damage
if(C.installed)
amount += Clamp(C.brute_damage,0,C.max_damage)
else if(C.installed == -1)
amount += C.max_damage/2
return amount
/mob/living/silicon/robot/getFireLoss()
var/amount = 0
for(var/V in components)
var/datum/robot_component/C = components[V]
if(C.installed != 0) amount += C.electronics_damage
if(C.installed)
amount += Clamp(C.electronics_damage,0,C.max_damage)
else if(C.installed == -1)
amount += C.max_damage/2
return amount
/mob/living/silicon/robot/adjustBruteLoss(var/amount)
@@ -533,9 +533,7 @@ var/global/list/robot_modules = list(
"Classic" = "secborg",
"Spider" = "spidersec",
"Heavy" = "heavysec"
)
supported_upgrades = list(/obj/item/robot_parts/robot_component/jetpack)
/obj/item/weapon/robot_module/security/general/New()
..()
+21
View File
@@ -4,6 +4,27 @@
/mob/living/silicon/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name)
log_say("[key_name(src)] : [message]",ckey=key_name(src))
/mob/living/silicon/robot/handle_speech_problems(var/message, var/verb, var/message_mode)
var/speech_problem_flag = 0
//Handle gibberish when components are damaged
if(message_mode)
//If we have a radio message, just look at the damage of the radio
var/datum/robot_component/C = get_component("radio")
if(C.get_damage())
speech_problem_flag = 1
message=Gibberish(message,C.max_damage/C.get_damage())
else
var/damaged = 100-(Clamp(health,0,maxHealth)/maxHealth)*100
if(damaged > 40)
speech_problem_flag = 1
message = Gibberish(message,damaged-10)
var/list/returns[3]
returns[1] = message
returns[2] = verb
returns[3] = speech_problem_flag
return returns
/mob/living/silicon/robot/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name)
..()
if(message_mode)