Commit Graph

4188 Commits

Author SHA1 Message Date
Jacquerel
f1d3994c95 Apply AI Controller Admin Verb (#89375)
## About The Pull Request

Melbert asked me to make this and I thought it'd be relatively easy and
plausibly useful so I did.

This PR adds a feature to the VV menu for mobs which allows you to apply
and configure an AI controller from a list of templates.
It's not as versatile as coding one would be, but it should be able to
accomodate a lot of generic scenarios.

Some examples of basic stuff you can set it up to do:
- Give Ian a machine gun he will fire at nearby people while staying
within a specified min/max range.
- Have Poly fire brimstone beams on cooldown at whoever is nearby
(although she won't bother trying to line up cardinally).
- Assign a gorilla to be someone's personal bodyguard which will follow
them around and attack anyone who hurts them.

I have also made an executive decision to remove the restriction that
basic ai controllers can only be placed on basic mobs.
We've removed _most_ non-basic simple mobs from the game, and also have
more recently updated most AI behaviours to work agnostically of whether
they are assigned to a basic mob or not... which means that they'll
largely work on carbons.

Coincidentally, this feature makes sure to ask if you want an AI
controller to remain active on a mob which already has a client.
Assigning an active AI controller to a live player which forces their
character to automatically attempt to run away from whoever the last
person to attack them was is ~~not recommended behaviour because it's
largely untested~~ highly recommended behaviour because I think it's
very funny (makes it very hard to play though).

I'm gonna do another PR some time which cleans up `random_speech` so
it's configurable and then let you slap that on whoever as well.

## Why It's Good For The Game

Enables a greater level of admin abuse.

## Changelog

🆑
admin: Added easier tooling for admins to add or change the AI
controllers on mobs
/🆑
2025-02-12 17:09:48 -07:00
John Willard
390c925352 Makes some admin panels use browser (#89398)
## About The Pull Request

del() log, radio log, check antagonists, law/dna/fingerprint logs all
use browser instead, which means darkmode, wahoo


![image](https://github.com/user-attachments/assets/efd968cf-9182-4e65-a4f0-2edb3431827a)

![image](https://github.com/user-attachments/assets/2bfd6ad2-42f0-4e42-8ad7-63821b31f021)

![image](https://github.com/user-attachments/assets/4a8f13e4-8e81-43cc-b00c-aecf033c9947)

The only difference now is that they are in darkmode, really.
Also removed browse calls to pipe dispensers (the machine) and windoor
assembly, as they both use TGUI now so these don't do anything.
Lastly, adds an early return to the tram admin tool if you don't select
a tram, cause I found it annoying.

## Why It's Good For The Game

Try to use old admin tools, get flashbanged

## Changelog

🆑
admin: Check antagonists & del/law/dna/fingerprint/radio log panels use
browsers which means they have darkmode. Also the tram panel will cancel
out if you click cancel.
/🆑
2025-02-12 17:09:33 -07:00
Lucy
348413a8a6 Add a DISABLE_DREAMLUAU define, for disabling dreamluau at compile-time (#89359)
## About The Pull Request

this adds a new define, `DISABLE_DREAMLUAU` (commented out by default),
which does... exactly what it says on the tin. it fully disables any
dreamluau-related code (the "Open Lua Editor" admin verb is left in,
albeit just giving the user a warning saying Lua is disabled, just so
there's no confusion about the verb itself being missing)

when compiling with OpenDream outside of CI (so dreamluau code will
still be linted), `DISABLE_DREAMLUAU` will be defined by default, tho.

## Why It's Good For The Game

makes OpenDream testing easier

## Changelog

no user-facing changes. or even code changes for most cases.
2025-02-06 02:27:55 +01:00
MichiRecRoom
344d3b6266 Optimizes /proc/icon_exists() (#89357)
## About The Pull Request
This PR reimplements https://github.com/tgstation/tgstation/pull/71538
atop `master`. Quoting the original PR:

> Every `icon_exists()` call will cache the entire file. Past me didn't
realise _why_ file opts were so expensive, but I do now. This is
immeasurably slower on a single call, and _significantly_ faster on
subsequent calls to the same file.

I attempted to handle some of the review comments that were posted
there, by splitting screaming functionality into its own proc.

* `if(icon_state in icon_states(file))` and `if(!(icon_state in
icon_states(file)))` were refactored to use `icon_exists(file,
icon_state)`.
* Where screaming was seemingly wanted (and where there wasn't a more
descriptive error inside the `if` block), I refactored them to use
`icon_exists_or_scream(file, icon_state)`
* The exception to the above was under
`/datum/unit_test/turf_icons/Run()` and
`/datum/unit_test/worn_icons/Run()`, where `icon_states()` was being
passed a mode flag. Given that this is only used in unit tests (where
performance isn't a priority), I opted to leave these be.

Additionally, I revised the documentation comment for
`/proc/icon_exists()`, as I felt it was a bit vague currently.

## Why It's Good For The Game
https://youtu.be/Z9G1Mf6TZRs

## Changelog
No player-facing changes (hopefully).

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
2025-02-05 20:00:27 +01:00
Holoo
498665f0f4 Fixes broken shadows on 516 (#89280)
## About The Pull Request
Bandaid fix of broken shadows on 516. 
Renamed refresh button to rebuild for consistency in plane debugger
(Edit/Dubug-Planes).
Rebuild now also reapplies parallax, so it will not be turned off after
rebuild.
Closes #89230 
## Why It's Good For The Game
faster 516 adoption
## Changelog
🆑
fix: fixed shadows on 516
/🆑
2025-01-30 13:22:07 +01:00
Penelope Haze
4c2a76ede3 Fix a large number of typos (#89254)
Fixes a very large number of typos. A few of these fixes also extend to
variable names, but only the really egregious ones like "concious".
2025-01-28 22:16:16 +01:00
carlarctg
876088b9a9 Expands (further) on Rift Fishing by adding two new fish & more (#88860)
## About The Pull Request

I swear it's the last one


![image](https://github.com/user-attachments/assets/4572975f-5621-4b1d-9cbf-a3e923eac516)

### Added two new fishes to the rift pool:

![image](https://github.com/user-attachments/assets/0688d0d3-b9a1-4a98-ad61-8e47964acbc9)
#### The __mossglob__ is the Fisherman's Bane. The apex of evil. The
be-all-end-all in fisher destruction.
It is haunted. It deals toxic damage. It throws itself around. It's
coated in a deadly and hallucinogenic compound. Its mossy coating is
slippery. It revives itself. It throws itself out of aquariums. Best of
all, it is extremely easy to catch.
How do you deal with it? Well, probably by not fishing in a portal to
hell. Otherwise... good luck?
Suiciding into it empowers it by 15% and seals you inside. JOIN THE
MOSS!



![image](https://github.com/user-attachments/assets/50fb0695-08e7-4c2e-b223-ceba27dd7ffd)
#### The __babbelfish__ is a strange sort of predator, a psychic fish.
It casts a psychic aura near itself, ~~disturbing people~~ (nvm lol the
demoralizer datum is bad), killing fish nearby and then eating their
corpses.

When it dies, it emits an awesome psychic wail, which will instantly
kill all fish in audible range and severely incapacitate psy-sensitive
humans:
I can't play the ogg here but credits to grungus for it

![image](https://github.com/user-attachments/assets/657f293a-e43f-4e4a-8366-dd8f32dbb2fa)

![image](https://github.com/user-attachments/assets/adedd978-a0ff-4521-88eb-6a232cbaa177)
There is also a secret, secondary function of the babbelfish: Splitting
one in half (a terrible idea) and shoving it inside your ears will
unlock your full psychic potential, granting you psychic resistance and
grant you the ability to either understand or speak every single
language, at a terrible cost.

#### ARMS

Failing the fishing minigame while fishing in a heretical rift will now
cause the rift to tear your arm (and its fishing rod) off your joints
and greedily slurp it up. The Mansus does not care for losers. (Getting
bored and walking away while the minigame is up also counts as failure.)

However, these missing items can, in fact, be fished back up, which also
includes arms -and- heads lost normally to the rift! Not only that, but
you're able to fish up random arms of any type, presumably from other
fools across time and space.

#### This PR probably shouldn't be merged until the bug that causes
finite fish counts to not be finite is fixed. Infinite fire sharks are
bad enough...

Added ABSTRACT flag to profound_fisher fake rod.

objectify() now works with instances of objects.

Apparently snuck in a random-ass refactor to smoker lungs.

Psychic resistance now prevents the instadeath from trying to
telekinetically grasp at a opened rift.

Hallucinogenic fish with a stinger now inject their hallucinogenic
toxins.

I woudl like to preemptively apologize to ghommie
## Why It's Good For The Game

__Mossglob__
I think the game's missing a fish that's just extremely dangerous to be
around, the piscine equivalent to radioactive waste. You can't bin or
tank it, because it flies off. You can't kill it, because it's
atmos-proof and revives itself anyway. Trying to keep it on a table to
turn into disgusting mold 'slices' is a challenge in and of itself. This
fish will (not) make people think twice about fishing in hell, and give
another reason for security and command to give PSAs to not interact
with the rifts across space and time around the station, which I think
is wonderful.

__Babbelfish__
This fish punishes sloppy fishermen who hold up their catch and then
store it inside their bag for the poor fish to slowly asphixiate to
death in. The fish griefing that will happen from it will be
_wonderful_.

The organ thing is a clear reference to HHG, but it has its own twist.
You can speak all languages, or understand all languages... but rarely
both. It'll make for some silly situations where people just 'make
strange noises' at you or try to act as translator for, say, ashwalkers
or xenomorphs while being completely clueless as to what anyone is
actually saying.

__ARMS__

Arms. Arms arms. Someone asked me if rifts let you fish up arms and i
said ___IT DOES NOW___.
## Changelog
🆑
Ghommie, carlarc, grungus
add: Added two new fish to heretic rift fishing.
add: You can now fish up arms, heads, and other items lost to heretic
rifts!
admin: objectify() now works with instances of objects. Mark a player,
then an object, and use those marks to call that global proc and you can
turn people into pre-existing items.
add: Psychic resistance now prevents the instadeath from trying to
telekinetically grasp at a opened rift.
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2025-01-23 18:22:00 +01:00
Sefa
5840459c00 Add Space Dragon to the banning panel (#89159)
## About The Pull Request

adds Space Dragon, which is missing, to the banning panel as it should
already be there
## Why It's Good For The Game

makes it easier for admins
## Changelog
🆑
admin: added Space Dragon role to the banning panel
/🆑
2025-01-22 20:47:53 -07:00
Penelope Haze
8196190aa1 Removes a a at at be be of of and and have have (#89155)
## About The Pull Request
I just had to one-up https://github.com/tgstation/tgstation/pull/89127.

## Why It's Good For The Game
Removes a a at at be be of of and and have have

## Changelog
N/A
2025-01-22 08:09:57 +11:00
jimmyl
4b512f1239 makes mimics into basicmobs (#88910)
## About The Pull Request

mimics are basicmobs now
the only change not carried over worth mentioning is that all mimics are
a consistent speed because i cant imagine a gun or object with aimbot
going at you mach 2 would be very fun

mimic crates had some stuff changed compared to their simple animal
variant
they open and close their lid when attacking (unless locked) to be like
menacing or something like animals flash colors to ward off people
attempting to open a nonsentient hostile crate mimic will make it lock
itself (if it contains anything) and attack you

mimics are a really stupid naming for these because like
mimic crates pretend to be crates
anything else inheriting from mimics are just used to make objects alive



https://github.com/user-attachments/assets/34a733a4-45a3-409e-8a6a-b2a8c7540898



ranged mimics now use viscontents (they also keep trying to pointblank
people for some reason i think thats ok though unless its a wand of
fireball)
ranged mimic (any ranged weapon animated by a bolt of animation)


https://github.com/user-attachments/assets/c3f1d2f5-cfb8-46a9-a58c-255c53a034db



## Why It's Good For The Game
fixes #85668

## Changelog
🆑
refactor: mimics (bolt of animation, malf ai Machine Override, etc) are
basicmobs
fix: crate mimics may now be opened
/🆑

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2025-01-19 21:29:49 +00:00
Josh
2252ec2eaf show admins classified reports (#89035)
## About The Pull Request

Lets other admins see what you sent in a classified command report.

![image](https://github.com/user-attachments/assets/0029ed80-5a72-4f79-8374-0f00de3acac0)


## Why It's Good For The Game

Admins can see this anyway and I've previously wanted to look this up to
see what another admin is doing.

## Changelog
🆑
admin: All admins will now see what is in a classified command report
🆑

Co-authored-by: Josh Powell <josh.powell@softwire.com>
2025-01-15 09:35:40 +01:00
The Sharkening
7e20627406 Fixes things being statistically weighted to drop in security (#88788) 2025-01-07 20:09:20 +00:00
Aylong
1795c18aea Fix a bunch of html UI's for 516 (#88917)
## About The Pull Request
Moved broken on 516 UI's to browser datum
They now work and have a dark theme
Most of them are admin ones (All except 1)

I tried to check all the raw HTML UI's by typing `<< browse(` into the
VSC search and going through each element, but I might have missed
something.

What worked as it was, I didn't touch, except for the Dynamic control
UI's

## Why It's Good For The Game
Admin can do their things on 516
Coders/Mappers can debug some stuff on 516


![image](https://github.com/user-attachments/assets/013508d1-18cc-4001-92e4-0bc554960f86)

## Changelog

🆑
fix: Admin/Debug UI's (Especially the Game Panel) now work properly on
Byond 516, instead of showing raw HTML
/🆑
2025-01-06 18:13:48 -08:00
SyncIt21
1a6a3b2e80 Makes drop_everything() actually safe (#88753) 2025-01-01 16:14:44 +01:00
Tim
f07cdf2871 Fix custom map loading ignoring JSON values (#88720)
## About The Pull Request
The map loading function was ignoring JSON values when a map's config
file was custom loaded. (things like - minetype, planetary, etc.)

To resolve this I just made the loadConfig return a json and then use
that json.

## Why It's Good For The Game
Better custom map support!

## Changelog
🆑
fix: Fix custom map loading ignoring JSON values that were ignored
previously. (minetype, planetary, etc.)
/🆑
2024-12-26 08:30:56 +01:00
John Willard
2e4d70afe5 Updates href uses for 516 (#88699)
## About The Pull Request

Was just scrolling through the Paradise github since they seem to have
more work done for 516 to see if there's anything I can port over, found
this and thought why not.

Ports parts of https://github.com/ParadiseSS13/Paradise/pull/25105
Specifically, updaing all hrefs to use the internal ``byond://``, and
adding it to grep.

## Why It's Good For The Game

More work towards 516.

## Changelog

Nothing player-facing.
2024-12-24 11:42:20 -08:00
Aylong
56e56ceac9 Implement Edge DevTools (#88679)
## About The Pull Request
Implements Edge DevTools for 516 users (coders)
Thanks to [S34N](https://github.com/ParadiseSS13/Paradise/pull/25363)

<details><summary>Images</summary>


![image](https://github.com/user-attachments/assets/9025d45a-a1be-4e95-b1ee-4adfb29d687e)

![image](https://github.com/user-attachments/assets/abe1b936-9fb5-4001-8f21-cbeeb62def45)

</details>

---------

Co-authored-by: AnturK <4047233+anturk@users.noreply.github.com>
2024-12-24 19:36:25 +00:00
Aylong
7a817300fd Improve and extend fieldset_block and examine_block (#88678)
## About The Pull Request
Maked `fieldset_block` and `examine_block` more stylish and neat, also
`fieldset_block` no longer has a centred title.
Renamed `examine_block` to `boxed_message` and adds
`custom_boxed_message` which can be colored.

- AdminPMs, admin tickets and vote results has been wrapped into
`fieldset_block` for comfort and visibility
- Health Analyzer results painted to blue
- Vote notice and tips of the round wrapped to purple
`custom_boxed_message`
- Tooltip text border color, now uses text color, not just white

## Why It's Good For The Game
Demonstration in both themes

<details><summary>Dark</summary>


![image](https://github.com/user-attachments/assets/7175379b-b053-4fb7-bd25-65c744a21c56)

![image](https://github.com/user-attachments/assets/1728e72b-0110-4b81-9d61-8779f5fdc3a0)

![image](https://github.com/user-attachments/assets/5e6f9604-35b8-4840-b6b4-35a68f49a997)

</details>

<details><summary>Light</summary>


![image](https://github.com/user-attachments/assets/6a3d693b-e0dc-4a4b-b4d7-2ded54ce0d67)

![image](https://github.com/user-attachments/assets/c4f5e089-180f-4d13-806a-fa64f01740a3)

![image](https://github.com/user-attachments/assets/a46d52c4-ad37-4637-8cae-c4b00139efc1)

</details>

## Changelog

🆑
qol: AdminPMs, admin tickets, vote results and started vote notification
are now much more visible in the chat.
qol: Boxed messages in chat (like examine), has been restyled.
/🆑
2024-12-24 11:32:38 -08:00
SmArtKar
2660e6f412 Admins can now return the shuttle back to the station without ending the round (#88521)
## About The Pull Request
Per DarkenedEarth's request on discord, adds a new Fun menu secret which
makes the shuttle go back to the station after a configurable delay with
an announcement (also configurable). After docking at the station it
behaves like BYOS (still requiring to wait for it's arrival despite it
being docked).

## Why It's Good For The Game

Admins want it to hunt early EORGers or make events or something like
that.

## Changelog
🆑
admin: Admins can now return the shuttle back to the station without
ending the round
/🆑
2024-12-22 21:01:07 -08:00
Roxy
2603a4f3ee Add reboot countdown to stat panel (#88438)
## About The Pull Request

Rewrite ticker `Reboot` proc slightly to use a timer and callback for
the delay before the reboot, tracks this timer in the stat panel for
players to see. Also adds a verb to cancel a pending reboot independent
of the delay round end verb.

## Why It's Good For The Game

It's nice to be able to see exactly how much time is left until the
server restarts, and it's even nicer to see that the round end has been
delayed when the "admin has delayed round end" message gets buried in a
fast moving chat.

## Changelog

🆑
qol: The time until the server reboots is now visible in the status tab.
admin: Added a cancel reboot verb to the server tab.
/🆑
2024-12-22 05:46:09 +01:00
Kocma-san
d69bb900c6 enhancements for fax requests in request manager (#88391)
## About The Pull Request
Addition to [#84910](https://github.com/tgstation/tgstation/pull/84910)

Added a "print" button to the request manager. It simply prints at the
centcom station the paper that was faxed to the admins.
Also added "Auto-print Faxes" button to the request manager, which
allows you to enable automatic printing of requests on the admin fax
<details>
<summary>Screenshots</summary>


![image](https://github.com/user-attachments/assets/35cbda0a-c759-4e9e-8899-8e2d81069b4c)

![image](https://github.com/user-attachments/assets/bbb918da-8b84-4a6b-a42e-c06359ab5651)

![image](https://github.com/user-attachments/assets/b380cc13-a9e2-496e-a296-60fb827c4c55)

</details>

## Why It's Good For The Game

The message in the chat may get lost. In this case, it will no longer be
possible to print the paper sent to the CC
Changing the allow_exotic_faxes variable will allow you to fax something
unusual to the station in (very rare) situations. No need to manually
change this variable
## Changelog
🆑
add: added a "print" button to the request manager
add: admin fax can now send exotic items
add: added "Auto-print Faxes" button to the request manager, which
allows you to enable automatic printing of requests on the admin fax
fix: fixed a bug where pressing the print button would cause the receive
animation to appear on all admin faxes.
/🆑
2024-12-21 21:29:13 +00:00
SyncIt21
ad4108d6f3 Adds better combined colour check for greyscale modify menu (#88598)
## About The Pull Request
- Fixes #87829

Ensures we can't enter invalid values that actually run timed in this
specific case

## Changelog
🆑
fix: greyscale modify menu has better validation for player entered
colours
/🆑
2024-12-21 22:12:32 +01:00
Kyle Spier-Swenson
28e7e68f4f Trainers can now verify admins above their weight class (#88360)
bounty pr


## About The Pull Request

Lets anyone with permissions verify any admin past 2fa, not just ones
lower than them on the ~totem~ permission pole.

## Why It's Good For The Game


![image](https://github.com/user-attachments/assets/22b70b52-ffca-4b10-a8c5-f7a3cae2f452)

(also fixes an exploit where you could action protected admins who were
deadmined because `D` wouldn't be set by that point.)
2024-12-18 00:55:52 +01:00
Kocma-san
2fe6a19efc moves all admin requests in admin stuff section (#88396)
## About The Pull Request
~~i have absolutely no idea what all this is called correctly~~

adds `type = MESSAGE_TYPE_PRAYER` to all messages that are a request to
admins. Because there is no reason why half of these requests should be
of type "info"

<details>
<summary>Screenshots (before)</summary>


![image](https://github.com/user-attachments/assets/96b6b8ea-5027-4e89-8969-fa485741f84b)

![image](https://github.com/user-attachments/assets/4222701d-9312-45f4-9eb2-13fdd4aff74c)

</details>
<details>
<summary>Screenshots (now)</summary>


![image](https://github.com/user-attachments/assets/d4732687-3b1e-4fdc-bde8-07c053adac57)

</details>

## Why It's Good For The Game

All requests can now be moved to a separate tab, without unnecessary
information
## Changelog
🆑
admin: moves all admin requests in admin stuff section. Now they have
type Prayers
/🆑
2024-12-12 09:41:07 +13:00
Time-Green
a0d47d999e Fixes harddels, reduces unneccessary update body calls (#88300)
Closes #88283
Closes https://github.com/tgstation/tgstation/issues/88320

Fixes a harddel caused by the limp status effect not being properly
deleted

Reduces update-body calls in:
- Initialize from 4 to 1
- On z-level change from 2 to 1
- On move with bloody shoes from 1 to 0

Mostly by just passing along the proper argument and removing seemingly
unnecessary update body calls
2024-12-04 01:34:57 +01:00
MrMelbert
f60f5b8334 Fix admin local sound (#88214) 2024-11-29 17:38:35 +01:00
MrMelbert
75696ab873 Fixes random stuff spilling into ooc tab (#88221)
## About The Pull Request

`boldannounce` is NOT for use ICly it's only for OOC stuff. `bolddanger`
is identical it just doesn't carry the same baggage

## Changelog

🆑 Melbert
fix: Stuff like the SM exploding will no longer output to your OOC tab
/🆑
2024-11-27 17:41:52 +01:00
SmArtKar
bbb7a41743 Guncode Agony 4: The Great Projectile Purge (#87740)
## About The Pull Request
~~Kept you waitin huh!~~
The projectile refactor is finally here, 4 years later. This PR (almost)
completely rewrites projectile logic to be more maintainable and
performant.

### Key changes:
* Instead of moving by a fixed amount of pixels, potentially skipping
tile corners and being performance-heavy, projectiles now use
raymarching in order to teleport through tiles and only visually animate
themselves. This allows us to do custom per-projectile animations and
makes the code much more reliable, sane and maintainable. You (did not)
serve us well, pixel_move.
* Speed variable now measures how many tiles (if SSprojectiles has
default values) a projectile passes in a tick instead of being a magical
Kevinz Unit™️ coefficient. pixel_speed_multiplier has been retired
because it never had a right to exist in the first place. __This means
that downstreams will need to set all of their custom projectiles' speed
values to ``pixel_speed_multiplier / speed``__ in order to prevent
projectiles from inverting their speed.
* Hitscans no longer operate with spartial vectors and instead only
store key points in which the projectile impacted something or changed
its angle. This should similarly make the code much easier to work with,
as well as fixing some visual jank due to incorrect calculations.
* Projectiles only delete themselves the ***next*** tick after impacting
something or reaching their maximum range. Doing so allows them to
finish their impact animation and hide themselves between ticks via
animation chains. This means that projectiles no longer disappear ~a
tile before hitting their target, and that we can finally make impact
markers be consistent with where the projectile actually landed instead
of being entirely random.

<details>

<summary>Here is an example of how this affects our slowest-moving
projectile: Magic Missiles.</summary>


Before:


https://github.com/user-attachments/assets/06b3a980-4701-4aeb-aa3e-e21cd056020e

After:


https://github.com/user-attachments/assets/abe8ed5c-4b81-4120-8d2f-cf16ff5be915

</details>


<details>

<summary>And here is a much faster, and currently jankier, disabler
SMG.</summary>


Before:


https://github.com/user-attachments/assets/2d84aef1-0c83-44ef-a698-8ec716587348

After:


https://github.com/user-attachments/assets/2e7c1336-f611-404f-b3ff-87433398d238

</details>

### But how will this affect the ~~trout population~~ gameplay?

Beyond improved visuals, smoother movement and a few minor bugfixes,
this should not have a major gameplay impact. If something changed its
behavior in an unexpected way or started looking odd, please make an
issue report.
Projectile impacts should now be consistent with their visual position,
so hitting and dodging shots should be slightly easier and more
intuitive.

This PR should be testmerged extensively due to the amount of changes it
brings and considerable difficulty in reviewing them. Please contact me
to ensure its good to merge.

Closes #71822
Closes #78547
Closes #78871
Closes #83901
Closes #87802
Closes #88073

## Why It's Good For The Game

Our core projectile code is an ungodly abomination that nobody except
me, Kapu and Potato dared to poke in the past months (potentially
longer). It is laggy, overcomplicated and absolutely unmaintaineable -
while a lot of decisions made sense 4 years ago when we were attempting
to introduce pixel movement, nowadays they are only acting as major
roadblocks for any contributor who is attempting to make projectile
behavior that differs from normal in any way.

Huge thanks to Kapu and Potato (Lemon) on the discord for providing
insights, ideas and advice throughout the past months regarding
potential improvements to projectile code, almost all of which made it
in.

## Changelog
🆑
qol: Projectiles now visually impact their targets instead of
disappearing about a tile short of it.
fix: Fixed multiple minor issues with projectile behavior
refactor: Completely rewrote almost all of our projectile code - if
anything broke or started looking/behaving oddly, make an issue report!
/🆑
2024-11-23 04:02:35 -08:00
Fikou
185f96efb0 changes default prefs to deadmin you as antagonist/head/sec/silicon, stops auto deadmin on localhost (#88028) 2024-11-22 21:56:25 +01:00
MrMelbert
99685993aa Fixes some broken logs (#88040) 2024-11-21 21:26:11 +01:00
grungussuss
a2934c0a0e Admin can change volume of all admin verb sound plays (#88017)
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
2024-11-21 13:03:24 +01:00
tonty
ee16f1fccc Everything uses trim(), trim returns "" if empty, removes the SDQL2 trimtext (#87994)
## About The Pull Request
Title. I may have been wrong about how depended on this behaviour was
Also, uh, fixes #87986
## Why It's Good For The Game

trim_reduced no longer needs to exist because trimtext() does it faster,
and there's no reason to have a special proc if trim just calls that
proc anyways. I sincerely doubt the proc overhead is so severe that we
need another proc that will ever only be called directly 3 times in the
code.

Since trimtext() does something we don't expect, it's better to just
have SDQL2 queries use trim() so we're all on the same page.

## Changelog

NO!!!
2024-11-20 02:12:22 +01:00
Penelope Haze
b67a0901f2 Fix issues discovered via TypeMaker (#87596)
## About The Pull Request
Fixes issues with var typing and proc arguments, discovered using
OpenDream's WIP TypeMaker feature (using improvements I haven't PR'd
upstream yet).

## Why It's Good For The Game
Codebase maintenance.
2024-11-19 15:24:52 -05:00
Lucy
6046120e5f Updating player last seen info and connection log no longer blocks (#87906)
## About The Pull Request

Was investigating some stuff downstream related to undeleted SQL
queries, and these two queries were related.

thought it'd be best to make them not block
`/client/proc/set_client_age_from_db`, as the results are never checked
anyways, not even for errors.

I've added a new proc to SSdbcore, `FireAndForget` - takes the same
parameters as NewQuery, but instead of returning the query, it just
asynchronously executes and then deletes it.

## Why It's Good For The Game

less undeleted sql queries, less blocking. yay?

## Changelog

does this count as user-facing? unsure how i'd changelog this tbh
2024-11-15 23:49:13 +01:00
Lucy
9592b333e2 byond-tracy additions and refactors (#87067)
## About The Pull Request

This adds plenty of useful stuff regarding byond-tracy, altho mostly
focused on the [Paradise
fork](https://github.com/ParadiseSS13/byond-tracy).

- Adds two new config options **(THEY ARE DISABLED BY DEFAULT)**
- `ALLOW_TRACY_START` gives admins with +DEBUG the "Run Tracy Now" verb,
which will allow them to start profiling with byond-tracy mid-round.
- `ALLOW_TRACY_QUEUE` gives admins with +DEBUG the "Toggle Tracy Next
Round" verb, which will initialize byond-tracy during world init the
next round (in the same way as passing `-params tracy` or defining
`USE_BYOND_TRACY`)
- If byond-tracy fails to initialize, the error will be logged and
available to view for the whole round.
- If `MC_TAB_TRACY_INFO` is defined, information about byond-tracy now
appears in the MC tab - if it's running or not, if it errored (and what
the error is), why it's running, if its queued for next round, etc.
- byond-tracy is now properly shut down when the world shuts
down/reboots, minimizing the risk of data loss or crashing
- More info regarding byond-tracy init is sent to `world.log`

## Why It's Good For The Game

Profiling is super helpful, and this should make things quite easier

## Changelog

No user-facing changes
2024-11-15 09:04:32 +01:00
Lucy
a3a3fd7a15 Admin deleting a mob now ghostizes it beforehand, preventing a runtime (#87887) 2024-11-14 14:05:39 +01:00
carlarctg
c7c48ba59a spellecheck: existence not existance (#87862)
## About The Pull Request

existance doesnt exist so i changed it to existence

## Why It's Good For The Game

existance dosent exist

## Changelog

🆑
spellcheck: spellecheck: existence not existance
/🆑
2024-11-14 01:28:31 +01:00
tonty
d5daa9c9b8 [NO GBP] Renames mob/camera to mob/eye and makes everything follow suit (#87684)
## Why It's Good For The Game

Clarity and consistency regarding DM's systems. 
Internally, `eye` is used for anything that controls the client's view.

![image](https://github.com/user-attachments/assets/7d1291e1-7a6a-4736-a14b-97834e89846f)
How `eye` is used in DM is consistent with how we use the term, so I
figured this would add clarity.

Being named mob/camera also makes it unclear exactly what it's doing.
The name implies that it would function similar to how mob/camera/ai_eye
does, but most of the time it's only used as... an eye.

My ulterior reason for this PR is that I want to clean up
mob/camera/ai_eye and it's subtypes after this.
## Changelog

🆑
server: mob/camera has been renamed to mob/eye, which may break
downstreams
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-11-09 10:57:45 +00:00
Shadow-Quill
4617dafe1e Changes remark logging to reflect whether an applied remark is secret or not (#87522)
## About The Pull Request

Adds a ternary statement to the logging for adding admin remarks (notes,
messages, watchlists) to specify if a note is secret.
No change to actual administrative functions, just the logging.

## Why It's Good For The Game

Accurately reflects the note added!

## Changelog
🆑
admin: When a secret note is applied, it'll now be logged as a secret
note (instead of appearing like a regular note).
/🆑
2024-11-05 18:00:14 +01:00
carlarctg
55a07d99b8 Fixed being unable to aghost while corpselocked (#87594)
## About The Pull Request

Fixed being unable to aghost while corpselocked, via adding another
parameter to ghostize that checks if it's an aghost or not

## Why It's Good For The Game

i wana leave my body when testing as ethereal

## Changelog

🆑
fix: Fixed being unable to aghost while corpselocked
/🆑
2024-11-01 13:22:25 +01:00
Ghom
778ed9f1ab The death or internal/external organ pathing (ft. fixed fox ears and recoloring bodypart overlays with dye sprays) (#87434)
## About The Pull Request
This PR kills the abstract internal and external typepaths for organs,
now replaced by an EXTERNAL_ORGAN flag to distinguish the two kinds.

This PR also fixes fox ears (from #87162, no tail is added) and
mushpeople's caps (they should be red, the screenshot is a tad
outdated).

And yes, you can now use a hair dye spray to recolor body parts like
most tails, podpeople hair, mushpeople caps and cat ears. The process
can be reversed by using the spray again.

## Why It's Good For The Game
Time-Green put some effort during the last few months to untie functions
and mechanics from external/internal organ pathing. Now, all that this
pathing is good for are a few typechecks, easily replaceable with
bitflags.

Also podpeople and mushpeople need a way to recolor their "hair". This
kind of applies to fish tails from the fish infusion, which colors can't
be selected right now. The rest is just there if you ever want to
recolor your lizard tail for some reason.

Proof of testing btw (screenshot taken before mushpeople cap fix, right
side has dyed body parts, moth can't be dyed, they're already fabolous):

![immagine](https://github.com/user-attachments/assets/2bb625c9-9233-42eb-b9b8-e0bd6909ce89)

## Changelog

🆑
code: Removed internal/external pathing from organs in favor of a bit
flag. Hopefully this shouldn't break anything about organs.
fix: Fixed invisible fox ears.
fix: Fixed mushpeople caps not being colored red by default.
add: You can now dye most tails, podpeople hair, mushpeople caps etc.
with a hair dye spray.
/🆑
2024-10-30 08:03:02 +01:00
larentoun
692540a7b9 Singularity_pull() standartize (#87304)
## About The Pull Request
Previous attempt - https://github.com/tgstation/tgstation/pull/87227

`/atom/proc/singularity_pull(obj/singularity/singularity, current_size)`
has first arg typed, but other procs were just referencing it as a
un-typed variable.

Since args are not standartized AND
`atom/proc/singularity_pull(obj/singularity/singularity, current_size)`
is out-dated, since it can be called by things that has
`/datum/component/singularity` - not just by
`obj/singularity/singularity` - This PR just adds args to every
`proc/singularity_pull()` as follows:
`proc/singularity_pull(atom/singularity, current_size)`

## Why It's Good For The Game
Standartization

## Changelog
No changelog needed
2024-10-25 02:08:26 +02:00
Lucy
728036969d Replace /proc/trim_reduced with the native BYOND trimtext (#87317)
## About The Pull Request

BYOND added a native `trimtext` proc in 515, which as far as I know,
does the same thing as the `trim_reduced` proc - trims whitespace off
both ends of a string, but `trimtext` should be faster, as it's a
builtin rather than implemented in DM.

Also, added a global `_trimtext` proc, for use from SDQL2 or Lua, as
it's a builtin and can't be `call()`'d.

## Why It's Good For The Game

Micro-optimizations my beloved - especially since I imagine this proc is
called quite a lot, even if it doesn't really have a performance impact
anyways, but it can't hurt.

## Changelog
🆑
refactor: Refactored some text helper procs to use BYOND's native text
trimming proc.
admin: Added a _trimtext proc, for use with SDQL2 or Lua scripting.
/🆑
2024-10-24 15:27:59 +02:00
The Sharkening
e907ff8058 The Law Panel now logs admin law changes. (#87083)
## About The Pull Request

Adds proper law logging to the law panel.

I asked Melbert if he wanted it inside silicon.log, admin.log, or both.
He said admin.log

## Why It's Good For The Game

Logging is good for adminbus and what can be high impact adminbus. 

## Changelog
🆑
admin: The Law Panel now properly logs and communicates law edits.
/🆑
2024-10-09 14:10:03 +03:00
Tim
6ea1e5a5e2 Organize admin verbs for shuttle events into shuttle category (#87065)
## About The Pull Request
This moves all the shuttle related admin verbs into its own category to
make it less cluttered. It was a PIA to debug shuttle related code while
having to hunt down these verbs.

## Why It's Good For The Game
Better UI.


![dreamseeker_ToRazyp3Vl](https://github.com/user-attachments/assets/cc19f81c-9c1c-475b-8acf-2d686177ae57)


## Changelog
🆑
admin: Organize admin verbs for shuttle events into shuttle category
/🆑
2024-10-07 14:31:21 +02:00
MrMelbert
74f8e7846a Adds item VV header (#87052)
## About The Pull Request

Adds VV header for items, letting quick modification of a few of an
item's combat values..


![image](https://github.com/user-attachments/assets/587d072e-03f0-4c1e-b9b0-f837efb60434)

## Why It's Good For The Game

In testing, I find I tweak these values commonly, to test how effective
an item is vs armor, or how strong a new item should be, etc etc. So
having quick access to these might be cool

I thought about adding a few more like throwforce but I didn't want to
clutter it too much

## Changelog

🆑 Melbert
admin: Items now have a header in VV allowing for quicker editing of
combat properties
/🆑
2024-10-07 14:30:15 +02:00
Ilán Mori
2f4db9bb65 Adds more extensive config settings for human authority (#86886)
## About The Pull Request
Before there were two settings for human authority:
`ENFORCE_HUMAN_AUTHORITY` and `ENFORCE_HUMAN_AUTHORITY_ON_EVERYONE`
The first, if enabled, would not let non-humans be heads of staff unless
they had a specific var on their job set to TRUE.
The second, if enabled, would simply ignore that var and reject the
non-human anyways.

This PR replaces both of those settings with a single one,
`HUMAN_AUTHORITY`. You can set it to one of four settings:
* "OFF": human authority will be turned OFF. Non-Humans will be able to
be heads of staff.
* "HUMAN WHITELIST": human authority will be turned OFF, HOWEVER; if a
job has its new `human_authority` variable set to
`JOB_AUTHORITY_HUMANS_ONLY`, then whoever picks that job will be forced
to be human.
* "NON-HUMAN WHITELIST": human authority will be turned ON. However, if
a job has its `human_authority` variable set to
`JOB_AUTHORITY_NON_HUMANS_ALLOWED`, a non-human can become that job.
This is what we have now, it works the same as if
`ENFORCE_HUMAN_AUTHORITY` were turned on. This is also what I've set as
the default value.
* "ENFORCED" human authority will be turned ON. Non-Humans will never be
able to be heads of staff. This is what
`ENFORCE_HUMAN_AUTHORITY_ON_EVERYONE` used to do.

You can also now set the `human_authority` variable through
`jobconfig.toml`!

## Why It's Good For The Game

Allows more configuration options for downstreams, and lets keyholders
and headmins have more options over how to set up human authority.

## Changelog
🆑
config: Both human authority settings were combined into a singular one,
allowing for more flexibility
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-10-06 17:48:39 +00:00
Time-Green
68be76e817 Journeying Hitchhikers Shuttle Events + Bugfixes (#86655)
## About The Pull Request

Adds the following new general shuttle events:_
**Hitchhiker**
- 1% chance
- A single assistant in an EVA suit and some PBJs in a suitcase

**Assistant Wave**
- 0.1% chance
- Spawns 10 assistants with internals
- For clarity, they don't get sent to the shuttle, but get launched at
it from space. It's a scuffle of 10 assistants trying to get in without
being spaced or succumbing to the cold/pressure

**Intern Wave**
- Admin only
- Unarmed and armed version
- Spawns centcom interns, with a little announcement to warn they're
coming

I've also fixed projectiles bugging out and admin forced shuttle events
not activating if they were added after the shuttle launched

<details>
  <summary>Admin only events added</summary>
  
**Nukie**
Spawns a single nukie, armed with a shotgun, pistol and edagger.
Basically the deathmatch nukie loadout, you dont want to fight this

**Meaty ores**
Meaty-ores meteors. Have a 4% chance to hit the shuttle, posing a
potential hazard

**3 player controlled fire-sharks**
3 fire sharks controlled by players. Not much to talk about here

**Fireball Wave**
Shoots a wave of fireballs at the shuttle. I think it's cool but
apparently shuttle walls and windows deflect fireballs so it's kind of
moot unless you're outside :/

</details>

## Why It's Good For The Game
The assistant and hitchhiker events are some flavoring that I thought up
a while ago. The Hitchhiker is just intentionally a flavor addition, but
the assistant wave and intern wave can be used by admins to repopulate
or retake the emergency shuttle as well.

## Changelog
🆑
add: Adds an assistant and hitchiker shuttle event, replenishing the
crew mid flight!
admin: Adds two intern wave shuttle events
code: You can now supply shuttle events with outfits!
code: You can now shoot projectiles with the shuttle events!
fix: Fixes projectiles bugging out when fired in shuttle transit space
fix: Fixes admin forced shuttle events not activating when added mid
transit
/🆑
2024-10-02 00:24:18 -07:00
Zephyr
0ef5c3d049 Persistent Map Vote Tallies (#86788)
## About The Pull Request

Changes map votes to be based on a persistent tally count.
Tallies for maps are cached between rounds and are added to by map
votes.
When a map is chosen, and it wasn't the only valid one, the tallies for
said chosen map will be reset.

Refactors map vote handling and moves it from SSmapping to SSmap_vote.
Rock the Vote has been removed as a result of this refactor.

## Why It's Good For The Game

Makes it more likely that all maps will be played over the course of a
server instead of always being truly random.
Removes some clutter off of SSmapping.

🆑
refactor: Map Votes are now carried over between rounds. When a map vote
is actually a contest, the winning map will have its votes reset.
/🆑
2024-09-30 13:09:08 +13:00
SmArtKar
97141c23cf Fixed VV DNA infusion tool (#86931)
## About The Pull Request

Insert() does not return anything, replace_into relied on that so the
tool ended up just cutting out all the organs it was supposed to insert
after putting them in

## Changelog
🆑
admin: Fixed VV DNA infusion tool
/🆑
2024-09-29 15:14:58 +02:00