This is a merged port from /tg/station and Virgo on logging standards.
The diary has been replaced with GLOB.world_game_log, diaryofmeanpeople
is gone (because it wasn't actually used) and a whole bunch of logging
procs have been changed to optimize Splunk.
Ports Goon Lighting from /vg/station.
Summary -
This adds smooth edges to all lighting in order to increase the
aesthetic appeal of the lighting system.
It works by using a matrix to change the appearance of the lighting
overlay sprite, which has been changed to be a base for the matrix to
modify.
Ported from /vg/station with the help of @PJB3005. This lighting
system is a hybrid between Mloc's lighting rewrite and Tobba's
Goonlights.
Notable changes:
- Darksight now matters on mobs. The lighting overlays are not
alpha=255 when they are completely dark, meaning you can still see the
floor- assuming you can view the turf at all, because it retains the
luminousity setting.
- This means Tajaran have 100% night vision again as they are
intended to. Humans can see in a 3x3 square centered around
themselves.
- No, I'm not changing this, if it's even possible. This is how
BYOND's lighting is meant to work. If you have any complaints about
game balance, please feel free to make a pull request to change
see_in_dark values, which will be seperately evaluated.
- The lighting controller now runs at world.tick_lag, to emulate the
realtime function of StonedMC. So far with my testing, this hasn't
caused any noticable performance decreases- the lighting system is
obviously more expensive than our previous iteration, however, it's not
the next ZAS ;)
Technical Details:
- /atom/movable/lighting_overlay/proc/get_clamped_lum has been removed,
succeeded by /turf/proc/get_lumcount. They behave identically.
- Turf lighting is actually controlled by four "corner" datums, which
feed information into the overlay.
- The way opacity is factored into the system has changed. Anything
that doesn't use set_opacity is not going to work to block light.
- /area/lighting_use_dynamic has been renamed to
/area/dynamic_lighting, for consistency with /turf/dynamic_lighting.
- Lighting is no longer seperately initialized for away missions. It is
handled in ChangeTurf() as it should be.
Known & Unfixable issues:
- There is a 5-10 second delay from starting the round to the lights
turning on. Attribute it to "the powernet being spun up" if you would
like to- but it's actually just how long it takes the lighting system
to update every single turf on the map.
- When you walk with a light on you, the light will actually jump ahead
of you before you visually get to the tile. This is because of the
movement gliding on mobs, realtime lighting actually goes faster than
the glide takes to complete, so it appears that your lights are moving
faster than you.
Thank you krausy~
Animated Goonlights
This adds an animate() call to the update_overlays() proc. This makes it
so that any light changes will smoothly transition between the changes
instead of instantly changing their appearance.
Also fixes a few issues pointed out on Github.
Change lighting animation (turns out the old one totally breaks if you toggle a light quickly, whoopsies)
Kill LIGHTING_INSTANT_UPDATES
isturf
A lot has changed.
Major points:
- All mobs now use the -tg- thrown alerts system. This is a system where
a maximum of 5 "alerts" (which take the apperance of HUD icons like the
inventory and modular action buttons) on their HUD.
- Alerts are defined as a subtype of /obj/screen/alert.
- Alerts are "thrown", or activated on the mob with the proc
`mob.throw_alert("alert_id", /obj/screen/alert/path, severity
(optional), new_master (optional, overlays the referenced "obj" on the
button))`
- Alerts are cleared by calling `mob.clear_alert("alert_id")` or by the
/obj/screen/alert containing a `timeout` setting, which will
automatically clear itself after that period of deciseconds.
- Alerts may have functionality beyond appearance: Mousing over them
will use the WireWraith tooltip system to generate a themed tooltip,
and clicking them may have a function defined on the
/obj/screen/alert object.
- Shift-clicking an alert will give you it's name and status, in case
the tooltips fail to work.
- Hunger/Oxygen/Toxin/Nitrogen/Pressure/Etc warnings are now handled via
the -tg- thrown alerts system.
- Failing to breathe anything will display as an "No O2" warning.
- Species breathing has been refactored to accomodate this. Vox are
able to breathe the station air without instantly dying, but will be
poisoned every time they breathe by the oxygen in the air. Any
species with a unique gas breathing type will also display the
correct "Choking (no X gas)" instead of just "oxygen". (Unless they
have not breathed anything in, it's a quirk.)
- Robot cell/temperature alerts also use this.
- Aliens, though not harmed by toxins, will have an alert if they
breathe in toxins, notifying them that "You'll be toast if this
lights up."
- More alerts have been added
- Buckling
- Activated on: Being buckled to an object.
- Cleared on: Being unbuckled.
- Click functionality: Calls resist(); Will unbuckle from chair
instantly if unrestrained, otherwise, there is a delay period.
- Hand/Leg cuffs
- Activated on: Being handcuffed.
- Cleared on: Being unhandcuffed.
- Click functionality: Calls resist(); Will attempt to either get out
of the handcuffs, or, if you are a xenomorph or hulk, break the
handcuffs in 5 seconds.
- Blind/High
- Activated on: Becoming blinded/becoming high on LSD.
- Cleared on: Becoming unblinded/the high wearing off.
- Click functionality: None.
- Asleep
- Activated on: Life() tick detecting sleeping.
- Deactivated on: Sleeping being 0 or less.
- Click functionality: None.
- Weightless
- Activated on: Losing gravity.
- Deactivated on: Moving back into an area with gravity.
- Click functionality: None.
- On Fire
- Activated on: Catching fire.
- Deactivated on: Being extinguished.
- Click functionality: Calls resist(); Causes you to stop, drop, and
roll, which will reduce firestacks and possibly extinguish you.
- Law update (BORG ONLY)
- Activated on: Laws being changed.
- Deactivated on: Timer, 300 deciseconds.
- Click functionality: None.
- Hacked (BORG ONLY)
- Activated on: Being emagged/given malf tools by the malf AI.
- Deactivated on: Emagged status being removed.
- Click functionality: None.
- Locked (BORG ONLY)
- Activated on: Lockdown being set (by emag law rewriting/robotics
console/wire being destroyed)
- Deactivated on: Movement being unlocked.
- Click functionality: None.
- Notify Cloning (GHOST ONLY)
- Activated on: A human's body being placed in a DNA scanner.
- Deactivated on: Timer, 300 deciseconds.
- Click functionality: Reenters body.
- Notify Jump (MULTIPURPOSE) (GHOST ONLY)
- Activated on: Any sort of chance to become a mob (ie, golem rune).
- Deactivated on: Timer, 300 deciseconds.
- Click functionality: Varies.
Currently, to_chat is literally just a proc that does user << message.
But it'll let us do output modification in the future, especially for
something like Goon's HTML chat.
Big thanks to PJB for his to_chat script, see
https://github.com/d3athrow/vgstation13/pull/6625 for more details.
This commit overhauls the examine system to baystation's latest system,
including a more efficient verb approach, and a new status panel tab,
which shows more information for pre-defined objects.