mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-15 09:03:53 +01:00
robot upgrade overhaul
This commit is contained in:
@@ -381,15 +381,17 @@
|
||||
if((organ in H.organs) || (organ in H.internal_organs))
|
||||
qdel(organ)
|
||||
|
||||
if(H.organs) H.organs.Cut()
|
||||
if(H.internal_organs) H.internal_organs.Cut()
|
||||
if(H.organs_by_name) H.organs_by_name.Cut()
|
||||
if(H.internal_organs_by_name) H.internal_organs_by_name.Cut()
|
||||
if(H.organs) H.organs.Cut()
|
||||
if(H.internal_organs) H.internal_organs.Cut()
|
||||
if(H.organs_by_name) H.organs_by_name.Cut()
|
||||
if(H.internal_organs_by_name) H.internal_organs_by_name.Cut()
|
||||
if(H.bad_external_organs) H.bad_external_organs.Cut()
|
||||
|
||||
H.organs = list()
|
||||
H.internal_organs = list()
|
||||
H.organs_by_name = list()
|
||||
H.internal_organs_by_name = list()
|
||||
H.bad_external_organs = list()
|
||||
|
||||
for(var/limb_type in has_limbs)
|
||||
var/list/organ_data = has_limbs[limb_type]
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
icon_state = "robotanalyzer"
|
||||
item_state = "analyzer"
|
||||
desc = "A hand-held scanner able to diagnose robotic injuries."
|
||||
description_info = "Alt-click to toggle between robot analysis and robot module scan mode."
|
||||
slot_flags = SLOT_BELT
|
||||
throwforce = 3
|
||||
w_class = ITEMSIZE_SMALL
|
||||
@@ -18,6 +19,10 @@
|
||||
/obj/item/device/robotanalyzer/attack(mob/living/M as mob, mob/living/user as mob)
|
||||
do_scan(M, user)
|
||||
|
||||
/obj/item/device/robotanalyzer/AltClick(mob/user)
|
||||
mode = !mode
|
||||
user.show_message(span_blue("[mode ? "Toggled to cyborg analyzing mode." : "Toggled to cyborg upgrade scan mode."]"), 1)
|
||||
|
||||
/obj/item/device/robotanalyzer/proc/do_scan(mob/living/M as mob, mob/living/user as mob)
|
||||
if((CLUMSY in user.mutations) && prob(50))
|
||||
to_chat(user, span_red("You try to analyze the floor's vitals!"))
|
||||
@@ -43,30 +48,114 @@
|
||||
user.visible_message("<span class='notice'>\The [user] has analyzed [M]'s components.</span>","<span class='notice'>You have analyzed [M]'s components.</span>")
|
||||
switch(scan_type)
|
||||
if("robot")
|
||||
var/BU = M.getFireLoss() > 50 ? "<b>[M.getFireLoss()]</b>" : M.getFireLoss()
|
||||
var/BR = M.getBruteLoss() > 50 ? "<b>[M.getBruteLoss()]</b>" : M.getBruteLoss()
|
||||
user.show_message(span_blue("Analyzing Results for [M]:\n\t Overall Status: [M.stat > 1 ? "fully disabled" : "[M.health - M.halloss]% functional"]"))
|
||||
user.show_message("\t Key: [span_orange("Electronics")]/[span_red("Brute")]", 1)
|
||||
user.show_message("\t Damage Specifics: [span_orange("[BU]")] - [span_red("[BR]")]")
|
||||
if(M.tod && M.stat == DEAD)
|
||||
user.show_message(span_blue("Time of Disable: [M.tod]"))
|
||||
var/mob/living/silicon/robot/H = M
|
||||
var/list/damaged = H.get_damaged_components(1,1,1)
|
||||
user.show_message(span_blue("Localized Damage:"),1)
|
||||
if(length(damaged)>0)
|
||||
for(var/datum/robot_component/org in damaged)
|
||||
user.show_message(span_blue(text("\t []: [][] - [] - [] - []", \
|
||||
span_blue(capitalize(org.name)), \
|
||||
(org.installed == -1) ? "[span_red("<b>DESTROYED</b>")] " :"",\
|
||||
(org.electronics_damage > 0) ? "[span_orange("[org.electronics_damage]")]" :0, \
|
||||
(org.brute_damage > 0) ? "[span_red("[org.brute_damage]")]" :0, \
|
||||
(org.toggled) ? "Toggled ON" : "[span_red("Toggled OFF")]",\
|
||||
(org.powered) ? "Power ON" : "[span_red("Power OFF")]")),1)
|
||||
if(mode)
|
||||
var/BU = M.getFireLoss() > 50 ? "<b>[M.getFireLoss()]</b>" : M.getFireLoss()
|
||||
var/BR = M.getBruteLoss() > 50 ? "<b>[M.getBruteLoss()]</b>" : M.getBruteLoss()
|
||||
user.show_message(span_blue("Analyzing Results for [M]:\n\t Overall Status: [M.stat > 1 ? "fully disabled" : "[M.health - M.halloss]% functional"]"))
|
||||
user.show_message("\t Key: [span_orange("Electronics")]/[span_red("Brute")]", 1)
|
||||
user.show_message("\t Damage Specifics: [span_orange("[BU]")] - [span_red("[BR]")]")
|
||||
if(M.tod && M.stat == DEAD)
|
||||
user.show_message(span_blue("Time of Disable: [M.tod]"))
|
||||
var/mob/living/silicon/robot/H = M
|
||||
var/obj/item/weapon/cell/cell = H.get_cell()
|
||||
if(cell)
|
||||
var/cell_charge = round(cell.percent())
|
||||
var/cell_text
|
||||
if(cell_charge > 60)
|
||||
cell_text = span_green("[cell_charge]")
|
||||
else if (cell_charge > 30)
|
||||
cell_text = span_yellow("[cell_charge]")
|
||||
else if (cell_charge > 10)
|
||||
cell_text = span_orange("[cell_charge]")
|
||||
else if (cell_charge > 1)
|
||||
cell_text = span_red("[cell_charge]")
|
||||
else
|
||||
cell_text = span_red("<b>[cell_charge]<b>")
|
||||
user.show_message("\t Power Cell Status: [span_blue("[capitalize(cell.name)]")] at [cell_text]% charge")
|
||||
var/list/damaged = H.get_damaged_components(1,1,1)
|
||||
user.show_message(span_blue("Localized Damage:"),1)
|
||||
if(length(damaged)>0)
|
||||
for(var/datum/robot_component/org in damaged)
|
||||
user.show_message(span_blue(text("\t []: [][] - [] - [] - []", \
|
||||
span_blue(capitalize(org.name)), \
|
||||
(org.installed == -1) ? "[span_red("<b>DESTROYED</b>")] " :"",\
|
||||
(org.electronics_damage > 0) ? "[span_orange("[org.electronics_damage]")]" :0, \
|
||||
(org.brute_damage > 0) ? "[span_red("[org.brute_damage]")]" :0, \
|
||||
(org.toggled) ? "Toggled ON" : "[span_red("Toggled OFF")]",\
|
||||
(org.powered) ? "Power ON" : "[span_red("Power OFF")]")),1)
|
||||
else
|
||||
user.show_message(span_blue("\t Components are OK."),1)
|
||||
if(H.emagged && prob(5))
|
||||
user.show_message(span_red("\t ERROR: INTERNAL SYSTEMS COMPROMISED"),1)
|
||||
user.show_message(span_blue("Operating Temperature: [M.bodytemperature-T0C]°C ([M.bodytemperature*1.8-459.67]°F)"), 1)
|
||||
else
|
||||
user.show_message(span_blue("\t Components are OK."),1)
|
||||
if(H.emagged && prob(5))
|
||||
user.show_message(span_red("\t ERROR: INTERNAL SYSTEMS COMPROMISED"),1)
|
||||
user.show_message(span_blue("Operating Temperature: [M.bodytemperature-T0C]°C ([M.bodytemperature*1.8-459.67]°F)"), 1)
|
||||
var/mob/living/silicon/robot/H = M
|
||||
var/obj/item/weapon/cell/cell = H.get_cell()
|
||||
user.show_message(span_blue("Upgrade Analyzing Results for [M]:"))
|
||||
if(cell)
|
||||
user.show_message("\t Power Cell Details: [span_blue("[capitalize(cell.name)]")] with a capacity of [cell.maxcharge] at [round(cell.percent())]% charge")
|
||||
var/show_title = TRUE
|
||||
for(var/datum/design/item/prosfab/robot_upgrade/utility/upgrade)
|
||||
var/needs_module = initial(initial(upgrade.build_path).require_module)
|
||||
if((!H.module && needs_module) || !initial(upgrade.name) || (H.stat != DEAD && initial(upgrade.name) == "Emergency Restart Module"))
|
||||
continue
|
||||
if(show_title)
|
||||
user.show_message("\t Utility Modules, used for modifying purposes:")
|
||||
show_title = FALSE
|
||||
if(H.stat == DEAD)
|
||||
if(initial(upgrade.name) == "Emergency Restart Module")
|
||||
user.show_message(span_blue("\t\t [capitalize(initial(upgrade.name))]: [span_green("Usable")]"))
|
||||
else
|
||||
user.show_message(span_blue("\t\t [capitalize(initial(upgrade.name))]: [span_green("Usable")]"))
|
||||
show_title = TRUE
|
||||
for(var/datum/design/item/prosfab/robot_upgrade/basic/upgrade)
|
||||
var/needs_module = initial(initial(upgrade.build_path).require_module)
|
||||
if((!H.module && needs_module) || !initial(upgrade.name) || H.stat == DEAD)
|
||||
continue
|
||||
if(show_title)
|
||||
user.show_message("\t Basic Modules, used for direct upgrade purposes:")
|
||||
show_title = FALSE
|
||||
if(H.has_basic_upgrade(initial(upgrade.build_path)) == "")
|
||||
user.show_message(span_blue("\t\t [capitalize(initial(upgrade.name))]: [span_red("<b>ERROR</b>")]"))
|
||||
else
|
||||
user.show_message(span_blue("\t\t [capitalize(initial(upgrade.name))]: [H.has_basic_upgrade(initial(upgrade.build_path)) ? span_green("Installed") : span_red("Missing")]"))
|
||||
show_title = TRUE
|
||||
for(var/datum/design/item/prosfab/robot_upgrade/advanced/upgrade)
|
||||
var/needs_module = initial(initial(upgrade.build_path).require_module)
|
||||
if((!H.module && needs_module) || !initial(upgrade.name) || H.stat == DEAD)
|
||||
continue
|
||||
if(show_title)
|
||||
user.show_message("\t Advanced Modules, used for module upgrade purposes:")
|
||||
show_title = FALSE
|
||||
if(H.has_advanced_upgrade(initial(upgrade.build_path)) == "")
|
||||
user.show_message(span_blue("\t\t [capitalize(initial(upgrade.name))]: [span_red("<b>ERROR</b>")]"))
|
||||
else
|
||||
user.show_message(span_blue("\t\t [capitalize(initial(upgrade.name))]: [H.has_advanced_upgrade(initial(upgrade.build_path)) ? span_green("Installed") : span_red("Missing")]"))
|
||||
show_title = TRUE
|
||||
for(var/datum/design/item/prosfab/robot_upgrade/restricted/upgrade)
|
||||
var/needs_module = initial(initial(upgrade.build_path).require_module)
|
||||
if((!H.module && needs_module) || !initial(upgrade.name) || !H.supports_upgrade(initial(upgrade.build_path)) || H.stat == DEAD)
|
||||
continue
|
||||
if(show_title)
|
||||
user.show_message("\t Restricted Modules, used for module upgrade purposes on specific chassis:")
|
||||
show_title = FALSE
|
||||
if(H.has_restricted_upgrade(initial(upgrade.build_path)) == "")
|
||||
user.show_message(span_blue("\t\t [capitalize(initial(upgrade.name))]: [span_red("<b>ERROR</b>")]"))
|
||||
else
|
||||
user.show_message(span_blue("\t\t [capitalize(initial(upgrade.name))]: [H.has_restricted_upgrade(initial(upgrade.build_path)) ? span_green("Installed") : span_red("Missing")]"))
|
||||
show_title = TRUE
|
||||
for(var/datum/design/item/prosfab/robot_upgrade/no_prod/upgrade)
|
||||
var/needs_module = initial(initial(upgrade.build_path).require_module)
|
||||
var/hidden = initial(initial(upgrade.build_path).hidden_from_scan)
|
||||
if((!H.module && needs_module) || !initial(upgrade.name) || hidden || H.stat == DEAD)
|
||||
continue
|
||||
if(show_title)
|
||||
user.show_message("\t Special Modules, used for recreation purposes:")
|
||||
show_title = FALSE
|
||||
if(H.has_no_prod_upgrade(initial(upgrade.build_path)) == "")
|
||||
user.show_message(span_blue("\t\t [capitalize(initial(upgrade.name))]: [span_red("<b>ERROR</b>")]"))
|
||||
else
|
||||
user.show_message(span_blue("\t\t [capitalize(initial(upgrade.name))]: [H.has_no_prod_upgrade(initial(upgrade.build_path)) ? span_green("Installed") : span_red("Missing")]"))
|
||||
|
||||
if("prosthetics")
|
||||
|
||||
@@ -109,7 +198,7 @@
|
||||
|
||||
var/output = {"<span class='notice'>Analyzing Results for \the [Mecha]:</span><br>
|
||||
<b>Chassis Integrity: </b> [integrity]%<br>
|
||||
<b>Powercell charge: </b>[isnull(cell_charge)?"No powercell installed":"[Mecha.cell.percent()]%"]<br>
|
||||
<b>Powercell charge: </b>[isnull(cell_charge)?"No powercell installed":"[capitalize(initial(Mecha.cell.name))] at [Mecha.cell.percent()]%"]<br>
|
||||
<b>Air source: </b>[Mecha.use_internal_tank?"Internal Airtank":"Environment"]<br>
|
||||
<b>Airtank pressure: </b>[tank_pressure]kPa<br>
|
||||
<b>Airtank temperature: </b>[tank_temperature]K|[tank_temperature - T0C]°C<br>
|
||||
|
||||
@@ -1416,8 +1416,8 @@
|
||||
return cell
|
||||
|
||||
/mob/living/silicon/robot/lay_down()
|
||||
. = ..()
|
||||
update_icon()
|
||||
. = ..()
|
||||
update_icon()
|
||||
|
||||
/mob/living/silicon/robot/verb/rest_style()
|
||||
set name = "Switch Rest Style"
|
||||
@@ -1437,3 +1437,75 @@
|
||||
rest_style = tgui_alert(src, "Select resting pose", "Resting Pose", sprite_datum.rest_sprite_options)
|
||||
if(!rest_style)
|
||||
rest_style = "Default"
|
||||
|
||||
// Those basic ones require quite detailled checks on the robot's vars to see if they are installed!
|
||||
/mob/living/silicon/robot/proc/has_basic_upgrade(var/given_type)
|
||||
if(given_type == /obj/item/borg/upgrade/basic/vtec)
|
||||
return (/mob/living/silicon/robot/proc/toggle_vtec in verbs)
|
||||
else if(given_type == /obj/item/borg/upgrade/basic/sizeshift)
|
||||
return (/mob/living/proc/set_size in verbs)
|
||||
else if(given_type == /obj/item/borg/upgrade/basic/syndicate)
|
||||
return emag_items
|
||||
else if(given_type == /obj/item/borg/upgrade/basic/language)
|
||||
return (speech_synthesizer_langs.len > 20) // Service with the most has 18
|
||||
return null
|
||||
|
||||
// We check for the module only here
|
||||
/mob/living/silicon/robot/proc/has_upgrade_module(var/given_type)
|
||||
var/obj/T = locate(given_type) in module
|
||||
if(!T)
|
||||
T = locate(given_type) in module.contents
|
||||
if(!T)
|
||||
T = locate(given_type) in module.modules
|
||||
return T
|
||||
|
||||
// Most of the advanced ones, we can easily check, but a few special cases exist and need to be handled specially
|
||||
/mob/living/silicon/robot/proc/has_advanced_upgrade(var/given_type)
|
||||
if(given_type == /obj/item/borg/upgrade/advanced/bellysizeupgrade)
|
||||
var/obj/item/device/dogborg/sleeper/T = has_upgrade_module(/obj/item/device/dogborg/sleeper)
|
||||
if(T && T.upgraded_capacity)
|
||||
return T
|
||||
else
|
||||
return "" // Return this to have the analyzer show an error if the module is missing. FALSE / NULL are used for missing upgrades themselves
|
||||
if(given_type == /obj/item/borg/upgrade/advanced/jetpack)
|
||||
return has_upgrade_module(/obj/item/weapon/tank/jetpack/carbondioxide)
|
||||
if(given_type == /obj/item/borg/upgrade/advanced/advhealth)
|
||||
return has_upgrade_module(/obj/item/device/healthanalyzer/advanced)
|
||||
if(given_type == /obj/item/borg/upgrade/advanced/sizegun)
|
||||
return has_upgrade_module(/obj/item/weapon/gun/energy/sizegun/mounted)
|
||||
return null
|
||||
|
||||
// Do we support specific upgrades?
|
||||
/mob/living/silicon/robot/proc/supports_upgrade(var/given_type)
|
||||
return (given_type in module.supported_upgrades)
|
||||
|
||||
// Most of the restricted ones, we can easily check, but a few special cases exist and need to be handled specially
|
||||
/mob/living/silicon/robot/proc/has_restricted_upgrade(var/given_type)
|
||||
if(given_type == /obj/item/borg/upgrade/restricted/bellycapupgrade)
|
||||
var/obj/item/device/dogborg/sleeper/T = has_upgrade_module(/obj/item/device/dogborg/sleeper)
|
||||
if(T && T.compactor)
|
||||
return T
|
||||
else
|
||||
return ""
|
||||
if(given_type == /obj/item/borg/upgrade/restricted/tasercooler)
|
||||
var/obj/item/weapon/gun/energy/taser/mounted/cyborg/T = has_upgrade_module(/obj/item/weapon/gun/energy/taser/mounted/cyborg)
|
||||
if(T && T.recharge_time <= 2)
|
||||
return T
|
||||
else
|
||||
return ""
|
||||
if(given_type == /obj/item/borg/upgrade/restricted/advrped)
|
||||
return has_upgrade_module(/obj/item/weapon/storage/part_replacer/adv)
|
||||
if(given_type == /obj/item/borg/upgrade/restricted/diamonddrill)
|
||||
return has_upgrade_module(/obj/item/weapon/pickaxe/diamonddrill)
|
||||
if(given_type == /obj/item/borg/upgrade/restricted/pka)
|
||||
return has_upgrade_module(/obj/item/weapon/gun/energy/kinetic_accelerator/cyborg)
|
||||
return null
|
||||
|
||||
// Check if we have any non production upgrades
|
||||
/mob/living/silicon/robot/proc/has_no_prod_upgrade(var/given_type)
|
||||
if(given_type == /obj/item/borg/upgrade/no_prod/toygun)
|
||||
return has_upgrade_module(/obj/item/weapon/gun/projectile/cyborgtoy)
|
||||
return null
|
||||
|
||||
/mob/living/silicon/robot/proc/has_upgrade(var/given_type)
|
||||
return (has_basic_upgrade(given_type) || has_advanced_upgrade(given_type) || has_restricted_upgrade(given_type) || has_no_prod_upgrade(given_type))
|
||||
|
||||
@@ -47,8 +47,6 @@ var/global/list/robot_modules = list(
|
||||
var/list/modules = list()
|
||||
var/list/datum/matter_synth/synths = list()
|
||||
var/list/emag = list()
|
||||
var/obj/item/borg/upgrade/jetpack = null
|
||||
var/obj/item/borg/upgrade/advhealth = null
|
||||
var/list/subsystems = list()
|
||||
var/list/obj/item/borg/upgrade/supported_upgrades = list()
|
||||
|
||||
@@ -109,8 +107,6 @@ var/global/list/robot_modules = list(
|
||||
modules.Cut()
|
||||
synths.Cut()
|
||||
emag.Cut()
|
||||
qdel(jetpack)
|
||||
jetpack = null
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/robot_module/emp_act(severity)
|
||||
@@ -233,6 +229,7 @@ var/global/list/robot_modules = list(
|
||||
networks = list(NETWORK_MEDICAL)
|
||||
subsystems = list(/mob/living/silicon/proc/subsystem_crew_monitor)
|
||||
pto_type = PTO_MEDICAL
|
||||
supported_upgrades = list(/obj/item/borg/upgrade/restricted/bellycapupgrade)
|
||||
|
||||
/obj/item/weapon/robot_module/robot/medical/surgeon
|
||||
name = "surgeon robot module"
|
||||
@@ -470,7 +467,7 @@ var/global/list/robot_modules = list(
|
||||
channels = list("Security" = 1)
|
||||
networks = list(NETWORK_SECURITY)
|
||||
subsystems = list(/mob/living/silicon/proc/subsystem_crew_monitor)
|
||||
supported_upgrades = list(/obj/item/borg/upgrade/tasercooler)
|
||||
supported_upgrades = list(/obj/item/borg/upgrade/restricted/tasercooler, /obj/item/borg/upgrade/restricted/bellycapupgrade)
|
||||
pto_type = PTO_SECURITY
|
||||
|
||||
/obj/item/weapon/robot_module/robot/security/general
|
||||
@@ -668,7 +665,7 @@ var/global/list/robot_modules = list(
|
||||
name = "miner robot module"
|
||||
channels = list("Supply" = 1)
|
||||
networks = list(NETWORK_MINE)
|
||||
supported_upgrades = list(/obj/item/borg/upgrade/pka, /obj/item/borg/upgrade/diamonddrill)
|
||||
supported_upgrades = list(/obj/item/borg/upgrade/restricted/pka, /obj/item/borg/upgrade/restricted/diamonddrill)
|
||||
pto_type = PTO_CARGO
|
||||
|
||||
/obj/item/weapon/robot_module/robot/miner/create_equipment(var/mob/living/silicon/robot/robot)
|
||||
@@ -689,7 +686,7 @@ var/global/list/robot_modules = list(
|
||||
/obj/item/weapon/robot_module/robot/research
|
||||
name = "research module"
|
||||
channels = list("Science" = 1)
|
||||
supported_upgrades = list(/obj/item/borg/upgrade/advrped)
|
||||
supported_upgrades = list(/obj/item/borg/upgrade/restricted/advrped)
|
||||
pto_type = PTO_SCIENCE
|
||||
|
||||
/obj/item/weapon/robot_module/robot/research/create_equipment(var/mob/living/silicon/robot/robot)
|
||||
@@ -752,6 +749,7 @@ var/global/list/robot_modules = list(
|
||||
/obj/item/weapon/robot_module/robot/security/combat
|
||||
name = "combat robot module"
|
||||
hide_on_manifest = TRUE
|
||||
supported_upgrades = list(/obj/item/borg/upgrade/restricted/bellycapupgrade)
|
||||
|
||||
/obj/item/weapon/robot_module/robot/security/combat/create_equipment(var/mob/living/silicon/robot/robot)
|
||||
..()
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
// Gets a big shield and a gun that shoots really fast to scare the opposing force.
|
||||
/obj/item/weapon/robot_module/robot/syndicate/protector
|
||||
name = "protector robot module"
|
||||
supported_upgrades = list(/obj/item/borg/upgrade/restricted/bellycapupgrade)
|
||||
|
||||
/obj/item/weapon/robot_module/robot/syndicate/protector/create_equipment(var/mob/living/silicon/robot/robot)
|
||||
..()
|
||||
@@ -133,6 +134,7 @@
|
||||
// Mediborg optimized for on-the-field healing, but can also do surgery if needed.
|
||||
/obj/item/weapon/robot_module/robot/syndicate/combat_medic
|
||||
name = "combat medic robot module"
|
||||
supported_upgrades = list(/obj/item/borg/upgrade/restricted/bellycapupgrade)
|
||||
|
||||
/obj/item/weapon/robot_module/robot/syndicate/combat_medic/create_equipment(var/mob/living/silicon/robot/robot)
|
||||
..()
|
||||
@@ -190,4 +192,4 @@
|
||||
S.mode = initial(S.mode)
|
||||
S.desc = initial(S.desc)
|
||||
S.update_icon()
|
||||
..()
|
||||
..()
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
vore_stomach_name = "fuel processor"
|
||||
vore_stomach_flavor = "You have ended up in the fuel processor of this corrupted machine. This place was definitely not designed with safety and comfort in mind. The heated and cramped surroundings oozing potent fluids all over your form, eager to do nothing less than breaking you apart to fuel its rampage for the next few days... hours... minutes? Oh dear..."
|
||||
|
||||
loot_list = list(/obj/item/borg/upgrade/syndicate = 6, /obj/item/borg/upgrade/vtec = 6, /obj/item/weapon/material/knife/ritual = 6, /obj/item/weapon/disk/nifsoft/compliance = 6)
|
||||
loot_list = list(/obj/item/borg/upgrade/basic/syndicate = 6, /obj/item/borg/upgrade/basic/vtec = 6, /obj/item/weapon/material/knife/ritual = 6, /obj/item/weapon/disk/nifsoft/compliance = 6)
|
||||
|
||||
/mob/living/simple_mob/vore/aggressive/corrupthound/prettyboi
|
||||
name = "corrupt corrupt hound"
|
||||
|
||||
@@ -70,8 +70,10 @@
|
||||
to_chat(src, "<span class='filter_notice'><I>... You can almost hear someone talking ...</I></span>")
|
||||
else
|
||||
if(client && client.prefs.chat_timestamp)
|
||||
msg = replacetext(msg, new/regex("^(<span(?: \[^>]*)?>)((?:.|\\n)*</span>)", ""), "$1[time] $2")
|
||||
to_chat(src,msg)
|
||||
// TG-Chat filters latch directly to the spans, we no longer need that
|
||||
//msg = replacetext(msg, new/regex("^(<span(?: \[^>]*)?>)((?:.|\\n)*</span>)", ""), "$1[time] $2") // Insteres timestamps after the first qualifying span
|
||||
//msg = replacetext(msg, new/regex("^\[^<]((?:.|\\n)*)", ""), "[time] $1") // Spanless messages also get timestamped
|
||||
to_chat(src,"[time] [msg]")
|
||||
else if(teleop)
|
||||
to_chat(teleop, create_text_tag("body", "BODY:", teleop.client) + "[msg]")
|
||||
else
|
||||
|
||||
@@ -157,12 +157,6 @@
|
||||
|
||||
var/mob/living/silicon/robot/O = new /mob/living/silicon/robot( loc )
|
||||
|
||||
// cyborgs produced by Robotize get an automatic power cell
|
||||
O.cell = new(O)
|
||||
O.cell.maxcharge = 7500
|
||||
O.cell.charge = 7500
|
||||
|
||||
|
||||
O.gender = gender
|
||||
O.invisibility = 0
|
||||
|
||||
|
||||
Reference in New Issue
Block a user