Another and hopefully my last fix for the Observer hard dels. This
probably but might not also clear the Storyteller harddel since they're
an observer child. But I dunno. I have actually tested this.
<img width="670" height="435" alt="image"
src="https://github.com/user-attachments/assets/41e75448-211d-429b-b694-43b9d025e996"
/>
- bugfix: "Fixed the operations status display screens not showing the
elevator status."
- bugfix: "Fixed the cargo delivery program not displaying the account
that was used to pay for an order with."
- bugfix: "Fixed the cargo delivery program not displaying shipped
orders regardless of payment status."
- bugfix: "Fixed the ghostly ambience on the operations lift and the
lift near security."
- bugfix: "The operations program now displays the elevator time in
seconds instead of minutes, given the minutes would always show 0."
This PR fixes a hard del related to any kind of direct organ replacement
via loadouts, which it turns out all of them were doing. But it was most
commonly showing up with bioaugs because the boosted heart and boosted
liver are the only organs besides custom items that replace an internal
organ during loadouts spawning.
Just cleaning up some Mob Human related timers that occasionally hard
del(). Fixing the /mob/living/carbon/human hard del completely is
proving to be a challenge because there's just so many damn things that
could possibly cause it that there's really no definitive source for it
without having the reference logging enabled.
This has been a clickable button on the telepad control console for
literally over a decade with its own variable within GPSes, and I think
the original coder just forgot to have it display. It's going down as a
bugfix because of this, var/locked_location is literally never used
otherwise.
Telescience was reworked to use portals years ago specifically so using
GPSes isn't risk-free, but portals make having a valid destination
_mandatory_, so this won't really remove risk as it just removes tedium.
For the other 4 telescientists, rejoice.
<img width="583" height="490" alt="image"
src="https://github.com/user-attachments/assets/db7e2be4-9b08-419a-b50c-7cef1922ff8c"
/>
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.
Adds Drosiá Cherry soda, and refluffs the grape soda to Drosiá Grape!
Assunzione's very own soft drinks.
Both are available on random yokes, or from the Commissary.
---------
Signed-off-by: Fyni <itsfyni@gmail.com>
Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com>
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>
fixes watches referring to bluespace during the roundend timer, ashtrays
not having a examine hint about emptying vs putting it into a disposal,
and ashtrays not giving a feedback message when trying to empty a empty
one.
fixes#22209 and fixes#22215.
Fixes https://github.com/Aurorastation/Aurora.3/issues/22170
This PR disqualifies any tank with distribute_pressure set to 0 from
being considered by Internals when determining the 'best' tank
available. This currently only affects CO2 jetpacks.
This PR also adds a few cases where using the atmos analyzer on a tank
didn't update its manipulated_by var.
```
- server: "Changed the synthsprites to use the new DBCore"
- server: "Changed the MalfAI to use the new DBCore"
- server: "Changed the Alien Whitelists to use the new DBCore"
- server: "Changed the Requests Console to use the new DBCore"
- server: "Changed the Contracts Uplink to use the new DBCore"
- server: "Changed the Admin Ranks to use the new DBCore"
- server: "Changed the Job Bans to use the new DBCore"
- server: "Changed the Tickets to use the new DBCore"
- server: "Changed the Create Command Report to use the new DBCore"
- server: "Changed the WebInterface interconnect to use the new DBCore"
- server: "Changed the CCIA Recorder to use the new DBCore"
- server: "Changed the IPCTags to use the new DBCore"
- server: "Changed the Main Menu Poll-Check to use the new DBCore"
- server: "Changed the Client-Procs to use the new DBCore"
```
---------
Co-authored-by: Werner <Arrow768@users.noreply.github.com>
Makes several small changes to the warehouse submaps; primarily, this
reworks the 'radioactive waste' submap such that the radiation it
produces does not fill the rest of the warehouse. In future, more
hazardous submap content should be restored with some changes made to
the warehouse itself to both improve signalling and workarounds, but for
now, we'll be nice to the hangar techs.
While working in the submaps, some that were not very interesting were
removed (such as the ship gun and cars), and others were added or
modified, largely based on feedback from TheGreyWolf. Examples of such
modifications were the inclusion of a crate of music cartridges in the
'entertainment electronics' submap, which hadn't existed before.
changes:
- qol: "Warehouse submap compartment shutter now spawns closed by
default."
- qol: "Warehouse submap compartment walls are now reinforced walls for
radiation blocking."
- qol: "Modifies several warehouse submaps; removes static objs like
ship weapon and cars, increase variety of existing content, removes a
few lore-unfriendly items, tunes radiatioactive waste submap, etc."
- bugfix: "Acid barrel now spawns with acid in it."
Guess how many people play characters with the Light Sensitive trait who
also have mechanical eyes? At least one, me.
Well it turns out my original implementation ends with your augs
poisoning you because it didn't check for whether your eyes autoheal.
Removed the 1 damage from the fluorescents being too bright.
* Please describe the intent of your changes in a clear fashion.
Fixes
[SERVER-PROD-4](https://sentry.io/organizations/aurorastation/issues/7404427517/).
The issue was that the `QDEL_NULL` macro was used on a list variable,
causing `qdel` to error when a list was passed directly. To resolve
this, `QDEL_NULL(buttons)` was replaced with `buttons = null` in
`/datum/tgui_alert/Destroy`. This refactors the cleanup of the buttons
list during alert destruction. This fix was generated by Seer in Sentry,
triggered by Werner. 👁️ Run ID: 13170119. Not quite right? [Click here
to continue debugging with
Seer.](https://sentry.io/organizations/aurorastation/issues/7404427517/?seerDrawer=true)
* 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 |
---------
Signed-off-by: Arrow768 <1331699+Arrow768@users.noreply.github.com>
Co-authored-by: sentry[bot] <39604003+sentry[bot]@users.noreply.github.com>
Co-authored-by: Arrow768 <1331699+Arrow768@users.noreply.github.com>
# Summary
This PR adds a argument check to the spawn verb to prevent server lag
caused by searching all atoms.
## Changes
- Added length check to admin Spawn verb.
There's like 8 different items in the game that go in a sheet snatcher.
If the intended purpose of the Sheet Snatcher is to grab all of the
material sheets from a giant pile of random crap in the warehouse, then
it spamming the chat is apparently incredibly useless. This PR was
requested to me by some warehouse mains.
<img width="425" height="85" alt="image"
src="https://github.com/user-attachments/assets/427c2426-6784-4377-8d59-1aa8d7469409"
/>
I have actually tested this PR to verify it. Thanks to Sentry for
finally giving me the data point needed to figure out where the hell the
bug was coming from. It turns out the culprit for The Pants Hard Delete
was people accidentally saving Abstract Pants in their loadout, which
would immediately produce a runtime error when the game attempts to add
them to the chargen dummy.
<img width="655" height="560" alt="image"
src="https://github.com/user-attachments/assets/6b4028a2-0661-4479-a9a5-03cc7157e5f7"
/>
<img width="1919" height="985" alt="image"
src="https://github.com/user-attachments/assets/f10f6e84-65e3-4a73-b977-4017aca5169a"
/>
I have also actually tested this PR. This PR cleans up Hostile Mob code,
removing **several** hard del conditions that were universal across all
hostile mobs, as well as a few individually specific simple mobs that
weren't cleaning up overlay images correctly. While I was at it, I
removed some verifiably unused vars from hostile mobs.
<img width="385" height="397" alt="image"
src="https://github.com/user-attachments/assets/fa4d574e-74dc-4cb1-b2a9-d06bce6bde3f"
/>
Blast doors are counted as doors, and so were capable of intercepting
the turf hand click, even though they have no hand interaction. This
meant that most doors which had shutters sharing their tile could not be
closed via clicking the tile underneath them. There's a simple fix to
that, and it's exempting shutters from turf hand (which you can't close
them by clicking on them anyway)
Another PR for Bluespace Techs, this time swapping them to hold a
weakref to their original mob. There's a ton of code in BSTs that can
create race conditions with all their associated Destroy() procs, so
swapping them to weakref methods should significantly cut down on that.
Small mistake that makes fire extinguishers cause a hard delete. Water
effects were nulling the effect reagents before calling their parent,
but then their parent attempts to QDEL_NULL(reagents) a reference that
it can no longer correctly cleanup. The simple solution was to get rid
of the Destroy() override on effect/water since it wasn't needed.
Light sensitivity traits (either to excess of light or absence of light)
were not firing, because they were tucked behind a 0.1% chance prob for
an unrelated spooky noise proc if you're in pitch black.
Did some testing and found a prob value that was infrequent but not
absent. Also added a little visual effect for the light-sensitive one
(similar to v minor flash, which is 1 eye dmg that immediately heals & a
very brief translucent grey overlay).
* Please describe the intent of your changes in a clear fashion.
Fixes
[SERVER-PROD-8](https://sentry.io/organizations/aurorastation/issues/7404514309/).
The issue was that: Mob's `adjustHalLoss` compares HUD `pain` object to
integer, instead of organ's numeric `pain`.
- Corrected pain check from local 'pain' variable to 'E.pain' when
healing damage.
- Ensures the pain attribute of the specific entity 'E' is referenced.
This fix was generated by Seer in Sentry, triggered by Werner. 👁️ Run
ID: 13169977
Not quite right? [Click here to continue debugging with
Seer.](https://sentry.io/organizations/aurorastation/issues/7404514309/?seerDrawer=true)
* 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 |
---------
Signed-off-by: Arrow768 <1331699+Arrow768@users.noreply.github.com>
Co-authored-by: sentry[bot] <39604003+sentry[bot]@users.noreply.github.com>
Co-authored-by: Arrow768 <1331699+Arrow768@users.noreply.github.com>
closes#22079closes#21945
This bug was also my fault, and it happened when I decoupled organ
processing from the life() tick to prevent organs being processed twice.
Since Huds were generated during the Life() tick, but implants were
adding the Hud during Process(), a flicker occured whenever they fired
out of sync, with the Life() tick erasing the hud and Process() adding
it back. To significantly cut down on the time complexity of having to
iterate and fire every HUD producing implant and component during
Life(), I've instead reworked it into a Signal that permits the HUD
implants to inject hud elements into the Life() codepath dynamically.
Here is the fix in action now.
https://github.com/user-attachments/assets/18ccc80d-cb5f-4fd7-9ad5-28c91acf6ca5
closes#22082
This PR makes it so that reading faxes via the admin commands bypasses
the language system, effectively giving Admins and CCIA a universal
translator for faxes.
---------
Signed-off-by: VMSolidus <evilexecutive@gmail.com>
Co-authored-by: SleepyGemmy <99297919+SleepyGemmy@users.noreply.github.com>
closes#2951
Oh my god this was the oldest confirmed still active bug in the entire
issue tracker, and it's 9 years old. This bug was reported originally in
2017 and was never fixed. Uhhh. Hell.
This makes it so that pAIs can actually control a hardsuit via an
installed IIS Module. The thing that module was meant to do 9 years ago.
closes#22065closes#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
Adds some signals to update the HUD when necessary.
The only one which will fire every tick is in remove_pain, which will
now only fire if there is pain to remove.
The extra update in robotize is necessary because robotize is called
after Initialize, so robot limbs were being set to the wrong colour.
Fixes: #22186