The closest thing to a balance change is the hardsuit boots being
deployable without the chestpiece again.
The SFX can be moved with the recent update to armour sounds if someone
wants, but the slowdown is a heavy enough penalty to discourage it.
- bugfix: "Fixed the Retract All Hardsuit Parts verb, by making hardsuit
boots retractable with the chestpiece deployed, at a heavy slowdown"
- bugfix: "Fixed the stealth system module not decloaking when the user
fires a gun or hits a mob."
- bugfix: "Fixed being able to instantly remove your hardsuit if it had
a storage module in it."
- bugfix: "Fixed mounted energy guns being stuck in taser mode. Also
extends support to other guns with multiple firemods."
- bugfix: "Fixed most hardsuit modules not having an on-mob sprite."
- bugfix: "Fixed synthetic chargers not charging the hardsuit, if the
wearer was an IPC."
- bugfix: "Fixed the hardsuit UI not updating when toggling jetpack
stabalizers."
- bugfix: "Fixed the advanced hacking tool searching the wearer's entire
contents to see if it had been dropped every tick."
Adds a cool-looking subtype of the rescue axe for security and antags.
Spawns by default in security officer and head of security lockers. It
has also been added to some antag preps (mercs, burglars, raiders) and
to the uplink (tools section, 1 BC). Sprite by TheStryker.
<img width="366" height="276" alt="image"
src="https://github.com/user-attachments/assets/c034e454-60e0-4d0b-a5ff-fd1c22f4075f"
/>
---------
Co-authored-by: Matt Atlas <liermattia@gmail.com>
* Adds the Sun Reach origin, splitting it off from the Imperial Frontier
umbrella.
* This was done with permission from Matt and by request of the human
lore team.
* This is mainly done so Sun Reach can have the hot resist trait, as
befits the sweltering planet.
* Consequently, Sun Reach accent has been removed from the Imperial
Frontier origin (but remains in the exile origin).
* Updated the Novi Jadran description. Both the new Novi Jadran
description and the Sun Reach description were written by Schwann.
---------
Signed-off-by: Fyni <itsfyni@gmail.com>
Makes a large number of mostly small changes to the recently remapped
service wing, now that it's had a few days to stew. Adds urban signs for
service staff facilities and washrooms, adds such a sign to every other
washroom, and makes a little more space on the bar back counter. Also
implements significant remaps to the new service washroom and bar.
<img width="718" height="382" alt="image"
src="https://github.com/user-attachments/assets/5490ad76-3b1e-47c0-9026-984b6412893f"
/>
The washroom now connects both sides of service, and contains a washing
machine. Should make the space more useful.
<img width="632" height="598" alt="image"
src="https://github.com/user-attachments/assets/401da10c-7410-4e4c-8b12-a0575fb6db19"
/>
The bar's drinks vendor and showcase have been moved into the centre
with full density.
Cons of this design:
- It's cramped compared to the current design, which may lead to
congestion.
Pros of this design:
- The vendor and showcase are no longer pixel shifted! You can now move
them about without dismantling tables. The showcase is also close to the
counter, which may be useful on the off-chance it's ever resprited to
not just be a fridge.
- The bar is now more packed, which I think feels more appropriate for a
ship service facility than the current design.
- You can lean on the vendor (as seen above!) to alleviate issues with
congestion. It's designed similarly to the kitchens 1-turf lanes in
that, insofar as there's only two bartenders, it's impossible to be
blocked from getting to one turf in the bar by someone else unless they
are standing on the exact turf you want to be standing on, without
leaning. Doesn't scale well above two bartenders, but there frankly
isn't enough gameplay for 3+ to begin with anyway.
<img width="224" height="256" alt="image"
src="https://github.com/user-attachments/assets/74494b55-e070-4277-b73b-b348b3d5d5f2"
/>
Rejigged the karaoke lounge's turfs a little. The sofa is now red rather
than orange.
<img width="384" height="256" alt="image"
src="https://github.com/user-attachments/assets/e3f989ef-d1d7-4a89-81fa-8d59287eba95"
/>
Did the same with the public garden, to fit in better with the rest of
the department.
<img width="128" height="96" alt="image"
src="https://github.com/user-attachments/assets/94705f68-42a4-40a2-842d-f1f17f022718"
/>
The navigation console has a chair now.
Doesn't meaningfully conflict with
https://github.com/Aurorastation/Aurora.3/pull/22801, and doesn't really
touch the kitchen or hydroponics.
Latex gloves (and by extension, nitrile and all other child items) had a
75% chance to leave fingerprints. This reduces that chance to zero.
While some impressions can be left by these gloves in real life, it is a
counterintuitive behavior for the purposes of the game (and we have
enough of those to memorize elsewhere anyways).
SURPRISE! I hope you all had fun during the Psilence event! It was
really fun spending 6 months coding all the infrastructure I required to
make that encounter possible. Encountering an entire new enemy type was
no doubt incredibly exciting to happen during a big canon round. Well as
promised, these critters will start showing up more often now that the
big reveal has occured.
<img width="982" height="981" alt="image"
src="https://github.com/user-attachments/assets/c537afe6-9b97-4913-8572-85650556b871"
/>
<img width="979" height="981" alt="image"
src="https://github.com/user-attachments/assets/1049b564-eb54-45e8-a113-da48f5c4b67b"
/>
This PR adds new rare random events and overmap hazards for Psirens,
allowing the basic varieties of them to appear in normal gameplay. They
can also be summoned by technomancers. More to come later. :)
This PR tweaks an AI's can_use_remote_ui() proc to check for cameranet
visibility instead of distance to an AI's eye. This allows an AI to use
machines that aren't visible from the eye due to dense objects, but are
still visible from cameras. It also keeps the UI window open if the AI's
eye moves away, and closes the UI window if the viewing camera is
disabled or destroyed.
Fixes#22726
The conditioning skill was a little too harsh on Skrell, who suffered
heavily from being the lightest and smallest species, which made them
have extremely unfavorable interactions with mass and fireman carrying.
This PR gives them a higher than normal mob strength modifier to offset
their low mass, so that they can at least fireman carry a human without
requiring the conditioning skill. This makes both standard and Axiori
skrell start at a similar level as a human's limits for carrying before
the Conditioning skill is considered.
Reduces the chance for bones to break.
Fixes injury checks not respecting the DAMAGE_FLAG_BULLET flag.
The chance was: Brute damage + damage of the hit.
Then multiplied by 2 if the hit was blunt. (Bullets counted as blunt
previously)
The new chance is a linear scale, 0% at no damage, 100% at max health *
4. (Organs take damage up to 4* their max health).
Then 1/2 the damage of the hit, 1 times the damage of the hit if blunt.
To compensate, edged weapons now only decrease their chance to hit
organs by 40% if the ribs are not broken, instead of by 80%.
Example of the first hit to the chest:
STS35 bullet (damage 35):
Previously: 35% + 35% = 70% fracture chance. With 16% chance to hit an
organ.
Now: 8.75% + 17.5% = 26.25% fracture chance. With 49% chance to hit an
organ.
This one will probably need some testing!
There should be an opportunity cost to proning, which at the moment
there isn't and can't really be. When counting the amount of issues this
feature creates (making you artificially harder to it, looking extremely
silly, various layering issues...) it just needs to go at this point.
---------
Co-authored-by: Matt Atlas <liermattia@gmail.com>
<img width="1549" height="857" alt="image"
src="https://github.com/user-attachments/assets/3830233d-0635-4942-b2aa-024651e6cffa"
/>
Limbs make up roughly half of the "Per additional player" processing
overhead, while Organs make up most of the other half.
Not every organ is an easy candidate for "Event-only processing", but
external limbs are significantly easier to do so.
So this PR makes it so that External Limbs no longer require Processing
unless an event happens that would justify them requiring processing.
Which SIGNIFICANTLY reduces the overall additional cost to the
Processing subsystem per player that joins the server.
Oh and I also made the Appendix and Kidneys not require constant
processing. The Appendix will only process if it is hit by an
Appendicitis event, and the Kidneys will only process if they are either
damaged, or you get poisoned.
This PR does a few new things:
1. Adds a Mass var for Movables (/Mob, /Obj) which is literally required
for me to do anything at all with Kinematics (Very routine basic
physics)
2. Adds a derived "effective mass" statistic which is generated via
signal hook, allowing sources like Skills, Drugs, Cybernetics etc to
pitch in and contribute to a user's "Strength" in certain situations
without directly modifying mass.
3. Adds a mass modifier var for species datums, while painstakingly
calibrating each and every single species with consultation from every
lore team. A baseline human gets 72.0kg of Human Reference Mass. Any
species applied to it will multiply this by a constant that
algebraically cancels out the Human Reference Mass and replaces it with
a Species Reference Mass. Changing a species via the usual procs will
reset and then re-apply the correct values.
4. Refactored Lift/Drag/Fireman to have limits and penalties based on
relative effective mass
5. Finally, to make use of all this, I've added a new Conditioning
Skill, which modifies effective mass.
The standard assumption made for Lift/Carry is based in an assumption
that a typical character should realistically be able to
lift/carry/fireman a person 1.25x their mass. Previously the fireman
carry mechanic was heavily hardcoded, and didn't have much in the way of
granularity. If I wanted to RP a character that was a bodybuilder, there
wasn't really a way to do this. With this PR, there's now a fairly large
variety of interesting breakpoints.
This also allows there to be more granularity between different species
as desired by our lore teams. For example, a Zhan is in general stronger
than a M'sai. To give an example in the breakpoints for two different
species:
Human Lift Breakpoints:
Rank 1: 90kg (lift a Skrell, Human, Offworlder, M'sai, KA, or ZA)
Rank 2: 112.5kg (Lift a Zhan, Shell, or Diona Coeus)
Rank 3: 135kg (Lift a (Non-Industrial) IPC, Unathi)
Rank 4: 157.5kg (No new breakpoints, though you get less a movespeed
penalty from lugging around any of the above)
Can Never Lift: Industrial, Bullwark, Diona, Vaurca Ta'
Zhan Tajara Lift Breakpoints:
Rank 1: 116kg (Skrell, Human, Offworlder, M'sai, Ka, Za, Zhan, Shell, or
Diona Coeus)
Rank 2: 145kg (Non-Industrial IPC, Unathi)
Rank 3: 174kg (No new breakpoints, though you get less penalties from
the above)
Rank 4: 203kg (Juuuust barely lift an Industrial or Diona with heavy
slowdown)
<img width="1078" height="436" alt="image"
src="https://github.com/user-attachments/assets/a6802515-a827-4dc1-8734-55b604c589ab"
/>
Conditioning as a Skill sits in the Occupational category, which has
been carefully chosen and designed around to create a fairly compelling
web of opportunity costs. As a skill, it's very desireable for basically
any person that wants to play a "Muscular character" and also enjoys
fireman carrying people around, which makes it particularly useful for
hangar techs. By contrast a Paramedic might not actually need this
skill, since they can bypass the usual limits by just using rollerbeds.
---------
Signed-off-by: VMSolidus <evilexecutive@gmail.com>
Corrects some minor oversights. Kitchen supplies now spawn on the
kitchen counters once more, added a soda machine that I forgot to add,
removes an extra oven, and puts the dinnerware vendor where the oven
was.
The freezer is also less potentially lethal. Turns out I don't know the
Kelvin scale
Fixes several runtimes from the past few weeks, some additional material
repath regressions, and the fact that if I shoot you with a stream of
ionized deuterium particles, it doesn't riddle you with cancer.
changes:
- bugfix: "Fixes emergency shields runtiming when hit by thrown
objects."
- bugfix: "Fixes several stale global list runtimes."
- bugfix: "Fixes several health percentage checks that could use unset
initial health values."
- bugfix: "Fixes additional materials regressions in INDRA code."
- bugfix: "Fixes invalid fuel injector depletion math."
- bugfix: "Makes accelerated particles apply radiation damage to living
mobs they pass through."
This PR clears another server performance culprit, the Cargo Elevator.
It turns out that there was an unchecked processing call in Cargo
Exports, that would permanently increase the servers' proccessing cost
per tick for each and every single unique type sold. With this PR,
exports clear themselves from the processing list once their cost/time
recovers to its original value after being sold. They then re-add
themselves to processing once sold to start the price recovery.
<img width="1144" height="599" alt="image"
src="https://github.com/user-attachments/assets/675f645e-23c7-4c5b-905c-6ab259676fb3"
/>
Not a single one of these timers are doing anything, but they occupy
processing time. This PR makes them not do that. When you activate a
timer, they start processing. When the timer finishes, it stops
processing. No need for it to linger in the processing queue
indefinitely. There's like a hundred of these things on live.
This PR nukes the single largest and most common source of unnecessary
Process() calls, the Air Tanks. Air tanks now dynamically add and remove
themselves from processing only when actually required (such as by being
actively used) or they contain a "reactive" gas mixture.
Gas tanks made up the overwhelming majority of all process calls, and
without them always being on, the Processing subsystem becomes extremely
cheap.
<img width="394" height="33" alt="image"
src="https://github.com/user-attachments/assets/a973b863-56ad-46f6-ac34-e3cd479dd76d"
/>
I have also tested gas tanks to make sure that they still work, being
chargable, dischargable, able to breathe from them, and that opening the
valve works. All 4 actions add the gas tank to processing. When the
actions are finished, the tank exits processing.
<img width="686" height="388" alt="image"
src="https://github.com/user-attachments/assets/e91c96d3-9031-4720-8e21-aa4d4afa84fc"
/>
Sticker spam makes the map really ugly and they're way too easy to come
by, so people can keep spamming offices and stuff constantly. This makes
them not be as much of an eyesore while still sticking around sometimes.
---------
Co-authored-by: Matt Atlas <liermattia@gmail.com>
Soft-ish port of https://github.com/NebulaSS13/Nebula/pull/540. Except
we call them singletons.
Repaths all materials as singletons instead of datums, and replaces
material defines from strings to paths so that we can just run
GET_SINGLETON instead of needing to use SSMaterials. This is Step One.
This PR has no player-facing changes.
changes:
- refactor: "Repaths /material to /singleton/material."
- refactor: "Replaces all material string defines to path defines,
replacing SSmaterials procs w/ GET_SINGLETON instead."
- refactor: "Removes all material var edited objects from all maps,
adding new presets where necessary."
- refactor: "Updates recipes unit test to run all recipes against all
material singletons."
---------
Signed-off-by: Batrachophreno <Batrochophreno@gmail.com>
Co-authored-by: kano-dot <bhutanlikanoxy@gmail.com>
Life() was wasting a bunch of processing time on "Every hardsuit
forever" regardless of if it was equipped or not. Additionally Life()
was responsible for double-processing hardsuits, which is extremely
improper. Since hardsuits are being moved to SSprocessing instead of
SSmobs, which has a different tickrate, I went ahead and tick
differentiated them to make sure that nothing will break.
# Summary
This PR shortens the length of the sounds loops introduced in #22789
(ventilation and SMES humming) in order to improve sound location source
update frequency.
By popular request, this PR adds a new minor skill to the Everyday
category. The "Resolve" skill is relatively straightforwards, providing
a small permanent morale point bonus. Which by virtue of how the Morale
system works, it also does double-duty as a "Psychic Damage Resistance",
since it allows you to take that many extra points of psychic damage
from psirens before the penalties kick in. At maximum ranks in Resolve,
you can take 3 shots from an Omen before the next shot inflicts the
psi-panic condition. Effectively giving a soak pool of 1 hit per rank
bought in the skill.
<img width="1274" height="527" alt="image"
src="https://github.com/user-attachments/assets/ac3da1fd-8053-42d5-97bb-38633d420921"
/>
---------
Signed-off-by: VMSolidus <evilexecutive@gmail.com>
# Summary
This PR adds a new grim spatial sound track to the lobby track list +
lemurian sea sector and adds an ambience loop tracks to vents+scrubbers
as well as SMES's.
## Asset Licenses
The following assets that **have not** been created by myself are
included in this PR:
| Path | Original Author | License |
| --- | --- | --- |
| sound/music/lobby/spatial_audio.ogg | [spatial audio 2 by
BadWolf23/freesound.org](https://freesound.org/people/BadWolf23/sounds/723957/)
| CC BY 4.0 |
| sound/machines/ventilation_humming.ogg | [humming machinery by
Lewooz/freesound.org](https://freesound.org/people/Lewooz/sounds/545952/)
| CC0 1.0 |
| sound/machines/electrical_humming.ogg |
[SFX_GEOFON-HUM-ELECTRICAL-BOARD_4824_01 by
pblzr/freesound.org](https://freesound.org/people/pblzr/sounds/785942/)
| CC0 1.0 |
**Changes made to original sounds:**
- Added fadein/out to spatial_audio, reduced volume, corrected file
metadata (author, trackname, comment).
- Cut background noise in ventilation_humming, shortened soundfile,
corrected file metadata (author, trackname, comment).
- Shortened electrical_humming soundfile, corrected file metadata
(author, trackname, comment).
Oh look at that, every modular computer in existence was always
processing at all times, regardless of if it was actually needed.
There's a couple more small examples I caught in my first pass, but all
of the rest are very low incidence. There are of course a very large
number of modular computers at any one point in time.
- Adds Psiren meat
- Tentacles can be easily gotten, a proper butcher is needed to get
rings of body meat.
- The meat is extremely dangerous, consume at your own peril.
- Recipes will be added later, when the Horizon learns some (soon(tm))
- Maybe these future recipes won't cause you health problems.
---------
Signed-off-by: Fyni <itsfyni@gmail.com>
Co-authored-by: Wowzewow (Wezzy) <42310821+alsoandanswer@users.noreply.github.com>
Co-authored-by: hazelrat <83198434+hazelrat@users.noreply.github.com>