See title. Players have been able to assign a custom description to the
loadout flag/banner selection since forever, but it never persisted over
to actual 'hung up' flag object and was essentially erased if ever used.
<img width="777" height="600" alt="image"
src="https://github.com/user-attachments/assets/6b80b6f0-a120-4ba2-a46d-a680b7e5fff5"
/>
---------
Co-authored-by: Jaraci <mirandatrasen@nt.net>
# Summary
This PR adjust welding packs and fryers. Welding packs now spawn empty
[on the Horizon] to encourage the persistent welding tanks and fryers
have their optimal oil level adjusted to balance out oil refills.
**Depends on https://github.com/Aurorastation/Aurora.3/pull/23005**.
## Changes
- Added new sprite for empty welding packs.
(Regular vs new low variant)
<img width="835" height="108" alt="image"
src="https://github.com/user-attachments/assets/a882bff1-901b-4b0e-8d1d-750ed4e1e83c"
/>
- Welding packs now spawn empty (only on the Horizon and during map
load).
- Deep fryer no longer contain 9 full tanks of cooking oil. They contain
100u now and make refills using the [persistent cooking oil
tanks](https://github.com/Aurorastation/Aurora.3/pull/23005) much more
reasonable. Added a wrench to the kitchen for tank handling.
# Summary
This PR adds visual fill levels for fuel, extinguisher, water, cooking
oil and lube tanks.
The cooking oil tank now is also persistent and was added to the cargo
order manifest.
Sprites by @alsoandanswer
## Preview
<img width="404" height="472" alt="image"
src="https://github.com/user-attachments/assets/4ff4a0dd-e790-4a63-bc1a-6e198199ee7c"
/>
Four major fixes. These are all pretty clearly bugs, but the result is a
substantial mech nerf (except EMPs against EM armor.)
First, EMP armour.
EMP armour did nothing, it was partially ported to use TG's Element flag
system, this finishes that.
Rather than make the EMP armour immune to EMP, it spends power to negate
it.
The cost is 1000 / severity. Heavy EMP is 1, Light EMP is 2. This is 5%
of a basic mech cell for light, 10% for heavy.
Also fixes the pilot getting EMP'd twice for every EMP act on the mech.
Second, open hatches let attacks hit the pilot. Chance is 80% from the
front, 20% from the sides.
The chance is mostly so that turrets that always aim torso don't shoot
mechs forever, always hitting the pilot inside.
Third, cockpit damage actually matters now. Previously shooting the mech
in the chest was nearly worthless, no important components were there
and destroying it did not destroy the mech.
Now if the cockpit is completely destroyed, attacks against it penetrate
through to hit the pilot.
These attacks still account for the mech's armour.
Combined with the hatch getting stuck closed, you can have tense rescues
of pilots bleeding out inside their suits.
Fourth, the mech running out of power actually stops it doing things.
Uranium and Phoron power cores allowed mechs to keep running forever,
even at fractional power, because they recharged slightly every tick.
Now if the mech ever cannot afford the power cost of an action it shuts
down.
It can be powered back up immediately if the power core recharges it,
but it cannot now do costly actions at single digit power.
I fixed mech combat shields.
They suck, they use the auras system which does not play nicely with the
new projectile code.
Recursive calls and spaghetti mess.
Works for now but could use a complete rewrite.
---------
Signed-off-by: FenodyreeAv <fenodyree.av@gmail.com>
The timer on the nuke is increased to be between 10 and 15 min, so that
the Horizon has enough time to react to it. Furthermore, it can only be
deployed in a non-rad shielded area that is on the Horizon and not in
vacuum. Once it is deployed, its area will also be announced.
All of this should prevent an easy attempt to nuke the Horizon, and give
them a chance to fight back.
Atom health added damage handling at the base obj/structure level.
Many structures had their own damage handling code in bullet_act.
Bullet act requires that you call it's parent.
Fixes all of the double damage instances I could find, trying to keep
the behavior as close to the old as possible.
Added armour to a few things that had snowflake damage reductions.
Reduces max phoron and steel storage potential of the IC Circuit
Printer. Particularly steel is reduced when the cloning disk is
installed and phoron is set to one bar instead of two.
Also put in some safety measures for importing being lost due to server
latency.
Oh and well the radio command receiver is built in now.
- bugfix: "Fixed window frames blocking thrown grenades and bullets."
- bugfix: "Fixed grenades launched instead of being thrown getting stuck
on railings and tables."
- Represents phoron lore in telecomms stock part descriptions
- Represents phoron lore in SMES unit sprites/descriptions
- Adds a phoron-free cryogenic alternative to phoronic SMES units
- Replaces all instances of quantum mechanics being used for FTL Comms
with Bluespace (eg. the Quantum Relay -> Bluespace Relay)
Does not map the cryo SMES in anywhere, but use-cases would be Einstein
Engines, EE-supported factions, and less affluent indie groups
some basic recolouring:
<img width="333" height="107" alt="resprite1"
src="https://github.com/user-attachments/assets/8961274a-39bc-4523-8e11-9daadc652be7"
/>
<img width="559" height="106" alt="resprite2"
src="https://github.com/user-attachments/assets/3afefe66-5487-41f1-bbd7-59ea1bb37b40"
/>
changes:
- qol: "Mobs in animal traps can now be transferred directly to Stasis
Cages by click-dragging rather than requiring them to be in a net."
- bugfix: "Mobs can no longer use their ranged attacks while contained
inside objects (including animal traps)."
- bugfix: "Stasis cages now apply stasis only while powered and
correctly clear it when releasing simplemobs."
- bugfix: "Fixes stasis cage transfers race condition freeing trapped
animals randomly."
- bugfix: "Corrects stasis cage safety-wire status display."
RPEDS now work on most machinery via attackby() handler.
Part matching checks circuit-board requirements and the machine's
component_types which fixes the science telepad RPED compatability.
Alt-clicking an autolathe with an RPED now recycles the materials in the
autolathe.
Normal lmb activity is preserved on the autolathe.
Signed-off-by: mineymonkey <brandontanner63@outlook.com>
Fixes https://github.com/Aurorastation/Aurora.3/issues/21944
Spiritual successor of
https://github.com/Aurorastation/Aurora.3/pull/22352
Cherrypicked changes from the C3 Crew Management branch, this PR
contains all NTNet extensibility features, including Field Relay
construction, off-site camera usage (contingent on standing up remote
hardware and being out of jamming), etc. This also fixes a handful of
outstanding telecomms and view/mobeye-related bugs adjacent to where I
was working.
changes:
- rscadd: "Adds NTNet extensibility, requires new machinery constructed
on away-site z-levels."
- rscadd: "Breaks NTNet Relay machinery into Quantum Relay ('core' obj
on Horizon) and Field Relay (deployable off-site constructions)."
- qol: "Embedded cameras (basically every video camera EXCEPT those
which are installed on walls) can now be viewed from NTNet-connected
z-level, not just connected ones."
- rscadd: "Adds several public camera monitor consoles to the Horizon
(near where public sensor grid feed consoles already exist)."
- rscadd: "Adds some spare camera console boards to Horizon technical
storage."
- qol: "Adds action button for 'cancel-camera-view' verb while viewing
cameras or looking up/down z-level."
- bugfix: "Fixes Jockey comms (frequency was missing from ANTAG_FREQS)."
- bugfix: "Fixes look-up/look-down actions intermittently failing
without first using cancel-camera-view."
* Mining points now carry over between rounds for each character.
* Mining point carryover is capped at 15,000 points and expires after
one week of inactivity.
AI usage disclosure: The code for this was created in-part using GPT 5.6
Sol.
Again uploaded on the behalf of The_Ill_Fated.
changes:
- rscadd: "Adds Eris Flag and Banner to player loadout options."
- imageadd: "New sprites for the Eris Flag and Banner."
The journalist's microphone by default no longer allows everyone to
speak into it. Click someone with the microphone in hand to allow the
microphone to pick up their voice. If you move more than 5 tiles away
from the microphone, you will automatically be de-registered from its
allowed listeners. People screaming will bypass the allowed listeners.
You can alt click the microphone to disable this functionality.
---------
Co-authored-by: Matt Atlas <liermattia@gmail.com>
Fixes https://github.com/Aurorastation/Aurora.3/issues/22959
Fixes https://github.com/Aurorastation/Aurora.3/issues/22960
changes:
- bugfix: "Integrated circuits can now display screen text and other
examine related things."
- bugfix: "Fixed the direction of the wall mounted integrated circuit
when placed."
- bugfix: "Fixed that the integrated circuit kit had the wrong tools."
- bugfix: "Fixed that the integrated circuit printer put things on the
turf instead of in hand."
- bugfix: "Fixed that removing integrated circuit components put them on
the turf, and that they were dropped if they did not fit inside the
device."
- bugfix: "Harvesting a plant multiple times by clicking it repeatedly
before it finishes is no longer possible."
- bugfix: "The kitchen machinery can now be upgraded."
- bugfix: "The farmbot requirement in bounties was reduced."
- bugfix: "Fixes the inability to put custom pizzas in the pizza box."
I had accidentally made doors unbreakable, except by anti_material
weapons, like the PEAC and ship weapons. This fixes that.
Two PEAC shots will still destroy any normal door.
This is mostly a bugfix, the increase to door armour only compensates
for them being mortal again. PEAC basically ignore armor with their 35AP
and 100+ damage to structures.
Regular weapons weaker than a laser rifle still cannot completely
destroy a door.
It takes an STS ~90 rounds to destroy a blast door.
https://github.com/user-attachments/assets/840514c1-b3a5-4de7-bd81-8651781502dd
changes:
- bugfix: "Doors and blast doors can be destroyed again with enough
sustained damage."
- bugfix: "Fixes doors 'breaking' repeatedly, when hit at 0 health."
- bugfix: "Fixes doors taking damage twice when hit by projectiles. This
also fixes projectiles ignoring a door's armour."
- balance: "Increased the armor values on blast doors and vault doors."
- rscadd: "Added a brief particle effect when a door is destroyed."
Remaps the machinist workshop to fulfil a few criteria missing from
https://github.com/Aurorastation/Aurora.3/pull/22718. Particularly aims
to make the workshop more functional for IPC medical gameplay.
- The surgical theatre has been expanded so two machinists can more
practically work in the same space at the same time. In the existing
design, this portion of the workshop is far too claustrophobic. It also
has a desk.
- The exosuit chargers no longer obstruct access from the garage door.
- Resolved a lot of awkward uses of decals and platforms, which should
also make for more useable space.
- Cleaned up the wiring - both rooms are now wired to the civilian
subgrid. Previously, the main workshop area was hooked via a very
awkward line to the operations subgrid, while the theatre was wired to
civilian.
- Shifted a lot of the clutter into the robotics vendor, such as the
empty first-aid kits for medbots.
- Shifted materials crates + the crate shelf to a central position, to
make them easier to track.
Things of note for maintainers:
- It's never ideal to remap something very soon after the original
implementation, but having given this remap a full month, I think it's
had a fair chance. Having played machinist in it, the layout is very
tough to work in. It's a very cluttered environment, which becomes much
harder to look at once there's a disassembled mech cluttering the centre
with a dozen or so objects. This aims to be more intuitive to play in
and less overwhelming for players.
- The surgical theatre contains one additional IV drip, one extra O-
bag, and one organ cooler for borgings, and there are now two roller
beds accessible by the front desk. I'd rather have a more unique
solution for this problem long-term, but in the short-term it very much
sucks to have to ask to borrow a roller from medical just so you can
move a damaged industrial, given you can no longer pick that industrial
up unless you're playing a huge species.
- Otherwise, the workshop has the same resources as before and will be
able to make the same things.
(screenshot taken after testing, and prior to further changes)
<img width="1081" height="1080" alt="image"
src="https://github.com/user-attachments/assets/a8eef0e3-630b-463d-b3c3-22769001b513"
/>
<img width="480" height="448" alt="image"
src="https://github.com/user-attachments/assets/535dc851-7bab-48f7-a916-a5a1f12bf650"
/>
changes:
- bugfix: "Fixes C4 effects not correctly getting their parent item."
- bugfix: "Fixes C4 not being placed correctly."
- bugfix: "Fixes Dirty Bombs deleting their own radiation source."
- bugfix: "Fixes Dirty Bomb goop puddles disapearing long before the
radiation does."
- bugfix: "Fixes drinking radioactive waste not irradiating you."
3 dirty bombs set off. One on a floor, one on a wall one on a machine.
<img width="1191" height="1182" alt="image"
src="https://github.com/user-attachments/assets/584e7572-441c-4937-8e0e-7203010fcd54"
/>
---------
Signed-off-by: FenodyreeAv <fenodyree.av@gmail.com>
adds window repair adhesive spray containing silicate. single use.
found in the engi-ved vending machines
for repairing cracked/damage windows without having to fully deconstuct
and reconstruct them.
can also strengthen windows
replaces some old irl chocolates with lore chocolates (mostly GetMore)
- GetMore Chocolate, replacing Hersheys/Hearsay
- GetMore Nuts, replacing the Crispy Crunch(?)/Crunchy Crisp
- GetMore Bubbles, replacing the Aero/Spacewind
- GetMore Kelp, new
- Readies, new
- basic recolour/redesc of the tau ceti bar
- basic recolour/redesc of 100k credits bar into Idris' colours
<img width="880" height="104" alt="Capture"
src="https://github.com/user-attachments/assets/7a3bb3b5-bd9f-4a92-84fb-0951f8228e95"
/>
also removes non-vegan chocolates from the vegan MRE
Complete overhaul of Integrated Circuits Final Edition!
- Adds phoron cost to circuits (not assemblies).
- Printer searching capability.
- Changed names of assemblies to better match their description.
- Adds cloning and auto appending JSON for large builds.
- Adds database, debug, advanced math circuits.
- Reworks the list circuits to finally accept anything other than NUM.
- Adds plenty of list circuits to allow functional building and clearing
of lists.
- Reworks Complexity/Space to allow a bit better flexibility in creation
of devices.
- Adds a "Headroom" concept where space/complexity can go beyond the
maximum to a very slight degree. Concretely, unused space gives `2`
extra complexity per unused component slot, capped at `15%` of
`max_complexity`. Unused complexity gives `1` extra component slot per
`6` unused complexity, capped at `15%` of `max_components`.
- Groups math and logic circuits and adds subgroups.
- Doesn't mess with the circuit tool kit.
- Adds a xenoarch drill assembly with a nice sprite. Thank you
@EnchantedCrocolisk for the sprite!
- Changes activation limit time to 1 second from 2 seconds, adds a 1
second timer that is unique to the INTEGRATED CIRCUIT PRINTER with the
advanced design disk.
- Ports several Baystation integrated-circuit manipulation components,
primarily from
Baystation12/Baystation12https://github.com/Baystation12/Baystation12/pull/22458,
with anchoring bolts and hatch lock sourced from
Baystation12/Baystation12https://github.com/Baystation12/Baystation12/pull/25052.
- Changes the electronic ear piece into a workable radio headset with
working encryption keys capability and unique ways the Microphone and
TTS interacts with it.
- Removed the ability for all the electronic wearables to spawn with a
basic cell.
- Combines https://github.com/Aurorastation/Aurora.3/pull/22466,
https://github.com/Aurorastation/Aurora.3/pull/22456,
https://github.com/Aurorastation/Aurora.3/pull/22455,
https://github.com/Aurorastation/Aurora.3/pull/22446 that are now
closed.
Fleshes out wire panel skill behavior and signaler management.
Electrical Engineering 4 was very OP for revealing all wire labels of
all machines, and it was super fun while it lasted.
Wire panels now have associated skills with their use, and increased
skill ranks will increase the proportion of wires (chosen at random)
that are easily recognizable on sight for certain types of wiring
panels.
**Professional:** 75% revealed
**Trained:** 50% revealed
**Familiar:** 30% revealed
_(note: having both Electrical and Mechanical engineering at least
Trained gives you that baseline 30%, reflecting how your knowledge can
probably translate to decent guesswork.)_
The following wire panels are affected:
**Electrical Engineering:**
- APCs
- Cameras
- IFF Beacons
- Radios
- Smartfridges
- SMES Units
**Mechanical Engineering**
- Airlocks
- Disposal Units
- Fabricators
- Vending Machines
**Atmospherics Systems**
- Air Alarms
**Reactor Systems**
- Particle Accelerator Control Boxes (lol)
**Robotics**
- Hardsuits
- Suit Storage Units (sharing the love is all)
- Robots
- Tag Scanners
**Xenobiology**
- Stasis Cages
Also, I made it possible to blow out all the lights in an APC's area by
snipping the power regulator cable and then pulsing the lights wire.
Great for signalers.
Speaking of signalers, new app deployed to all Engineering, Research,
and Robotics personal modular computers:
<img width="816" height="722" alt="Screenshot 2026-07-14 144049"
src="https://github.com/user-attachments/assets/3d588712-ebfd-47ac-b699-7cdac2c04907"
/>
Self-explanatory. Please only use corporate-provided software for
behavior within your contract regulations.
Fixes large cages destroying the universe.
changes:
- bugfix: "Fixed captured creatures in large animal traps/cages
potentially causing runtimes when the cage was placed on tables or
racks."
- bugfix: "Fixed dragging large animal traps/cages onto tables or racks
being treated as the mover trying to step through the trap."
Movement sounds for mobs are now handled by a single component. Movement
sounds are fed into it through signals, which contain both a movement
source (like an item for a mob, causing the sound) and a list of sounds
to pick from.
To-do:
- [x] Figure out how to do barefoot species sounds
- [x] Maybe movement sounds for simple mobs
- [x] More movement sounds for other items
---------
Signed-off-by: Matt Atlas <mattiathebest2000@hotmail.it>
Co-authored-by: Matt Atlas <liermattia@gmail.com>
Co-authored-by: VMSolidus <evilexecutive@gmail.com>
changes:
- bugfix: "Fixes airbubble pressure setting. It's now high enough that
you don't die from using one."
- bugfix: "Fixes airbubble blinding you forever when you get out of it."
- bugfix: "Fixes airbubble sprite not updating when it is opened from
inside."
---------
Signed-off-by: FenodyreeAv <fenodyree.av@gmail.com>
Co-authored-by: VMSolidus <evilexecutive@gmail.com>
**The_Ill_Fated:** new flags/banners for heap of Solarian stuff
**Hazelmouse:** new flag/banner for Axiom
Stupid Solarian Canton officially gone, sickass stripe now. All worlds
affected (either updated or added):
Callisto
Ecclesiastical Axiom
Enceladus
Europa
Ganymede
Lhokgon
Luna
Lycoris
Lycoris (Provisional)
New Hai Phong
New Peoria
Northern Reconstruction Mandate
Novo Igman
Old Mars
Pluto
Provisional Mars
San Colette
Sankt Frederick
Silversun
Solarian Biesel
Early Solarian Biesel (Tau Cetian)
Solarian Mictlan
Solarian New Gibson
Solarian Xanu
Solarian Konyang
Southern Reconstruction Mandate
Sālamasian Republic
Unity Station
Venus
Visegrad
See icondiffbot for images.
# Summary
This PR is the next update to the persistency subsystem. The goal of
this PR is to provide more framework like functions to allow more types
of content to be made persistent.
Currently only volatile game objects created during a round can be (*in
a [clean](https://www.youtube.com/watch?v=rZ3ETK7-ZM8) way*) saved and
made persistent. This update attempts to provide methods to make
*everything*¹ persistent.
This introduces persistent generics and history.
## Database
The following things are going to be changed and added in the database
(open in new tab for better visibility, PNG file includes the drawIO
code):
<img width="1692" height="1041" alt="aurora_persistency_db drawio"
src="https://github.com/user-attachments/assets/ea53f419-f9aa-4592-af8f-3a8d5edf3177"
/>
**Deviations on database implementation from diagram:**
- Removed unique constraint on history table - Prevented adding multiple
records per round per attribute.
## Framework surface changes
- MC/VV: Moved global object track register to subsystem var space.
- MC/VV: Point of interest: Added history_cache and generic_cache to
subsystem var space.
- MC/VV: Updated subsystem stat entry message, now providing information
on cache sizes of new types.
- Added `singleton/persistent_type` defines (Type, clean-up rules,
finalization hook) and macros allowing new definitions of said types.
- Added cache structures that are also used for returns on public procs
in generics and history persistent types.
- Major new framework features: Persistent history (example: Mining
yield records) and persistent generics (example: Persistent Horizon
overmap position). See documentation for more information.
DrawIO diagram for documentation, includes source in it (open in new
tab):
<img width="200" height="200" alt="Persistence-subsystem-flowchart
drawio"
src="https://github.com/user-attachments/assets/51f28331-f999-49a2-a7cc-58278f7ae416"
/>
## Tasks
(These lists are not comprehensive.)
**General**
- [x] Update DB - Write SQL scripts.
- [x] Add subsystem modular files for generics and history.
- [x] Add type definition logic, macros.
- [x] Add type-DB init logic.
- [x] Logging.
- [x] A lot of testing. *A lot.*
- [x] Changelog.
- [x] Self-Review.
- [x] Update documentation on the persistence subsystem.
**"Persistent history"**
- [x] Add init logic.
- [x] Add finalize logic.
- [x] Add framework surface procs.
- [x] Get last record.
- [x] Get last X records.
- [x] Add record.
- [x] Add character ID related validation.
- [x] Add initial example mechanic.
**"Persistent generics"**
- [x] Add init logic.
- [x] Add finalize logic.
- [x] Add framework surface procs.
- [x] Save.
- [x] Load.
- [x] Add initial example mechanic.
## Changes
Too many changes to be listed here - Check changelog and actual changes.
## Warning
There are certain use/test cases that *cannot* be tested locally due to
missing preexisting data in the database. This should only affect new
data structures (new persistent types), not existing data.
¹ _Large scale persistent mapping is excluded for this version._
---------
Co-authored-by: Copilot <copilot@github.com>
This permits the impact drills to work for surgeries where a screwdriver
would work. For the regular uses that would be opening the hatches on
prosthetic limbs and prosthetic organ repairs. This was done as
machinists, who primarily do those surgeries, usually print an impact
drill for themself anyway so it was an annoyance to have a screwdriver
just for that one thing in their entire workshop.
While at it, I also changed a few hardcoded tool checks elsewhere to not
be as hardcoded.
- Adds the Caria origin, by request of human lore. Carians are vulnrable
to light, but have low light vision.
- Adds the Caria accent.
- Adds Carian flags, available in the loadout.
- Adds the Carian tribunal necklace, available in the loadout.
- All description are by Schwann.
- All sprites are by me.
---------
Signed-off-by: Fyni <itsfyni@gmail.com>
Signed-off-by: Wowzewow (Wezzy) <42310821+alsoandanswer@users.noreply.github.com>
Co-authored-by: Wowzewow (Wezzy) <42310821+alsoandanswer@users.noreply.github.com>
With this, cell chargers can be constructed and upgraded. They are about
double the power of a regular recharger with an equal tier of
capacitors, as that is roughly the difference they were at tier 1.
I take no responsibility for people forgetting to upgrade their power
supply to handle the extra drain. Go fetch a better cell in the APC for
that, as it worked fine in local testing when done so.
A regular recharger was added to the machinist's workshop, as they had
no way to recharge device batteries before.
This changes up some of the possible warehouse spawn content. More book
options, couple of shield gens, slightly higher chance of some mats and
some other changes.
The big notable one is the chance of a big mob in the warehouse was
changed from 3% per round to 9% and the list for small and large mobs
was expanded. Particularly psirens were added, with a need to reduce the
spawn rate after the arc.
The warehouse spawn total was also reduced from 180 to 120, partly as a
test and to make the warehouse slightly less overloaded.
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."