mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-21 03:56:47 +01:00
Merge pull request #1671 from VOREStation/polaris-sync-20170609
Polaris sync 20170609
This commit is contained in:
@@ -4,7 +4,7 @@ var/list/forbidden_varedit_object_types = list(
|
||||
/datum/feedback_variable //Prevents people messing with feedback gathering,
|
||||
)
|
||||
|
||||
var/list/VVlocked = list("vars", "client", "virus", "viruses", "cuffed", "last_eaten", "unlock_content", "bound_x", "bound_y", "step_x", "step_y", "force_ending")
|
||||
var/list/VVlocked = list("vars", "client", "virus", "viruses", "cuffed", "last_eaten", "unlock_content", "bound_x", "bound_y", "step_x", "step_y", "force_ending", "queued_priority")
|
||||
var/list/VVicon_edit_lock = list("icon", "icon_state", "overlays", "underlays")
|
||||
var/list/VVckey_edit = list("key", "ckey")
|
||||
|
||||
|
||||
@@ -284,6 +284,18 @@
|
||||
if(inactivity > duration) return inactivity
|
||||
return 0
|
||||
|
||||
// Byond seemingly calls stat, each tick.
|
||||
// Calling things each tick can get expensive real quick.
|
||||
// So we slow this down a little.
|
||||
// See: http://www.byond.com/docs/ref/info.html#/client/proc/Stat
|
||||
/client/Stat()
|
||||
. = ..()
|
||||
if (holder)
|
||||
sleep(1)
|
||||
else
|
||||
sleep(5)
|
||||
stoplag()
|
||||
|
||||
/client/proc/last_activity_seconds()
|
||||
return inactivity / 10
|
||||
|
||||
|
||||
@@ -49,9 +49,10 @@
|
||||
description_holders["icon"] = "\icon[A]"
|
||||
description_holders["desc"] = A.desc
|
||||
|
||||
/client/Stat()
|
||||
/mob/Stat()
|
||||
. = ..()
|
||||
if(usr && statpanel("Examine"))
|
||||
if(client && statpanel("Examine"))
|
||||
var/description_holders = client.description_holders
|
||||
stat(null,"[description_holders["icon"]] <font size='5'>[description_holders["name"]]</font>") //The name, written in big letters.
|
||||
stat(null,"[description_holders["desc"]]") //the default examine text.
|
||||
if(description_holders["info"])
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
/mob/living/carbon/human/examine(mob/user)
|
||||
|
||||
var/skipgloves = 0
|
||||
var/skipsuitstorage = 0
|
||||
var/skipjumpsuit = 0
|
||||
@@ -17,6 +18,18 @@
|
||||
var/skiparms = 0
|
||||
var/skipfeet = 0
|
||||
|
||||
|
||||
var/cloaked = 0 // 0 for normal, 1 for cloaked close
|
||||
|
||||
if(mind && mind.changeling && mind.changeling.cloaked && !istype(user, /mob/observer))
|
||||
var/distance = get_dist(user, src)
|
||||
if(distance > 2)
|
||||
src.loc.examine(user)
|
||||
return
|
||||
else
|
||||
cloaked = 1
|
||||
|
||||
|
||||
var/looks_synth = looksSynthetic()
|
||||
|
||||
//exosuits and helmets obscure our view and stuff.
|
||||
@@ -79,9 +92,13 @@
|
||||
|
||||
var/list/msg = list("<span class='info'>*---------*\nThis is ")
|
||||
|
||||
|
||||
var/datum/gender/T = gender_datums[get_gender()]
|
||||
|
||||
if(skipjumpsuit && skipface) //big suits/masks/helmets make it hard to tell their gender
|
||||
T = gender_datums[PLURAL]
|
||||
if(cloaked)
|
||||
T = gender_datums[NEUTER]
|
||||
|
||||
else if(species && species.ambiguous_genders)
|
||||
var/can_detect_gender = FALSE
|
||||
@@ -454,7 +471,8 @@
|
||||
msg += "<span class = 'deptradio'>Medical records:</span> <a href='?src=\ref[src];medrecord=`'>\[View\]</a> <a href='?src=\ref[src];medrecordadd=`'>\[Add comment\]</a>\n"
|
||||
|
||||
|
||||
if(print_flavor_text()) msg += "[print_flavor_text()]\n"
|
||||
if(print_flavor_text() && !cloaked)
|
||||
msg += "[print_flavor_text()]\n"
|
||||
|
||||
// VOREStation Start
|
||||
if(ooc_notes)
|
||||
@@ -462,13 +480,20 @@
|
||||
// VOREStation End
|
||||
msg += "*---------*</span><br>"
|
||||
msg += applying_pressure
|
||||
if (pose)
|
||||
if (pose && !cloaked)
|
||||
if( findtext(pose,".",lentext(pose)) == 0 && findtext(pose,"!",lentext(pose)) == 0 && findtext(pose,"?",lentext(pose)) == 0 )
|
||||
pose = addtext(pose,".") //Makes sure all emotes end with a period.
|
||||
msg += "[T.He] [pose]"
|
||||
|
||||
user << jointext(msg, null)
|
||||
|
||||
|
||||
/mob/living/carbon/human/get_description_fluff()
|
||||
if(mind && mind.changeling && mind.changeling.cloaked)
|
||||
return ""
|
||||
else
|
||||
return ..()
|
||||
|
||||
//Helper procedure. Called by /mob/living/carbon/human/examine() and /mob/living/carbon/human/Topic() to determine HUD access to security and medical records.
|
||||
/proc/hasHUD(mob/M as mob, hudtype)
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
|
||||
@@ -267,7 +267,7 @@
|
||||
var/obj/item/device/pda/pda = wear_id
|
||||
if (istype(pda))
|
||||
if (pda.id)
|
||||
return pda.id.rank
|
||||
return pda.id.rank ? pda.id.rank : if_no_job
|
||||
else
|
||||
return pda.ownrank
|
||||
else
|
||||
@@ -311,6 +311,8 @@
|
||||
|
||||
//repurposed proc. Now it combines get_id_name() and get_face_name() to determine a mob's name variable. Made into a seperate proc as it'll be useful elsewhere
|
||||
/mob/living/carbon/human/proc/get_visible_name()
|
||||
if( mind && mind.changeling && mind.changeling.cloaked)
|
||||
return "Unknown"
|
||||
if( wear_mask && (wear_mask.flags_inv&HIDEFACE) ) //Wearing a mask which hides our face, use id-name if possible
|
||||
return get_id_name("Unknown")
|
||||
if( head && (head.flags_inv&HIDEFACE) )
|
||||
|
||||
@@ -334,7 +334,8 @@ var/global/list/robot_modules = list(
|
||||
"Antique" = "engineerrobot",
|
||||
"Landmate" = "landmate",
|
||||
"Landmate - Treaded" = "engiborg+tread",
|
||||
"Drone" = "drone-engineer"
|
||||
"Drone" = "drone-engineer",
|
||||
"Treadwell" = "treadwell"
|
||||
)
|
||||
|
||||
/obj/item/weapon/robot_module/robot/engineering/construction
|
||||
|
||||
@@ -673,6 +673,23 @@
|
||||
if(processScheduler)
|
||||
processScheduler.statProcesses()
|
||||
|
||||
if(statpanel("MC"))
|
||||
stat("CPU:","[world.cpu]")
|
||||
stat("Instances:","[world.contents.len]")
|
||||
stat(null)
|
||||
if(Master)
|
||||
Master.stat_entry()
|
||||
else
|
||||
stat("Master Controller:", "ERROR")
|
||||
if(Failsafe)
|
||||
Failsafe.stat_entry()
|
||||
else
|
||||
stat("Failsafe Controller:", "ERROR")
|
||||
if(Master)
|
||||
stat(null)
|
||||
for(var/datum/controller/subsystem/SS in Master.subsystems)
|
||||
SS.stat_entry()
|
||||
|
||||
if(listed_turf && client)
|
||||
if(!TurfAdjacent(listed_turf))
|
||||
listed_turf = null
|
||||
|
||||
@@ -162,7 +162,7 @@
|
||||
active_power_usage = 20
|
||||
power_channel = LIGHT //Lights are calc'd via area so they dont need to be in the machine list
|
||||
var/on = 0 // 1 if on, 0 if off
|
||||
var/brightness_range = 10 // luminosity when on, also used in power calculation
|
||||
var/brightness_range = 10 // luminosity when on, also used in power calculation // VOREStation Edit - Put light range back how it was for now.
|
||||
var/brightness_power = 3
|
||||
var/brightness_color = null
|
||||
var/status = LIGHT_OK // LIGHT_OK, _EMPTY, _BURNED or _BROKEN
|
||||
@@ -183,7 +183,7 @@
|
||||
icon_state = "bulb1"
|
||||
base_state = "bulb"
|
||||
fitting = "bulb"
|
||||
brightness_range = 6
|
||||
brightness_range = 6 // VOREStation Edit - Put light range back how it was for now.
|
||||
brightness_power = 2
|
||||
brightness_color = "#FFF4E5"
|
||||
desc = "A small lighting fixture."
|
||||
@@ -210,7 +210,7 @@
|
||||
layer = OBJ_LAYER
|
||||
|
||||
/obj/machinery/light/small/emergency
|
||||
brightness_range = 6
|
||||
brightness_range = 4
|
||||
brightness_power = 2
|
||||
brightness_color = "#da0205"
|
||||
|
||||
|
||||
@@ -227,7 +227,7 @@
|
||||
src.add_fingerprint(user)
|
||||
if(bottle)
|
||||
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
if(do_after(user, 20))
|
||||
if(do_after(user, 20) && bottle)
|
||||
user << "<span class='notice'>You unfasten the jug.</span>"
|
||||
var/obj/item/weapon/reagent_containers/glass/cooler_bottle/G = new /obj/item/weapon/reagent_containers/glass/cooler_bottle( src.loc )
|
||||
for(var/datum/reagent/R in reagents.reagent_list)
|
||||
@@ -262,7 +262,7 @@
|
||||
if(!bottle && !cupholder)
|
||||
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
user << "<span class='notice'>You start taking the water-cooler apart.</span>"
|
||||
if(do_after(user, 20))
|
||||
if(do_after(user, 20) && !bottle && !cupholder)
|
||||
user << "<span class='notice'>You take the water-cooler apart.</span>"
|
||||
new /obj/item/stack/material/plastic( src.loc, 4 )
|
||||
qdel(src)
|
||||
@@ -274,7 +274,7 @@
|
||||
if(anchored)
|
||||
var/obj/item/weapon/reagent_containers/glass/cooler_bottle/G = I
|
||||
user << "<span class='notice'>You start to screw the bottle onto the water-cooler.</span>"
|
||||
if(do_after(user, 20))
|
||||
if(do_after(user, 20) && !bottle && anchored)
|
||||
bottle = 1
|
||||
update_icon()
|
||||
user << "<span class='notice'>You screw the bottle onto the water-cooler!</span>"
|
||||
@@ -286,7 +286,7 @@
|
||||
user << "<span class='warning'>You need to wrench down the cooler first.</span>"
|
||||
else
|
||||
user << "<span class='warning'>There is already a bottle there!</span>"
|
||||
return
|
||||
return 1
|
||||
|
||||
if(istype(I, /obj/item/stack/material/plastic))
|
||||
if(!cupholder)
|
||||
@@ -295,7 +295,7 @@
|
||||
src.add_fingerprint(user)
|
||||
user << "<span class='notice'>You start to attach a cup dispenser onto the water-cooler.</span>"
|
||||
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
if(do_after(user, 20))
|
||||
if(do_after(user, 20) && !cupholder && anchored)
|
||||
if (P.use(1))
|
||||
user << "<span class='notice'>You attach a cup dispenser onto the water-cooler.</span>"
|
||||
cupholder = 1
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
/obj/structure/anomaly_container
|
||||
name = "anomaly container"
|
||||
desc = "Used to safely contain and move anomalies."
|
||||
icon = 'icons/obj/xenoarchaeology.dmi'
|
||||
icon_state = "anomaly_container"
|
||||
density = 1
|
||||
|
||||
var/obj/machinery/artifact/contained
|
||||
|
||||
/obj/structure/anomaly_container/initialize()
|
||||
..()
|
||||
|
||||
var/obj/machinery/artifact/A = locate() in loc
|
||||
if(A)
|
||||
contain(A)
|
||||
|
||||
/obj/structure/anomaly_container/attack_hand(var/mob/user)
|
||||
release()
|
||||
|
||||
/obj/structure/anomaly_container/attack_robot(var/mob/user)
|
||||
if(Adjacent(user))
|
||||
release()
|
||||
|
||||
/obj/structure/anomaly_container/proc/contain(var/obj/machinery/artifact/artifact)
|
||||
if(contained)
|
||||
return
|
||||
contained = artifact
|
||||
artifact.forceMove(src)
|
||||
underlays += image(artifact)
|
||||
desc = "Used to safely contain and move anomalies. \The [contained] is kept inside."
|
||||
|
||||
/obj/structure/anomaly_container/proc/release()
|
||||
if(!contained)
|
||||
return
|
||||
contained.dropInto(src)
|
||||
contained = null
|
||||
underlays.Cut()
|
||||
desc = initial(desc)
|
||||
|
||||
/obj/machinery/artifact/MouseDrop(var/obj/structure/anomaly_container/over_object)
|
||||
if(istype(over_object) && Adjacent(over_object) && CanMouseDrop(over_object, usr))
|
||||
Bumped(usr)
|
||||
over_object.contain(src)
|
||||
Reference in New Issue
Block a user