mirror of
https://github.com/Yawn-Wider/YWPolarisVore.git
synced 2026-08-23 21:17:20 +01:00
Merge branch 'release' of https://github.com/VOREStation/VOREStation into izac
This commit is contained in:
+15
-12
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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."))
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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(
|
||||
|
||||
+430
-328
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user