1638 Commits
Author SHA1 Message Date
FenodyreeAvandGitHub e73f49e9e7 Slight decloner damage nerf, Tumors are now a chance (#23102)
Reduces decloner damage so it falls just under the threshold to give a
tumor, on all but the most powerful guns.

Tumors from genetic damage are now also a chance, rather than guaranteed
at any genetic damage over 10.
You are guaranteed to have at least one tumor if your limb reaches
maximum genetic damage.
2026-08-22 01:23:14 +00:00
FabianK3andGitHub 144a6a943b Revert "Refactor Get Pain" (#23118)
Reverts Aurorastation/Aurora.3#22847
2026-08-21 01:25:32 +00:00
VMSolidusandGitHub 40e88e0d2d Refactor Get Pain (#22847)
This PR refactors get_pain() to be essentially performance free.
Previously it was a member of the top 5 most expensive procs.
I had to touch a metric shitton of files to make this happen. Notably
get_pain() was also 1/3rd of the entire processing cost for Mobs - Life
2026-08-19 22:50:40 +00:00
984c308e09 Fix ammo pile scatter crash (#23062)
* Please describe the intent of your changes in a clear fashion.
Addresses a "list index out of bounds" error occurring in
`obj/item/ammo_pile/proc/remove_ammo` when
`obj/item/ammo_pile/proc/scatter()` was called.

The root cause was a race condition where `scatter()` iterated over the
`ammo` list and called `remove_ammo()` for each item. `remove_ammo()` in
turn called `check_ammo()`, which would `qdel(src)` (and thus empty the
`ammo` list) when only one round remained. This left `scatter()` to
continue its loop and call `remove_ammo()` on an already empty list,
leading to the crash.

The fix rewrites `scatter()` to directly handle the unregistering of
signals, force-moving, and throwing of each bullet. After all bullets
have been processed, the `ammo` list is cleared, overlays are cut, and
the pile is `qdel`'d. This avoids the problematic mid-loop calls to
`remove_ammo()` and `check_ammo()`, preventing the list index out of
bounds error.
* Please make sure that, in the case of mapping changes, you include
images of these changes in the PR's description.
* Please make sure to mark your PR as wip or review required by making a
comment with !wip or !review required
* If you include sprites/sounds/... (assets) that you have not created
yourself specify the license and original author below.
* Ensure that you also credit them in the appropriate location /
changelog as specified in the contributor guidelines

### Asset Licenses
The following assets that **have not** been created by myself are
included in this PR:

| Path | Original Author | License |
| --- | --- | --- |
| icons/example.dmi | ExamplePerson (Example Station) | CC0 |


Fixes
[SERVER-PROD-3N](https://aurorastation.sentry.io/issues/7405041136/?seerDrawer=true)

---------

Co-authored-by: VMSolidus <evilexecutive@gmail.com>
2026-08-19 18:10:10 +00:00
FenodyreeAvandGitHub be17521156 Fixes armour checks, rubbers checking siemens and pain interrupting t… (#23023)
**_- bugfix: "Fixes all rubber bullets dealing damage twice."_**
Rubber bullets were dealing their pain damage twice, while checking if
they should shake your screen or not.

_**- bugfix: "Fixes all attacks that dealt pain damage checking siemens
coefficient. This makes everything but hardsuits and voidsuits stronger
against rubber bullets. Insulated gloves are also no longer immune to
rubber bullets."**_

Hardsuits has siemens 0.1, meaning they took 10% damage from all stuns.
Now rubber bullets check their melee armor. Hardsuits are now weaker, or
the same against stuns.

Regular armor all has siemens 0.5, they took a flat 50% reduction.
Security armour is slightly weaker to rubbers, ablative and ballistic
are much weaker. Combat armour is roughly the same, or slightly better.
Riot armour is a lot better.

Voidsuits all had better siemens than armour, all voidsuits are now
weaker against stuns.

Finally, all jumpsuits had 0.75 siemens, but no (or nearly no) armor.
Combined with the fix of them hitting twice this means that rubber
bullets previously dealt 50% more damage against people in jumpsuits
than they do now.

**_- bugfix: "Fixes pain failing to make your blurt out whatever you
were typing. Now getting shot will cause you to say whatever was in the
typing window when you were hit and close the window immediately,
allowing you to move."_**

No more getting stuck in the typing window when you're getting sprayed
down by an STS!
 

_**- bugfix: "Fixes all attacks that had manually set armour checks,
previously they ignored the armour they were meant to check and decided
what armour affected them based only on their damage type."**_

Weapons that were set to specifically target armour types, such as
explosive projectiles (rockets, etc) were instead defaulting to the
damage type they dealt. So a rocket to the head was checking your melee
armour, not your bomb armour.

---------

Signed-off-by: FenodyreeAv <fenodyree.av@gmail.com>
2026-08-16 16:13:03 +00:00
FenodyreeAvandGitHub 28328a717f Modlaser Fixes and material cost tweaks (#22965)
- balance: "Buffs gattling laser modifier charge time from 3 to 2
seconds. It took so long to charge multiple people thought it was
bugged."

This modifier was simply a downgrade, you'd be dead by the time it
fired. Often people handed gattling guns would think they are bugged and
unable to fire. This might help a bit.


- balance: "Tweaks material costs, replacing uranium with silver and
gold. Uranium was previously used everywhere."

Everything used uranium, even things that really didn't make sense. As
uranium spawns on station in engineering and the machinists, this is a
slight nerf.


- bugfix: "Fixed a bug where energy guns would not properly handle
reliability failures when the gun was out of charge."
- bugfix: "Fixed improvement potential calculations for ions and slimes.
You no longer gain improvement shooting monkeys with ions, or for
shooting slimes with lasers."
- bugfix: "Fixed a bug with bluespace capacitors teleporting items in
teleport inhibitor range. This was due to the EMP happening before the
teleport and destroying the inhibitor."
- bugfix: "Fixed Ion modulators not correctly decreasing the number of
shots."
 
Fixes: #22850
2026-08-02 10:19:34 +00:00
BatrachophrenoandGitHub 0a738fd73a Various Issues Tracker Bugfixes (#22954)
Fixes https://github.com/Aurorastation/Aurora.3/issues/22674
Fixes https://github.com/Aurorastation/Aurora.3/issues/22682
Fixes https://github.com/Aurorastation/Aurora.3/issues/22766
Fixes https://github.com/Aurorastation/Aurora.3/issues/22767

  - bugfix: "Fixes Mechatronic Fabricator's emissive overlay."
  - bugfix: "Fixes Hivenet Manifest hive color assignments."
  - bugfix: "Fixes Crew Manifest color defines."
- bugfix: "Inbuilt /silicon modular computers no longer broken by EMPs."
  - bugfix: "Fixes energy gun desc_extended inheritances."
2026-07-29 16:25:31 +00:00
FenodyreeAvandGitHub 7b1122ddef Buffs mech heavy gauss (#22874)
Heavy gauss now has anti-material properties, making it better in mech
vs mech fights.
It can also now destroy doors with repeated (3) hits.

It also now deals roughly the same damage as calling ex_act(2) on the
mob.
This is the same as if a mob was in the heavy explosion radius.
It doesn't use ex_act because that has a 70% chance to stun.
I didn't buff the explosion itself so that the mech's shots don't
destroy floors.

Before:
<img width="506" height="694" alt="image"
src="https://github.com/user-attachments/assets/a893b7ca-9c9a-4add-9688-70d1f15e7518"
/>


After:
<img width="525" height="742" alt="image"
src="https://github.com/user-attachments/assets/648e0fb2-3647-471a-94ae-bcda52b944a0"
/>
2026-07-26 18:06:26 +00:00
FenodyreeAvandGitHub e7a68e3e10 Modlaser betaray fix (#22887)
Phoron bolts are only used in modlasers now, so I felt comfortable
editing the base projectile.
It now checks bio armor, does more radiation to match the increased
radiation cap.

The two florarays got missed in being assigned damage malnuses and were
absurdly lethal if you shot people with them.

changes:
- bugfix: "Fixes flora rays dealing full toxin damage, despite not being
combat modulators. Also updates the message if they are powerful enough
to deal damage."
- bugfix: "Fixes flora rays not checking radiation armor, despite being
radiation beams."
- bugfix: "Fixes Phoron bolts dealing the wrong damage and respecting
the wrong armour type. They now do toxin and check bio armor. They also
irradiate more, as radiation now goes up to 1000."
2026-07-23 18:32:13 +00:00
FenodyreeAvandGitHub affab40530 Hardsuit bugfixes (#22848)
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."
2026-07-17 11:32:03 +00:00
b50f42f9d3 Removes combat proning. (#22808)
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>
2026-07-12 23:47:25 +00:00
BatrachophrenoandGitHub 1c8c0c2221 Bugfix pile (#22823)
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."
2026-07-12 18:06:28 +00:00
VMSolidusandGitHub 30fb0f69a0 Processing Audit Part 1 (#22803)
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.
2026-07-09 21:03:42 +00:00
VMSolidusandGitHub 75dfa30013 More Atom Cleanup (#22777)
Unused vars take up memory and worsen proc overhead. By far the worst
offenders to this are vars on /atom and /mob since they more or less
globally stack lots and lots and lots and lots of proc overhead. So I'm
cleaning up unused vars on these to save resources. I also noted several
vars that are excellent candidates for making components or elements.
When I'm not drowning in school work anymore, their time is numbered.

Mfw every space carp forever has a CCIA record, no wonder mobs are
laggy.
2026-07-07 14:13:51 +00:00
FenodyreeAvandGitHub 788861ba12 Nerfs human shields (#22670)
Human shields are no longer a 100% chance to block any frontal damage.

The opposite arm, legs and head are always exposed and can hit despite
the human shield, though this comes with the additional miss-chance from
targeting limbs.

Additionally, destroyed limbs allow shots to damage both the hostage and
the hostage taker when hit.

This doesn't make the situation much better for the hostage, but it does
mean that carrying around a corpse as a shield in combat is no longer
viable.

Size also matters, a Ta holding up a human as a shield isn't going to
get much cover.

<img width="1390" height="325" alt="image"
src="https://github.com/user-attachments/assets/cfe61f99-89bb-428d-9f96-4b1fff32c646"
/>


https://github.com/user-attachments/assets/593acc65-f327-4058-ba8d-9bb596a43d3b
2026-06-22 13:54:03 +00:00
60d09f31b1 TCAF expansion/rework stuff (#22717)
- renames/redescs/etc existing stuff to fit new TCAF lore
- lots of 4 years defunct TCFL stuff has been deleted or
repathed/renamed
- the tcfl peacekeeper ship that was soft-removed has been deleted
- the uniforms has also been modified and have had the necessary amount
of blue added. essentially i kitbashed the old TCFL uniforms with the
new TCAF uniforms

i probably missed a lot of tcfl stuff still.

---------

Signed-off-by: c#min7 <sadkermit01@gmail.com>
Co-authored-by: Kano <89972582+kano-dot@users.noreply.github.com>
2026-06-22 13:53:32 +00:00
FenodyreeAvandGitHub 222505f244 Fixes modular laser basic focusing lens (#22721)
changes:
- bugfix: "Fixes the base focusing lens for modular lasers not having
reliability."
2026-06-19 16:08:10 +00:00
FenodyreeAvandGitHub ab65965c5c Fixes guns being unwielded by mousing over the inventory UI (#22712)
Fixes #22036 

changes:
- bugfix: "Fixed guns getting unwielded when mousing over UI elements."
- bugfix: "Fixed mob_can_equip using M as mob, instead of mob/M. Also
adds its parameters to all its children."


https://github.com/user-attachments/assets/0f427609-3cfc-4c71-b817-44a8d2c6350d
2026-06-16 19:21:38 +00:00
FenodyreeAvandGitHub 987a08bf87 Fixes a modlaser improvement exploit and an upgrade bug (#22646)
Added an on_hit signal, instead of using the target in post_fire.
This fixes cheesing upgrades by standing behind a wall and shooting at a
target you will never hit.

Moved improvement cap from a define, onto the base object.
This fixes some components continuing to eat improvement potential, even
when they are fully upgraded.

Fixes Ions dealing damage in addition to EMPing their target. Also
reduced the max number of shots when an Ion emitter is fitted.
2026-06-08 10:44:15 +00:00
VMSolidusandGitHub bf1196e6f1 High Gun Skill Fix (#22587)
This fixes a math error that caused sufficiently high firearms skill to
wrap back around to less accurate guns. The fix is pretty simple, if the
calculated dispersion (in degrees) is a negative number, it instead
becomes 0. The dispersion math downstream of this effectively treats
dispersion as a magnitude, meaning -15 degrees of dispersion was the
same thing as 15 degrees, when the intended interaction was "Having -15
degrees of dispersion offsets the penalty from less accurate guns".
2026-06-03 18:20:24 +00:00
cf585ef505 Ship combat rework (#22566)
Makes ship combat significantly more destructive (and a bit deadlier),
especially with non-explosive projectiles.

**Additions:**
- A shell that penetrates a solid (dense) structure will cause spalling.
This spall does 2-30 damage, depending on range and has a high embed
chance. These embedded chunks are large enough to be ripped out by hand.
(But you probably shouldn't). The pilot's suit has 30 ballistic armor,
so a prepared bridge crew can survive a lot of spall.
- Adds a gun that shoots any ship weapon that admins can spawn. Useful
for testing, or for adminbus where they don't want to have to spawn a
whole overmap ship.
- Made several structures destructible, vending machines, computer
frames, grilles (these were just bugged) and watertanks (and their
children). These structures could just block infinite shots and were
common enough to serve as effective armor for the horizon. These now
spawn shrapnel (of their material if it's set), in addition to sheets of
steel when destroyed.
- Added support for negative maim chance. This allows chosen projectiles
to be prevented from decapitating. No more accidentally gibbing the
bridge crew's heads. (Unless they get hit with something really really
big).

**Balance:**
- All non-explosive anti ship rounds got significant buffs. Typically
2-3x Anti-Material numbers.
- Armour piercing anti-ship rounds got massively increased penetration
stats. Typically 4-8 from 1-2.
- Doors now get destroyed in less hits, if they are hit by anti-material
projectiles. Hits to destroy -= Antimaterial / 2
- Francisca frag shells now shoot less fragments but deal more damage.
394 projectiles for every shot was a bit laggy, now it's only 280.

**Shields:**
Shields now take more power. 13-14 megawatts for a 10 strength shield.
Just inside the ship's generation capacity with both the INDRA and
Supermatter running.

Instead of deleting any projectile they are hit by, shields now have
different failure modes.
- Firstly, a piercing projectile has it's penetration reduced by the
shield strength. Eg A shot that would go through 10 walls, only
penetrates 4 after going through a 6 strength shield.
- Secondly, a projectile has it's damage multiplied by 1 - shield
strength / 10, then has shield strength subtracted from it's damage. Eg.
A damage 100 projectile, hitting a 5 strength shield, has it's damaged
reduced to 50, (100 * 0.5), then to 45. (50-5)
- Thirdly, an explosive projectile (that does not penetrate per the
first step) does not explode, but instead deals it's full damage to the
shield.

Hits to the shield now also damage the field itself, not just the shield
tile. As such, a very big hit on the shield can bring the whole thing
down, requiring an engineer to reset it.

Shields can now be upgraded with research components. Additionally,
shield generators can now support more than one capacitor. The
roundstart capacitor on the Horizon is only good enough to support a 6
strength shield.
The upgrades increase efficiency, strength loss over time and charge
speed.

**Overmap Targetting**
Previously, shells would spawn within 20 tiles of their target and aim
directly forwards. This was bugged for shots with burst, which would
instead all aim inwards and mostly miss. This is the reason the Grauwolf
(in addition to the explosion bug below) and Fransisca felt so useless,
only one of every shell in a burst would hit.

Shots now spawn at the map edge, based on the orientation of the
projectile and ship. Diagonals are now accounted for.
Shots are then aimed directly at the target selected on the console,
with 3 degrees of dispersion.

**Bugfixes:**
- Fixes lots of explosions that didn't pass a turf to the explosions
subsystem. This caused the explosion not to happen if the thing hit got
qdeled before the subsystem could get the turf to spawn the explosion
on.
- Embedded shrapnel no longer gets the initial projectile name, this
prevents it getting named shrapnelshrapnel.
- Fixes a bunch of projectile piercing bugs, mostly with grilles and
windows. Shots now go past window frames without hitting them.
- Fixes shields not having a click delay when attacked.

---------

Signed-off-by: FenodyreeAv <fenodyree.av@gmail.com>
Co-authored-by: Matt Atlas <mattiathebest2000@hotmail.it>
2026-06-03 16:52:13 +00:00
FenodyreeAvandGitHub f66007e324 Modlaser fixes (#22550)
Fixes the easy stuff from: #22545

The only real balance change, dropped improvement per variable by 50%.
Should have been like this from the start, but I mistakenly assumed no
one would even reach close to the cap.

Makes repairs with welders go through .use_tool, fixes not needing
welding goggles and adds nice sparky visuals.
Much more robust handling of improvable variables, negatives don't break
improvement assignment now.
Fixes improvement cap, missed a *100 to convert from decimal to
percentage.
Fixes improvement potential being assigned to things that couldn't be
upgraded.
Fixes the Gatling mod upgrading fire delay (pretty useless on something
with a 3 second warmup)
Fixes the weapon analyzer print out showing completely incorrect
numbers.
Fixes the weapon analyzer eating your combitool and being
indestructible.
Gives some more feedback on why things can and can't be upgraded.
2026-06-03 15:24:32 +00:00
VMSolidusandGitHub 201592f6bd Mob Destroy Refactoring (#22573)
Refactoring the entire destroy proc path from Mob Human all the way down
to Atom while trying to find the causes for the damn mob human hard
deletes. This PR comprehensively reorganizes every single stray
snowflake var used by /atom/ all the way to /mob/living/carbon/human,
and makes sure that every var that COULD store a reference, is now
cleared during the entirety of the Mob Destroy() parent hierarchy.

This may very well be the end of the lag war. 

In total, I've hunted down and cleared 39 hanging references between
/atom and /mob/living/carbon/human

---------

Signed-off-by: VMSolidus <evilexecutive@gmail.com>
2026-06-03 15:15:56 +00:00
lewandGitHub 68c5b95f8b Fixes modular guns not self-recharging until first shot is fired (#22567)
fixes #22025 

- bugfix: "Modular energy guns with a reactor now self-recharge from
assembly, instead of only starting after the first shot is fired."

try_recharge is currently only triggered on fire and loops until charge
is full. this triggers it when a modular gun is completed to initiate
the recharging
2026-06-01 10:32:05 +00:00
Wowzewow (Wezzy)andGitHub e3d3d00347 More Handling Sounds (#22528)
Just ports more pickup, drop and handling sounds from /tg/ to keep pace.

Attributions in their own .txt files.
2026-05-30 12:07:44 +00:00
87848fbdc3 Adds skill based upgrades to modular lasers. (#22425)
**Modular laser changes**

- tl:dr Shooting mod laser at a mob counts up an improvement potential
variable, which when the gun is disassembled, gets spread across the
components.
- When the components are repaired, by someone with high skill, there is
a chance to increase a variable, such as damage, shot count, accuracy.
- Players give the biggest increase, followed by non-player humans
(protohumans & mechs fall in this catagory), then simple mobs and
finally monkeys. Non combat modlasers improve slowly when used for their
intended task (betarays slowly tick up when shooting hydroponics bays)

The philosophy for these changes is that research should continue to be
involved with the equipment they give out.
It should also be difficult (but not impossible) for research to upgrade
their weapons without support from other departments.
Xenobio slimes, protohumans, medical help to keep the protohuman alive
while you shoot it, security help to actually use the guns on real
targets (this gives the biggest increases).

The more powerful a weapon is the harder it is to upgrade, as it'll kill
it's targets quicker. The more upgraded a weapon is the more difficult
it is to upgrade further, improvement potential will get wasted on
components that have already hit their cap.

On their own, by the time the 5 monkeys research start with are dead,
it's possible for a max skill scientist to improve one gun's worth of
components by ~25%.

The weapons research can now make at roundstart (with max tech) are
significantly worse than what spawns in the armoury.
The weapons research can make with gold, silver, uranium and phoron are
equal to what spawns in the armoury.
The weapons research can make with diamonds are better than what spawns
in the armoury.

Major nerfs to heat vents, auxiliary capacitor and capacitor overcharge,
these were the problem children.
It is now impossible to make a weapon that does not take damage through
use. Safe designs will only break with heavy use, by people who don't
bring them back to research for repairs.
Powerful designs break quickly and need repeated repairs.

Adds two side grade capacitors that can be made at roundstart (with max
tech), one higher damage and fewer shots. One lower damage and more
shots.

High skill characters get much more information when examining modular
lasers and a chance to throw the gun away before it explodes.

Adds some defines to help balance these changes:
Improvement cap (the total percent a component can increase) Currently
100%.
Increase & Decrease Cap, how much an individual variable can be
increased or decreased. Currently 2x and 0.2x.
Improvement multiplier, multiplies all improvement gains. Currently 1x.

**Firing Pin fixes & changes**
Fixed ID locked firing pins and adds them to R&D.

Adds the inner research department to the firing range locked pins. This
is so xenobotanists, xenobiologists & xenoarchs can use the modular
lasers. Freeze rays for slimes, betarays for xenobotanists, laser
activation for artifacts for xenoarch.

It is still impossible for a scientist to make a weapon they can use
anywhere, but they can give them to security who can use them freely.

**Misc bug fixes**
The weapon analyzer UI now updates and only shows relevant statistics,
instead of displaying every variable even when they do nothing.
Replaces the buggy tesla zap with just electrocuting the holder.
Fixes a few broken visual messages.
Fixes the vermin modulator not killing anything, now it also works on
grems.
Fixes click delay on malfunction.
Fixes radiation damage numbers.
Fixes the temperature modulator.
Fixes the report printout showing the wrong numbers.

---------

Co-authored-by: Copilot <copilot@github.com>
2026-05-27 15:51:37 +00:00
Casper3667andGitHub 29bc02f44e Various bullet fixes and changes (#22503)
fixes https://github.com/Aurorastation/Aurora.3/issues/22370 and
https://github.com/Aurorastation/Aurora.3/issues/22475

I decided to lower the amount of bullets to increase the item pile, as
otherwise removing a single shotgun shell from a pile would be enough to
reduce its size, and that felt wrong.

  - rscadd: "Added the ability to stack spent bullet casings."
- balance: "Ammo piles now increase in size the second time when there
is 6 items in the pile, rather than 8"
- bugfix: "Fixed bullet casings being ejected when trying to suicide
with a gun on safety."
- bugfix: "Fixed that bullet piles didn't update their size correctly."
- bugfix: "Fixed that shotgun practice shells were labelled incorrectly
in the autolathe."
  - bugfix: "Singular bullets no longer layer under tables."
2026-05-27 15:39:42 +00:00
BatrachophrenoandGitHub 4ecb0bc21c Repath obj/machinery to obj/structure/machinery [MDB Ignore] (#22500)
Repaths obj/machinery to obj/structure/machinery. **Note for
reviewers:** the only meaningful changed code exists within
**code/game/objects/structures.dm** and
**code/game/objects/structures/_machinery.dm**, largely concerning
damage procs. With the exception of moving airlock defines to their own
file, ALL OTHER CHANGES ARE STRICTLY PATH CHANGES.

Objects, _categorically_, are largely divided between those you can hold
in your hand/inventory and those you can't. Machinery objects are
already subtypes of Structures behaviorally, this PR just makes their
pathing reflect that, and allows for future work (tool actions, more
health/destruction functionality) to be developed without unnecessary
code duplication.

I have tested this PR by loading up the Horizon and dismantling various
machines and structures with tools, shooting guns of various types
throughout the ship, and detonating a bunch of explosions throughout the
ship.
2026-05-26 19:35:48 +00:00
FenodyreeAvandGitHub d8e02149e0 Fixes EMPs affecting carried items twice, fixes EMPs not disabling energy guns. (#22482)
Human_defense was calling it's parent, which also EMP'd all carried
items, so carried items were taking two EMP acts.
This mean that PDAs always exploded from light EMPs.

Energy guns used sleep() in their EMP act and didn't multiply by *
SECONDS.
EMP_LIGHT is 2 and EMP_HEAVY is 1, previous implementation was
multiplying where it should divide.
Also added some feedback about why the gun won't fire.

Now decrements a timer in process, 10 seconds for a light EMP, 20
seconds for a heavy EMP.
2026-05-26 17:58:27 +00:00
374e220be6 Hardsuit interface overhaul (#22403)
**Summary**
Converts hardsuit NanoUI to TGUI and overhauls much of the associated UI
and module code.

The conversion alone is what necessitated quite a bit of cleanup of our
11-year-old hardsuit code, for which I leaned heavily upon tg's
implementation of MODsuits. Therefore, this is a PARTIAL (???) port of
both https://github.com/tgstation/tgstation/pull/59109 and
https://github.com/tgstation/tgstation/pull/77022. While a lot of
wonderful code and UI design was ported 1:1 (for which I am grateful!),
our hardsuits are still NOT MODsuits. Most of our back-end remains the
same.

Fixes https://github.com/Aurorastation/Aurora.3/issues/22071

changes:
  - refactor: "Migrates Hardsuit NanoUI to TGUI."
- refactor: "Updates Hardsuit module type definitions, configuration
data, many misc other functions for the purpose of the UI refactor
(general utility and readability improvements)."
- balance: "Hardsuits now passively consume a small amount of energy
while online, even when retracted."
- balance: "Hardsuit boots can no longer be retracted without also
retracting the chest piece first."
- balance: "Mounted hardsuit storage module max space increased from 9
to 14."
- balance: "Plasma cutter (standalone and mounted) damage increased and
range decreased by 50% each."
- soundadd: "Adds several new sounds for hardsuit use (attribution
located w/ files)."
- code_imp: "Makes power_wattage_readable() a global proc and adds
power_joules_readable()."
  - code_imp: "Lots of misc DMdoc updates."
- bugfix: "Synthetic Charging Stations now charge hardsuit power cells
as intended."

**Old UI**
<img width="804" height="1321" alt="Screenshot 2026-05-04 135705"
src="https://github.com/user-attachments/assets/f01957a0-7cec-4fcc-b862-c9dfde0dcc43"
/>

**New UI**
<img width="998" height="782" alt="Screenshot 2026-05-04 174658"
src="https://github.com/user-attachments/assets/ad402902-d489-435a-9c16-82150ed82618"
/>

### Asset Licenses
The following assets that **have not** been created by myself are
included in this PR:
| Path | Original Author | License |
| --- | --- | --- |
| icons/mob/rig_modules.dmi (mounted-plasmacutter)|
[Ghostsheet](https://github.com/ghostsheet) | CC-BY-SA |

---------

Signed-off-by: Batrachophreno <Batrochophreno@gmail.com>
Co-authored-by: VMSolidus <evilexecutive@gmail.com>
2026-05-18 19:21:11 +00:00
582d213b8d Some Misc Bugfixes (#22225)
This PR fixes a few bugs that were recently reported both by players and
by our new bug monitoring system. An AI agent (specifically Gemini 3)
was used to do some of the code diving process, while the fixes were
tested and verified myself manually. Yes I have actually verified the
fixes in this PR in testing.

The swap to Calculus methods for organ EMP was done by me, no AI. I love
Calculus to much to let a bot do it for me. In particular my fix to
organ EMP was to make it so that EMP damage is handled directly as
"number of fractional seconds the EMP will last", and that they tick
down cleanly per second. I did this because after fixing mechanical
organs not doing ANY EMP effects at all, I tested them and discovered
that the EMP effects were extremely underwhelming. They were like, "Your
screen only briefly filling with static for like 2 ticks", and "your
heart skips a single beat", which was lame and nonthreatening.
Significantly more fun is making the static last for N number of
seconds, and for the Heart to fail to pump for N number of seconds (very
life threatening!)

The new organ EMP handling vars are per-organ rather than a define, so
if we want there to be different EMP times for hearts vs eyes, that's
totally doable. Just make the heart have a larger recovery rate, or the
eyes have a smaller recovery rate.

---------

Signed-off-by: VMSolidus <evilexecutive@gmail.com>
Co-authored-by: Arrow768 <1331699+Arrow768@users.noreply.github.com>
2026-05-03 17:07:44 +00:00
FenodyreeAvandGitHub 3f97096fe1 Fixes projectile accuracy checks (#22285)
Fixes projectiles always hitting.

When a projectile rolled a 'miss', and returned Null as it's bodypart to
hit, it was being defaulted to hit the torso.

This meant that a low accuracy weapon, was not more likely to miss than
a high accuracy one.
In fact, low accuracy was a significant buff, because it made your shots
scatter to random limbs 30% of the time.
There was also no reason ever to aim for the torso, shooting the head or
hands was mechanically correct.

This is why mercs one handing the STS in burst mode were breaking so
many hands.

<img width="386" height="226" alt="image"
src="https://github.com/user-attachments/assets/a0c2992f-ca5b-41cb-84c9-c6a3f74e09d0"
/>
This is the table of the chance to hit the torso, after this fix.

Point blank shots (range 1 and 2) always hit.

Almost all lasers have 2 accuracy (when wielded, if they are 2 handed)
Almost all ballistics have 1 accuracy (likewise when wielded, if
possible)

Snipers have up to 4 accuracy. (When scoped)

Burst fire imposes an accuracy malus, the STS-35 is the heaviest malus
outside of admin spawn guns like the L6 SAW.

burst=5, burst_accuracy=list(1,0,0,-1,-1)

This means the first shot of the burst is accuracy 1, then it falls off.

If you aim for a different body part, these are the base chances to
miss:
	BP_HEAD = 70,
	BP_CHEST = 10,
	BP_GROIN = 20,
	BP_L_LEG = 40,
	BP_R_LEG = 40,
	BP_L_ARM = 40,
	BP_R_ARM = 40,
	BP_L_HAND = 60,
	BP_R_HAND = 60,
	BP_L_FOOT = 60,
	BP_R_FOOT = 60

There is a minimum 30% chance to hit, regardless of any modifiers.
2026-04-23 00:35:06 +00:00
FenodyreeAvandGitHub 6f2253a658 Nerfs projectile piercing and makes it's chance based more on armour piercing than damage. (#22248)
- Projectiles now lose 30% of their damage for every pierce they go
through by default.

- Ship weapons only lose 5% damage on pierce. 
  
- The default chance was changed from (Pierce Chance (20%) + Damage, to
Pierce Chance (0%) + Damage / 4 + Armour Piercing.
This means the merc's STS, went from 55% chance to pierce, down to 30%,
with reduced damage when it does.

- Specialist anti-tank weapons, such as the PEAC, now have their pierce
chance multiplied by their anti-material potential.
This gives the PEAC 100% piercing chance.


<img width="327" height="261" alt="image"
src="https://github.com/user-attachments/assets/661904ec-3957-4116-a10b-e8a8fc14cd2d"
/>
2026-04-20 11:32:22 +00:00
48bd18b651 Fixes human shields (#22279)
Fixes #22107, human shields not working.
The code that handled humans shields got removed in the projectile
refactor, this restores it exactly as it was.

- If you are facing the shooter, with someone in a neck grab, the shots
will hit your hostage.
- Point blank shots will ignore the hostage.
- Piercing shots can go through the hostage and hit you.

I think here or Collide is the best place for this check to happen. I
tried placing it further down the chain, but couldn't get it working
without much bigger changes.



https://github.com/user-attachments/assets/f79a62d4-f7f3-450f-8a83-51e7133c063b

---------

Signed-off-by: FenodyreeAv <fenodyree.av@gmail.com>
Co-authored-by: VMSolidus <evilexecutive@gmail.com>
2026-04-20 11:31:58 +00:00
FenodyreeAvandGitHub 8d92c62a1f Fixes one handed firing dispersion penalties (#22252)
Fixes One Handed Dispersion & Accuracy penalties only applying to full
auto.
Removes one handed penalty from guns that can only be fired one handed.

<img width="903" height="201" alt="image"
src="https://github.com/user-attachments/assets/5306410b-6ecf-43fe-bf5c-f7a2d407ca27"
/>
<img width="904" height="201" alt="image"
src="https://github.com/user-attachments/assets/9e9d243c-5daa-410e-89f7-aad23b1256bc"
/>

The STS dispersion penalty (the worst, except for the light machine gun)
is 5, 5, 15.
So short bursts from the STS one handed have: 
79%, 79%, 41%, 41%, 41% chance to hit at 7 tiles.
Down from:
100%, 100%, 58%, 58%, 58% chance to hit at 7 tiles.

As the first 2 shots of your burst are still 100% accurate, this gives a
very tiny reason to actually wield your STS, if you're shooting bursts
at max range.
2026-04-19 05:24:46 +00:00
260f744906 Skills System Revival: The Things She Remembered Had Never Been Her Own (#21853)
This PR is a revisit to the previously derelict PR #20159 that has been
unfinished for sometime now. More details about it in general can be
found here:
https://github.com/orgs/Aurorastation/projects/2?pane=issue&itemId=53167153

For awhile I've been talking about "Things I've been doing but it would
be really nice to do them with a skills system", or "And here's how I
would put this into the skills system when it's done". The main thing
that was stopping me from building it myself was having poor real life
skills in UI code and in DB code. However, I've gotten permission to
resume this PR, which has already completed the steps I would not have
been able to do myself. The rest of the PR fits well into my skillset as
a dev.

I'm opening this PR as a draft so as to enable my dev environment to
locally track all the previously modified files. I'll take this PR out
of draft and give this a full writeup when I have more work to show for
the PR this weekend.

### TODO

- [x] Rework a decent chunk of the currently existing skills to no
longer require hardcoded inserts into other systems. EG, converting from
classical ss13 methods, to modern /tg/-style ECS coding methods that
work off of component-signal patterns.
- [x] Make sure all of the existing skills have actual game
functionality (I won't PR a 2016 Baystation12 situation where 90% of the
skills are fluff only)
- [x] Add the various skills not yet made but are necessary for
completion sake, EG: Pilot (Spacecraft), Gunnery, Pilot (Walkers).
- [x] Examine each existing job in the game and assess whether it should
have a skill made with it in mind, or if it's covered by an existing
skill.
- [x] TO DISCUSS, BUT NOT ESSENTIAL: Additional skill proposals not
currently in the pre-existing TODO list, proposing subcategories.
- [x] Ensure that the previous TODO list is completed.

### Current Skills
The current list of skills, checkmarked for if I've completed them/they
have actual game mechanics. Or if we're just relegating them to separate
PRs. Originally this list was going to be forced to visit for a bare
minimum "does at least one thing" requirement, but now that is being
forgone due to this PR ballooning out of control and in complexity, as
well as development time overruns.

- [x] Bartending
- [x] Cooking
- [x] Gardening
- [x] Entertaining
- [x] Electrical Engineering
- [x] Mechanical Engineering
- [x] Atmospherics Systems
- [x] Reactor Systems
- [x] Medicine
- [x] Surgery
- [x] Pharmacology
- [x] Anatomy
- [x] Forensics
- [x] Robotics
- [x] Pilot: Spacecraft
- [x] Pilot: Exosuits
- [x] Research
- [x] Xenobotany
- [x] Xenoarchaeology
- [x] Xenobiology
- [x] Unarmed Combat
- [x] Armed Combat
- [x] Firearms
- [x] Leadership

---------

Signed-off-by: VMSolidus <evilexecutive@gmail.com>
Co-authored-by: Matt Atlas <liermattia@gmail.com>
Co-authored-by: FabianK3 <21039694+FabianK3@users.noreply.github.com>
Co-authored-by: Matt Atlas <mattiathebest2000@hotmail.it>
2026-04-18 14:33:48 +00:00
d5931c5ffe Adds an universal object health system. (#21266)
https://www.youtube.com/watch?v=ZpUYjpKg9KY

As per title. The goal is to add health to most objects in the game and
thus allow them to be dynamically destructible, while also avoiding
shitcode like each structure having its own snowflake health update
proc.

---------

Signed-off-by: Matt Atlas <mattiathebest2000@hotmail.it>
Co-authored-by: Matt Atlas <liermattia@gmail.com>
Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com>
2026-04-16 23:22:08 +00:00
VMSolidusandGitHub ba0bb16435 Some Projectile Code Cleanup (#22217)
Cleaning up some memory leaks due to projectiles. This one I've actually
made by hand.
2026-04-12 22:20:07 +00:00
VMSolidusandGitHub 96d0ab85f1 Point Blank Guns Fixes (#22195)
closes #22065
closes #22107

This PR fixes some bugs with point blank gunfire that made it not work
as intended. It's now possible to shoot someone on the same tile as you
(such as a Human Shield Hostage) if you click on them directly,
otherwise your bullets will bypass them by shooting in the direction you
declare. You can also no longer shoot people who have a one way glass
window between you and them, the bullet will hit the glass first.

Finally, you can also no longer accidentally shoot yourself if you
sprint forwards in the same direction you are shooting (by running into
your own bullets).

Basically, you can now take a human shield, use them as cover, and then
when security tries to run in you can execute the human shield by
clicking on their head.

Yes, you can also still shoot yourself if you deliberately click on your
own sprite. Suicide by gun still works.


https://github.com/user-attachments/assets/fbfe0eea-03ee-419a-b9ae-c08af79c1e15
2026-04-11 12:12:21 +00:00
FenodyreeAvandGitHub e8944e087d Modular laser fixes and nerfs (#22147)
**Fixes the bugs found on the recent nations round.**

- Fixed firedelay doing nothing on modlasers with the shotgun lens. Also
fixed the existing laser shotgun as a side effect. Fixes #22141 and
Fixes #22137
- Fixes the shotgun lens not having any dispersion.
- Fixes bluespace capacitors not teleporting you on a failure.
- Fixes phoron capacitors not hurting the user when they explode.
- Fixes messages about malfunctions not displaying to the user.
- Fixes a bunch of bugs related to repairing components
- Stops components getting qdeled but leaving their references on all
other components, breaking them if reused.

**Nerfs a few of the most problematic things.**

- Cut the damage of the blaster projectile by 20% and reduced it's AP
from 60 to 35, also drops it's incendiary value to 1.
This projectile was FAR more powerful than any other, ignored all armour
and set the user on fire without a damage penalty.
With this change, lasers are now better on unarmoured targets, the
blaster is better on 40+ armour, so Heavy and Specialist Ablative.

- Added an immediate electric shock to the user (and anyone within one
tile if the capacitor is unstable enough).
The previous low level failures all irradiated the user. This did more
damage in the long term, but didn't affect the outcome of any fights and
was easy to negate with suits.
The tesla shock is obvious to everyone nearby, causes immediate pain and
the gun to be dropped if the capacitor is overcharged.
This makes minor failures a significant factor mid fight, especially on
powerful guns.

- Makes the phoron capacitor directly damage the hand holding it when it
explodes.
This capacitor can be built with phoron and uranium, which both spawn at
roundstart, though uranium isn't accessible.
It's therefore the most common capacitor, and the second most powerful.
This increases downside a lot, in addition to the explosion being fixed,
it will break the hand that fires it when it malfunctions.
If the capacitor is unstable, such as in a 60 damage monster, it will
gib the hand that fires it on malfunction.


**Tweaks, aimed at making the guns easier to understand, repair and
test**

- Adds a locker and boxes of modlaser parts. Not mapped in, but easy to
spawn for testing.
- Adds big red warning messages, visible to everyone nearby, explaining
what happened to the gun, who was holding it and how bad the malfunction
was.
- Made the lenses repairable with glass, or reinforced glass. The
nanopaste cost of a repair was more than 50x the cost of just printing a
new lens.
2026-04-07 20:08:41 +00:00
FenodyreeAvandGitHub 5f06d51da3 Projectile piercing fix (#22157)
Fixes the fact that no projectiles could pierce.
Uses the bitflags introduced in the projectile refactor.
Only some heavy rifle bullets and most ship weapons will pierce.
This also indirectly fixes how anemic all the non-explosive ship weapons
were.

This should probably also check armour piercing, the armor on a mob and
have some values tweaked for some weapons, but I wanted to keep this a
pure bugfix, so the numbers are exactly as they were before this was
broken.

Lore people might want to check their weapons to decide what they should
pierce, how much and how often.



https://github.com/user-attachments/assets/538a3a21-a796-4a81-ba53-6f91addd6785
2026-04-07 14:52:10 +00:00
Casper3667andGitHub a772f72fee Fixes sec revolver lethals (#22129)
I did a small fuckup by not doublechecking stats. This makes them equal
to the .45 pistols.
2026-04-01 10:12:55 +00:00
CatsinHDandGitHub 130988fa44 6.8mm and PRA rifle rebalance (#22089)
Rebalances the 6.8mm bullet and it's AP variant to not be antag shredder
9000. Additionally, alters pricing in the cargo order list and adds an
AP variant of the 6.8mm to the cargo order list. The values for the
rounds are below.

6.8mm: 40 dam | 12 AP
6.8mm AP: 30 dam | 30 AP

Against 55 armor (major ballistics armor):
6.8mm: 13 damage
6.8mm AP: 18 damage
5.56: 16.67 Damage
5.56 AP: 25 Damage
7.62: 18.56 Damage

The thought process behind these values:
<details><summary></summary>
<p>
Adhomai does not make wide use of personal body armor. As a result,
ammunition does not prioritize defeating body armor. Therefore, it is
more effective the less armor one has, leading to a high damage value
but low AP values. As they are rifle power cartridges, there is still
some AP. The specific 6.8mm AP cartridge was created for defeating the
armor of the S'rand'marr coalition, thus why it is comparable to 7.62
</p>
</details> 

These values can be tweaked as needed to make the rifle and ammo
reasonable.
This PR DOES NOT modify the rifle itself, and therefore should not
conflict with #22088
2026-03-26 21:49:14 +00:00
e5b8918885 Fixes tajaran rifles loading more ammo than intended (#22090)
Bugfix
made a hacky fix for the tajaran rifle issue in
https://github.com/Aurorastation/Aurora.3/pull/22088

---------

Signed-off-by: Birigilis <kavbest10@gmail.com>
Signed-off-by: Cody Brittain <1779662+Generalcamo@users.noreply.github.com>
Co-authored-by: bovvv <kavbest11@gmail.com>
Co-authored-by: Cody Brittain <1779662+Generalcamo@users.noreply.github.com>
2026-03-26 10:06:30 +00:00
Casper3667andGitHub f09bcd6cdd Replaces security disruptors with ballistics and removes all disruptors (#21987)
Security officers and the warden each get a .45 pistol loaded with
rubbers, and a spare rubber mag in their lockers.
The investigator get a new .45 revolver loaded with rubbers, based on
the konyang revolver, and a speedloader, also with rubbers.

The armory has had .45 speedloaders added to it, but is otherwise
untouched.

Also the autolathe gets to print .45 speedloaders now for the
investigator gun.

Practice ammo has been added to the autolathe.

The Elyran ERT had their disruptors replaced with plasma pistols.
Other non-Horizon disruptors were replaced with lethal .45.
Horizon disruptors were replaced with rubber .45.
2026-03-25 21:19:47 +00:00
Cody BrittainandGitHub 23789d4113 Sorts out existing projectile weapons (#22059)
This PR is intended to sort out our existing guns into something
resembling organization. In addition, ancient decrepit guns are removed,
and abstract paths are labeled as such.

In addition, all guns are now standardized to refer to their model.
Considering the huge number of weapons we have, a `pistol` is not
descriptive enough.

NOTE: At over 200 files touched, this is being split. Not everything was
sorted, but this is already a monster to sort through. The rest can
wait.
2026-03-25 15:37:50 +00:00
13083e7c55 Fixes Modular Lasers (#22054)
Fixes very old bugs with modular lasers that prevented them from taking
damage when fired.
Fixes a multiply by zero error that removed their fire delay.
Fixes the weapon analyzer, so it correctly shows their damage and number
of shots.
Fixes the shot-multiplier of the two capacitor mods.

Tweaks the damage chance, so that it's not a guarantee that you gun
breaks on the first shot if you have more than 1 mod.
Reduces the size of components, so that people can pick them up and put
them in their bags after their guns break.

Forum thread about these changes:

https://forums.aurorastation.org/topic/22876-modular-laser-rework-and-fix/

---------

Signed-off-by: FenodyreeAv <fenodyree.av@gmail.com>
Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com>
2026-03-17 16:19:54 +00:00
SabreMLandGitHub 7be78d4c50 Fixed the last round in an ammo pile getting deleted (#22052)
## Description
Fixed a bug where splitting a stack of two cartridges would delete one
of them and cause a runtime. Both of these were caused in
`/obj/item/ammo_pile/proc/check_ammo()`.

In this case the proc is called after the second-to-last round has been
removed. The *intention* is for the final bullet to be moved onto the
floor, then the `/obj/item/ammo_pile` item is deleted, then the bullet
is equipped into the user's hand in its place.
In practice, the bullet is never actually removed from the pile's `ammo`
list, so it gets deleted alongside it when the list is cleaned up in
`/obj/item/ammo_pile/Destroy()`.

https://github.com/Aurorastation/Aurora.3/blob/ea939d0aa2cae35dc14dc1f41c94773b87b40003/code/modules/projectiles/ammunition/ammo_pile.dm#L125-L135
The runtime happens on L135 when it continues on after that since there
isn't a return. (`ammo` doesn't exist anymore).

## Media
### Before:


https://github.com/user-attachments/assets/dadad09f-5291-4f90-ad5b-9989d5d11735

**Result after unloading and manually reloading a magazine:**
<img width="315" height="82" alt="before 1"
src="https://github.com/user-attachments/assets/69e4ae2b-dbb9-4c2e-a1b9-30c911b08463"
/>

### After:


https://github.com/user-attachments/assets/13a5f4c4-0711-4f64-b74c-3f2bc968a4d3

**Result after unloading and manually reloading a magazine:**
<img width="315" height="81" alt="after 1"
src="https://github.com/user-attachments/assets/911e25e0-84b1-4a98-9bb3-8bca9469349e"
/>

## Changelog
  - ~~rscdel: Banished the ammo goblin, who fed upon loose cartridges.~~
- bugfix: Fixed the last round in an ammo pile (stack of cartridges)
getting deleted after the second-to-last round was removed.
- bugfix: Fixed 'runtime error: list index out of bounds' in
`/obj/item/ammo_pile/proc/check_ammo()`. (Not player facing)
2026-03-16 23:08:35 +00:00
Cody BrittainandGitHub b525005618 Nerf incendiary projectiles (#22015)
Incendiary projectiles, from things like hivebots, plasma weapons, and
incendiary shotguns, were too powerful. This nerfs them drastically.
2026-03-16 21:10:32 +00:00
1beef3d476 Collapses the lying down intent into normal resting. (#21967)
Instead of middle clicking to lie down, you now simply rest. You can
also now do it with your gun in your hand. Removes all code related to
bespoke lying down.

To-do:

- [x] Add a signal to make firearm accuracies update on lying down.

---------

Co-authored-by: Matt Atlas <liermattia@gmail.com>
2026-03-09 21:47:47 +00:00