This commit is contained in:
izac112
2021-05-12 16:30:06 +02:00
23 changed files with 524 additions and 386 deletions
+15 -12
View File
@@ -43,19 +43,22 @@ GLOBAL_REAL(GLOB, /datum/controller/global_vars)
return FALSE
return ..()
/datum/controller/global_vars/Initialize(var/exclude_these)
/datum/controller/global_vars/Initialize()
gvars_datum_init_order = list()
gvars_datum_protected_varlist = list("gvars_datum_protected_varlist")
//See https://github.com/tgstation/tgstation/issues/26954
for(var/I in typesof(/datum/controller/global_vars/proc))
var/CLEANBOT_RETURNS = "[I]"
pass(CLEANBOT_RETURNS)
for(var/I in (vars - gvars_datum_in_built_vars))
gvars_datum_protected_varlist = list(NAMEOF(src, gvars_datum_protected_varlist) = TRUE)
var/list/global_procs = typesof(/datum/controller/global_vars/proc)
var/expected_len = vars.len - gvars_datum_in_built_vars.len
if(global_procs.len != expected_len)
warning("Unable to detect all global initialization procs! Expected [expected_len] got [global_procs.len]!")
if(global_procs.len)
var/list/expected_global_procs = vars - gvars_datum_in_built_vars
for(var/I in global_procs)
expected_global_procs -= replacetext("[I]", "InitGlobal", "")
var/english_missing = expected_global_procs.Join(", ")
log_world("Missing procs: [english_missing]")
for(var/I in global_procs)
var/start_tick = world.time
call(src, "InitGlobal[I]")()
call(src, I)()
var/end_tick = world.time
if(end_tick - start_tick)
warning("Global [I] slept during initialization!")
QDEL_NULL(exclude_these)
warning("Global [replacetext("[I]", "InitGlobal", "")] slept during initialization!")
@@ -419,6 +419,8 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
pref.body_descriptors[entry] = descriptor.default_value // Species datums have initial default value.
else
pref.body_descriptors[entry] = CLAMP(last_descriptors[entry], 1, LAZYLEN(descriptor.standalone_value_descriptors))
character.update_emotes()
return
+2 -2
View File
@@ -5,7 +5,7 @@
emote_message_3p = "is sweating heavily."
/decl/emote/exertion/biological/check_user(mob/living/user)
if(istype(user) && !user.isSynthetic(skip_emote_update = TRUE))
if(istype(user) && !user.isSynthetic())
return ..()
return FALSE
@@ -30,7 +30,7 @@
emote_message_3p = "USER's actuators whine with strain."
/decl/emote/exertion/synthetic/check_user(mob/living/user)
if(istype(user) && user.isSynthetic(skip_emote_update = TRUE))
if(istype(user) && user.isSynthetic())
return ..()
return FALSE
+7 -1
View File
@@ -1,5 +1,11 @@
/decl/emote/human
key = "vomit"
/decl/emote/human/check_user(var/mob/living/carbon/human/user)
return istype(user)
return (istype(user))//VOREStation Edit - What does a mouth have to do with wagging?? && user.check_has_mouth() && !user.isSynthetic())
/decl/emote/human/do_emote(var/mob/living/carbon/human/user)
user.vomit()
/decl/emote/human/deathgasp
key = "deathgasp"
@@ -4,7 +4,7 @@
emote_sound = 'sound/machines/twobeep.ogg'
/decl/emote/audible/synth/check_user(var/mob/living/user)
if(istype(user) && user.isSynthetic(skip_emote_update = TRUE))
if(istype(user) && user.isSynthetic())
return ..()
return FALSE
@@ -4,7 +4,7 @@
/decl/emote/visible/vomit/do_emote(var/atom/user, var/extra_params)
if(isliving(user))
var/mob/living/M = user
if(!M.isSynthetic(skip_emote_update = TRUE))
if(!M.isSynthetic())
M.vomit()
return
to_chat(src, SPAN_WARNING("You are unable to vomit."))
+1 -1
View File
@@ -172,7 +172,7 @@
return key
/decl/emote/proc/check_synthetic(var/mob/living/user)
. = istype(user) && user.isSynthetic(skip_emote_update = TRUE)
. = istype(user) && user.isSynthetic()
if(!. && ishuman(user) && message_type == AUDIBLE_MESSAGE)
var/mob/living/carbon/human/H = user
if(H.should_have_organ(O_LUNGS))
+1 -1
View File
@@ -441,5 +441,5 @@
return 0
/mob/living/bot/isSynthetic(var/skip_emote_update) //Robots are synthetic, no?
/mob/living/bot/isSynthetic() //Robots are synthetic, no?
return 1
@@ -42,7 +42,7 @@
canmove = 0
return canmove
/mob/living/carbon/brain/isSynthetic(var/skip_emote_update)
/mob/living/carbon/brain/isSynthetic()
return istype(loc, /obj/item/device/mmi)
/mob/living/carbon/brain/set_typing_indicator(var/state)
@@ -33,6 +33,7 @@ var/list/_human_default_emotes = list(
/decl/emote/audible/grunt,
/decl/emote/audible/slap,
/decl/emote/audible/crack,
/decl/emote/human,
/decl/emote/human/deathgasp,
/decl/emote/audible/giggle,
/decl/emote/audible/scream,
@@ -97,21 +97,8 @@
// This is the 'mechanical' check for synthetic-ness, not appearance
// Returns the company that made the synthetic
/mob/living/carbon/human/isSynthetic(var/skip_emote_update)
if(synthetic)
return synthetic //Your synthetic-ness is not going away
var/obj/item/organ/external/T = organs_by_name[BP_TORSO]
if(T && T.robotic >= ORGAN_ROBOT)
src.verbs += /mob/living/carbon/human/proc/self_diagnostics
src.verbs += /mob/living/carbon/human/proc/setmonitor_state//YWadd, early port, remove comment when it comes from upstream
src.verbs += /mob/living/carbon/human/proc/reagent_purge //VOREStation Add
src.verbs += /mob/living/carbon/human/proc/setmonitor_state
var/datum/robolimb/R = all_robolimbs[T.model]
synthetic = R
if(!skip_emote_update)
update_emotes()
return synthetic
return FALSE
/mob/living/carbon/human/isSynthetic()
return synthetic
// Would an onlooker know this person is synthetic?
// Based on sort of logical reasoning, 'Look at head, look at torso'
@@ -217,8 +217,7 @@
if(isSynthetic())
output += "Current Battery Charge: [nutrition]\n"
if(isSynthetic())
var/toxDam = getToxLoss()
if(toxDam)
output += "System Instability: <span class='warning'>[toxDam > 25 ? "Severe" : "Moderate"]</span>. Seek charging station for cleanup.\n"
@@ -18,7 +18,7 @@
poison_resist = 1.0
shock_resist = -0.5
/mob/living/simple_mob/mechanical/isSynthetic(var/skip_emote_update)
/mob/living/simple_mob/mechanical/isSynthetic()
return TRUE
/mob/living/simple_mob/mechanical/speech_bubble_appearance()
+1 -1
View File
@@ -1073,7 +1073,7 @@ mob/verb/shifteast()
if(src.throw_icon)
src.throw_icon.icon_state = "act_throw_on"
/mob/proc/isSynthetic(var/skip_emote_update)
/mob/proc/isSynthetic()
return 0
/mob/proc/is_muzzled()
+1 -1
View File
@@ -33,7 +33,7 @@
return L.mob_size <= MOB_MINISCULE
return 0
/mob/living/silicon/isSynthetic(var/skip_emote_update)
/mob/living/silicon/isSynthetic()
return 1
/mob/proc/isMonkey()
+11 -7
View File
@@ -49,6 +49,12 @@ You can also set the stat of a NIF to NIF_TEMPFAIL without any issues to disable
var/obj/item/device/communicator/commlink/comm // The commlink requires this
var/list/starting_software = list(
/datum/nifsoft/commlink,
/datum/nifsoft/soulcatcher,
/datum/nifsoft/ar_civ
)
var/global/icon/big_icon
var/global/click_sound = 'sound/items/nif_click.ogg'
var/global/bad_sound = 'sound/items/nif_tone_bad.ogg'
@@ -89,13 +95,6 @@ You can also set the stat of a NIF to NIF_TEMPFAIL without any issues to disable
spawn(0)
qdel(src)
return FALSE
else
//Free commlink and soulcatcher for return customers
new /datum/nifsoft/commlink(src)
new /datum/nifsoft/soulcatcher(src)
//Free civilian AR included
new /datum/nifsoft/ar_civ(src)
//If given wear (like when spawned) then done
if(wear)
@@ -131,6 +130,10 @@ You can also set the stat of a NIF to NIF_TEMPFAIL without any issues to disable
human.nif = src
stat = NIF_INSTALLING
H.verbs |= /mob/living/carbon/human/proc/set_nif_examine
if(starting_software)
for(var/path in starting_software)
new path(src)
starting_software = null
return TRUE
return FALSE
@@ -596,6 +599,7 @@ You can also set the stat of a NIF to NIF_TEMPFAIL without any issues to disable
name = "bootleg NIF"
desc = "When NanoTrasen tried to replicate the NIF tech by themselves, this is what they made. You probably shouldn't allow this inside you."
durability = 10
starting_software = null
/obj/item/device/nif/authentic
name = "Authentic NIF"
+2
View File
@@ -58,6 +58,8 @@
acidtype = "sacid"
organ_verbs = list(/mob/living/carbon/human/proc/reagent_purge) //VOREStation Add
/obj/item/organ/internal/stomach/machine/handle_organ_proc_special()
..()
if(owner && owner.stat != DEAD)
+4
View File
@@ -89,6 +89,10 @@
organ_tag = O_ORCH
parent_organ = BP_TORSO
vital = TRUE
organ_verbs = list(
/mob/living/carbon/human/proc/self_diagnostics,
/mob/living/carbon/human/proc/reagent_purge
)
/obj/item/organ/internal/nano/refactory
name = "refactory module"
+25 -9
View File
@@ -24,14 +24,23 @@
base_miss_chance = 10
/obj/item/organ/external/chest/robotize()
if(..() && robotic != ORGAN_NANOFORM) //VOREStation Edit
// Give them fancy new organs.
owner.internal_organs_by_name[O_CELL] = new /obj/item/organ/internal/cell(owner,1)
owner.internal_organs_by_name[O_VOICE] = new /obj/item/organ/internal/voicebox/robot(owner, 1)
owner.internal_organs_by_name[O_PUMP] = new /obj/item/organ/internal/heart/machine(owner,1)
owner.internal_organs_by_name[O_CYCLER] = new /obj/item/organ/internal/stomach/machine(owner,1)
owner.internal_organs_by_name[O_HEATSINK] = new /obj/item/organ/internal/robotic/heatsink(owner,1)
owner.internal_organs_by_name[O_DIAGNOSTIC] = new /obj/item/organ/internal/robotic/diagnostic(owner,1)
if(..() && owner)
if(robotic != ORGAN_NANOFORM) //VOREStation Edit
// Give them fancy new organs.
owner.internal_organs_by_name[O_CELL] = new /obj/item/organ/internal/cell(owner,1)
owner.internal_organs_by_name[O_VOICE] = new /obj/item/organ/internal/voicebox/robot(owner, 1)
owner.internal_organs_by_name[O_PUMP] = new /obj/item/organ/internal/heart/machine(owner,1)
owner.internal_organs_by_name[O_CYCLER] = new /obj/item/organ/internal/stomach/machine(owner,1)
owner.internal_organs_by_name[O_HEATSINK] = new /obj/item/organ/internal/robotic/heatsink(owner,1)
owner.internal_organs_by_name[O_DIAGNOSTIC] = new /obj/item/organ/internal/robotic/diagnostic(owner,1)
var/datum/robolimb/R = all_robolimbs[model] // company should be set in parent by now
if(!R)
log_error("A torso was robotize() but has no model that can be found: [model]. May affect FBPs.")
owner.synthetic = R
owner.update_emotes()
return FALSE
/obj/item/organ/external/chest/handle_germ_effects()
. = ..() //Should return an infection level
@@ -279,7 +288,14 @@
return ..()
/obj/item/organ/external/head/robotize(var/company, var/skip_prosthetics, var/keep_organs)
return ..(company, skip_prosthetics, 1)
. = ..(company, skip_prosthetics, 1)
if(model)
var/datum/robolimb/robohead = all_robolimbs[model]
if(robohead?.monitor_styles && robohead?.monitor_icon)
LAZYDISTINCTADD(organ_verbs, /mob/living/carbon/human/proc/setmonitor_state)
else
LAZYREMOVE(organ_verbs, /mob/living/carbon/human/proc/setmonitor_state)
handle_organ_mod_special()
/obj/item/organ/external/head/removed()
if(owner)
+4
View File
@@ -93,6 +93,8 @@ Hotkey-Mode: (hotkey-mode must be on)
\t5 = emote
\tx = swap-hand
\tz = activate held object (or y)
\tu = Rest
\tb = Resist
\tj = toggle-aiming-mode
\tf = cycle-intents-left
\tg = cycle-intents-right
@@ -113,6 +115,8 @@ Any-Mode: (hotkey doesn't need to be on)
\tCtrl+q = drop
\tCtrl+e = equip
\tCtrl+r = throw
\tCtrl+u = Rest
\tCtrl+b = Resist
\tCtrl+x = swap-hand
\tCtrl+z = activate held object (or Ctrl+y)
\tCtrl+f = cycle-intents-left
+6
View File
@@ -352,6 +352,12 @@ macro "macro"
elem
name = "CTRL+Z"
command = "Activate-Held-Object"
elem
name = "CTRL+U"
command = "Rest"
elem
name = "CTRL+B"
command = "Resist"
elem
name = "CTRL+NUMPAD1"
command = "body-r-leg"
+4 -2
View File
@@ -155,7 +155,7 @@ so stay sharp eh?<br>\
info = {"to whoever's stuck at the helm of this farce of an operation,<br>\
good news! you may have noticed the entire ship was replaced pretty much overnight.<br>\
that or it changed shape or something? whatever, not important.<br>\
it is essential that I tell you that there is most definitely not a new smuggling compartment hidden under your end table<br>\
it is essential that I tell you that there is most definitely not a new smuggling compartment hidden under the carpet at the foot of your bed<br>\
unfortunately I couldn't possibly tell you the fictional combination for a hypothetical compartment that doesn't exist<br>\
have fun!<br>\
<br>\
@@ -171,6 +171,9 @@ what is important is that the shuttle has been replaced. it is now capable of fu
but the rear airlock is a bit fussy. be sure to use the manual switches on each side of the airlock if you're matching another airlock and one side is exposed to vacuum or a hostile atmosphere!<br>\
also be sure that it's locked down before you take off, the automatic switch is a bit stupid sometimes!<br>\
<br>\
finally, make sure you check the shuttle's APC power level before you head out! it can be fussy about (re)charging off the main ship grid sometimes. despite having someone in to look at the cables, we couldn't figure out why.<br>\
I recommend packing a spare battery (there should be a few in engineering you can borrow and charge up) to be safe. don't wanna get stranded!<br>\
<br>\
<i>Harry Townes</i>"}
//Prevents remote control of drones
@@ -546,7 +549,6 @@ also be sure that it's locked down before you take off, the automatic switch is
icon = 'icons/obj/mining.dmi'
icon_state = "ore_clown"
/obj/random/multiple/ore_pile/talon/item_to_spawn()
return pick(
prob(10);list(
File diff suppressed because it is too large Load Diff