* New station trait job: Human AI (#81681)
This PR does many things, I'll try to explain the basic/background stuff
to the main thing first:
1. Adds a new remote that allows a human to function like an AI. It
controls a fly that will fly around the station slowly, and when it
reaches a machine then the person can interact with it as if they were
an AI. This required changing a lot of silicon/AI checks with one that
also checks for this remote, and some messing with shared ui state.
2. Moves req_access from the obj and bot to ``/atom/movable`` which lets
it be shared between the two, no more copy-paste and one side lacking
features/checks/signals the other has.
3. Adds a check for AI config for AI-related station traits, which was
lacking prior
Now for the good part...
Adds a new station trait that replaces the AI with a Human.
This person is equipped with an AI headset (including Binary), an
advanced camera console, an omni door wand, the machine controller, and
their laws.
They are immune to the SAT's turrets (even if set to target borgs) and
are slow outside of the SAT, mimicing the actions of the AI.
They interact with the world through their advanced camera console,
which allows them to do most AI stuff needed, and the holopad they can
connect to without having to ring first (like Command can).
They are given a paper with the laws they must follow, but since they
are human they are able to bend it. Cyborgs that run the default lawset
are "slaved" to them via an unremovable law 0, so the Human AI can bend
the laws if they really need to (for their own survival n such), and
make the cyborgs obey their commands above laws, but in general this
shouldn't be a frequent occurrence. This does take into account the
unique AI trait, so it's not guaranteed Asimov.
When this station trait rolls, all Intellicards, AI uploads, and AI core
boards are destroyed and are unresearchable. They can be spawned by
admins in-game if necessary. Maybe in the future we can also exclude
Oldstation from this but I haven't really decided.
Extra perks:
Human AI spawns with a Robotic voicebox (unless they are a body purist)
and teleport blocking implant, so they can't use teleporters to bypass
their on-station slowdown.
They also have an infinite laser pointer that can be used to blind
through their camera console. This is unfortunately nerfed from the
recent borg balance PR that removed its stun. This was meant to be the
alternative to no longer being able to permanently lock borgs down like
AIs can (or more than one, for that matter).
They aren't affected by Roburgers, Acid, and Fuel's toxicity.
Bots salute them like they do Beepsky (which is now a trait)
They spawn with SyndEye to replace the AI's tracking ability
They do not have a bank account
The machine remote has a little fly in it that flies to the machines it
is pointed to, working as the arms and legs of the Human AI. It scans
the machine and punches in the action the AI does, and is how the AI
accesses basically anything. This fly slowly moves from one machine to
the next, and can be recalled with Alt Click.
It works on machines and bots.
https://github.com/tgstation/tgstation/assets/53777086/e16509f8-8bed-42b5-9fbf-7e37165a11e8
I've seen a funny screenshot one day of a person replacing the AI by
using a bunch of door remotes, camera console, crew monitoring console,
and a few other things. I've been thinking about that for a few years
and really wanted to make it official if not easier to make possible,
because it is an incredibly funny interaction.
This makes it a reality, and while they aren't as powerful as regular
AIs, I think it makes for better and funnier in-game moments. With the
same weight as Cargorilla (1), I hope this wouldn't be rolling too often
and ruin rounds, but instead show off the different capabilities that
Humans and AIs can do, to do the job of an AI. You win some you lose
some.
🆑 JohnFulpWillard, Tattax
add: Adds a new station trait job: The Human AI.
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Oh right
* so this works
* whoooops
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
* Minor Spy fixes, plus some bonus logging and feedback (#81781)
## About The Pull Request
Fixes#81776
- Ensures machinery not sent to the black market dump what must be
dumped first
- Adds feedback messages to sentient bots being stolen
- Adds a few combat log messages to spies stealing things
## Changelog
🆑 Melbert
fix: Fixed spy stolen machines not dumping everything that needed to be
dumped
/🆑
* Fixes Spy OD things (#81778)
## About The Pull Request
I'm doing my part
* Fixes spies having multi-use autosurgeons (#81876)
## About The Pull Request
Fixes https://github.com/tgstation/tgstation/issues/81827
## Why It's Good For The Game
Autosurgeons are deliberately not resuable for almost all instances they
show up in the game.
This is fine for a single use insertion of a highly illegal organ, the
autosurgeon then allowing you to entirely ignore surgery and player
interaction to get various power boosts via cybernetics from that point
onwards seems unintended.
## Changelog
🆑
fix: Spies no longer have access to infinite use autosurgeons.
/🆑
* there we go
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
* Canonical Movement (#82085)
## About The Pull Request
- https://github.com/DaedalusDock/daedalusdock/pull/892
Currently, TG's movement chain is not canonical, meaning movement can
resolve in an order that doesn't actually represent what it going on.
For example, if something inside of an Entered() call would move the
currently moving object, it resolves in this order:
1. Original Move
2. Intercepted Move
3. Intercepted Moved
4. Original Moved
This makes Moved() unreliable at tracking things like spatial grid
locations. This is a massive problem.
This PR introduces `active_movement`, a list containing arguments for
`Moved()`. At the start of `Move()` and `doMove()`, if the list is
present, it will call Moved(), concluding the original movement, before
proceeding. The original `Move()` call will not end in `Moved()`, due to
`active_movement` being null.
This is touching some of the most important code in the game and needs
extensive testing.
* Canonical Movement
---------
Co-authored-by: Kapu1178 <75460809+Kapu1178@users.noreply.github.com>
* Bitrunning 1.5: Secondary Objectives (#81828)
## About The Pull Request
Added secondary objective lockboxes to bitrunning. These pull from a
list of secondary objective loot on the domain, with a limited quantity
of items. Once there are no items left to pull, the secondary objective
disappears. If multiple secondary objective markers are placed, they
will be placed until all markers have been used, or all the items in the
loot pool are already spoken for.
To support this functionality, adds SSbitrunning, which stores all
domains as instances, instead of checking the hardcoded types as
previously. SSbitrunning manages listing domains for the quantum
console, and rolling secondary loot.
As an example of this functionality, added a side path to Glacier Grind
with a polar bear and some loot.
## Why It's Good For The Game
Secondary objectives give mappers ways to encourage players to venture
into a wider range of domains by offering non-trivial loot beyond the
fluff items given in the main caches. The absolute limit on the number
of items available ensures these items can't be farmed.
As well as supporting secondary objectives, SSbitrunning allows for
future support of features relying on mid-round modification of domains,
for instance adding custom domains.
## Changelog
🆑
add: Added secondary objectives to bitrunning!
add: Pick up encrypted curiosities and return them to the safehouse to
claim their contents.
add: Glacier Grind has been given a secondary objective, look out for
the limited edition hat.
add: Bitrunning domains can now be modified during the round by admins.
/🆑
* Bitrunning 1.5: Secondary Objectives
* Update virtual_domain.dm
---------
Co-authored-by: Thunder12345 <Thunder12345@users.noreply.github.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
* Extends the metric prefixes. (#81739)
## About The Pull Request
Extends the metric prefixes some things will display. Adds the quecto,
ronto, yocto, zepto. atto, exa, zetta, yotta, ronna and quetta prefixes.
## Why It's Good For The Game
Makes it easier to read the numbers when someone manages to break atmos
or whatever.
## Changelog
🆑
qol: Extended the metric prefixes.
/🆑
* Extends the metric prefixes.
---------
Co-authored-by: Pickle-Coding <58013024+Pickle-Coding@users.noreply.github.com>
* fix ore vents spawning the wrong wolves and remove simple wolves (#81864)
## About The Pull Request
wolves got refactored but the ore vents were still spawning the old
versions, this fixes it and removes the old wolves from the code
## Why It's Good For The Game
fixes ore vents spawning old wolves
## Changelog
🆑
fix: fixes ore vent spawned wolves being untammable
/🆑
* fix ore vents spawning the wrong wolves and remove simple wolves
---------
Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
* Changes flash Paralyze to Knockdown (#81676)
## About The Pull Request
picking up the dropped rifles of #78515 and #81618 and making only one
small, measurable change that should test the general principles while
making life better if they're proven true:
does what it says on the tin: makes flashes Knockdown rather than
Paralyze
this will be successful if people report more close fights where flashes
were involved and feel better about playing on both sides of
flashing/getting flashed
## Why It's Good For The Game
hardstun rocket-tag combat bad. opportunities for counterplay and combos
good.
Paralyzes
- basically prevent you from doing anything. anything.
Knockdowns
- let you try to deploy your flash protection before the follow-up if
the opponent's just trying to use the flash
- let you try to crawl, juke, and make your opponent's life a little
less simple
- give you an actual choice: do I try to scream HELP immediately after
the flash before I get taken out, or try to use an item, swing back, or
wriggle out?
- still disarm you if you're standing which is pretty cool I think
- still let you stamcrit some goofball crawling at you even if they keep
crawling
doesn't change how mounted flashes or portable flashers work. still 10
and 8s Paralyzes respectively.
not a moth buff because they still can't wear sunglasses to no-sell the
flash entirely ha ha goofy bug
## Changelog
🆑
balance: personal flashes now Knockdown rather than Paralyze direct
targets.
/🆑
* Changes flash Paralyze to Knockdown
---------
Co-authored-by: Higgin <cdonny11@yahoo.com>
* New Shields and Sprites for them (#81615)
## About The Pull Request
Updates shield sprites to new more polished and 3/4 perspective ones.
<details>

</details>
Adds 2 new shield types:
- **Improvised Shield.** Made out of 10 iron sheets and 2 sticky tape
pieces. Weaker then buckler shield and breaks after 2 gunshots or 4
baton hits, but has a 50% (BASE FOR ALL OTHER SHIELDS) blocking chance
instead of 30% that buckler has. Bulky
- **Ballistic Shield.** Printed at Security Techfab for a lot of
titanium after getting weapon research. Strong against projectiles, but
weaker than riot shield against melee. Bulky
Both of these shields break, and both of them are their own subtype. As
such you can still only craft strobe shield with a riot shield.
## Why It's Good For The Game
The sprites of shields were very ancient and extremely flat, this gives
them a more refreshed look.
Ballistic Shield is added because Riot Shield was weakened against
projectiles, Ballistic Shield gives the crew a way to get access to
protection against projectiles at some point in the round.
Improvised Shield adds a second improvised shield in the game (after
Buckler Shield). It's balanced by being weaker than Buckler, but higher
block chance, this adds an interesting choice for players on which
shield to craft.
## Changelog
🆑
add: Adds 2 new shields to the game! Ballistic Shield - researched by
Science, and Improvised Shield - made out of iron and sticky tape
image: Riot, Strobe, Telescopic, Energy shields got new less flat
sprites!
/🆑
* New Shields and Sprites for them
* This should do the trick
* uh oh
---------
Co-authored-by: DrTuxedo <42353186+DrDiasyl@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
* Does it work? Who knows.
* Mirror of tgstation/tgstation/#81492
* hmmm
* is this it?
* Oh, also synth stuff
* Catching up with some disarm refactors.
* tg's #81400
* Oh right, this
* This should cut it
---------
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
* [NO GBP] fixing issues with cutouts and potted plants (#81570)
## About The Pull Request
This should fix#81560 and fix#81561,
## Why It's Good For The Game
Oh no, another invisibility exploit.
## Changelog
🆑
fix: fixed an issue with tactical appearance (potted plants / cardboard
cutouts) not going away after giving the item to someone else.
fix: Fixed slaughter demon cutouts being invisible. Also fixed another
issue with the tactical appearance not going away when the cardboard
cutout is pushed down.
/🆑
* [NO GBP] fixing issues with cutouts and potted plants
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Adds support for different achievement dmis (#81471)
## About The Pull Request
I am back to pushing my code improvements upstream, sorry in advance.
As the title says, this adds support for achievement icons to be in
different dmi files than the default, pretty much the exact same way
that Language icons (for chat assets) do.
## Why It's Good For The Game
It is one of the few things in game (the only other thing i can think of
that does this rn is barsigns) that cannot have their icon changed when
trying to make a subtype, this is very limiting and very annoying,
especially since dmi conflicts are one of the worst types to deal with,
this would make my life a lot easier.
## Changelog
No player-facing changes.
* Adds support for different achievement dmis
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Adds an IS_CHANGELING helper (#81228)
## About The Pull Request
What it says on the tin. I also replaced checks with it everywhere I
found appropriate, hopefully without accidentally breaking anything.
## Why It's Good For The Game
We have a helper for most other antags, and it makes code a lot cleaner
and easier to read. I'm surprised we didn't have this one already.
## Changelog
🆑
code: added an IS_CHANGELING() helper and used it where applicable
/🆑
* Adds an IS_CHANGELING helper
* skyrat stuff
---------
Co-authored-by: A miscellaneous Fern <80640114+FernandoJ8@users.noreply.github.com>
Co-authored-by: jjpark-kb <mccorvey.norman@gmail.com>
Kicks Martial Arts out of the attack chain (yippee), makes it use signals, plus a large clean up of existing martial arts (#81097)
- Kicks Martial Arts out of the attack chain.
- All Martial Arts attacks are now handled via unarmed attack or grab
signals
- This means all martial arts are now technically on the living level,
allowing any mob that can unarmed attack to martial arts. Sort of. YMMV.
- All martial arts block checking is now handled by the arts themselves,
meaning you can selectively decide for a martial arts strike to not be
blocked. Maybe good for the future.
- A comprehensive cleanup of all existing martial arts. Improving var
names, code, adding some missing animation calls, etc.
Fixes#74829
Untangles the mess that is martial arts, making it a lot easier to work
with the attack chain and making it overall a ton more consistent.
🆑 Melbert
refactor: Big martial arts refactor, they should now overall act a ton
more consistent. Also technically any mob can do martial arts. Let me
know if something is funky.
/🆑
---------
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Dynamic Husk Icons (#81080)
Husk icons are now generated dynamically by greyscaling the limbs and
applying the husk blood overlay
rather than everything using the same husk sprite
Less sprites needed, also good for nonhuman races especially those with
non-humanoid shapes
All that is needed for a husk icon now is a blood overlay instead of an
entire limb set
Human, Lizard, Moth, Monkey husks
PIC IS A BIT OUTDATED, THE BLOOD IN PIC IS DARKER THAN HUSK BLOOD
(fixed) AND IT DOESNT "FIT" TO LIMB SPRITE (fixed)

🆑
refactor: Husk icons are now dynamically generated. See if you can
identify what species it was!
/🆑
* Design datum time cleanup (#81133)
Fast little PR, with the autolathe and design datum time changes, I saw
that we didn't have design datums moved over to using time defines
uniformly, and in a few cases the times were using material quantity
defines (oops!), so I've quickly moved those over to using our correct
time defines as guided by common sense.
Cleans up the code for this section going forward so that when everyone
copypastes a new design datum for the next feature at least we're using
consistent and correct standards.
No player facing changes.
* Hmmm
* uh oh not yet
* Yo, this should do the trick.
---------
Co-authored-by: 13spacemen <46101244+13spacemen@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
* split area.contained_turfs up by zlevel, make init 10 seconds faster (#80941)
## About The Pull Request
Situation: areas have a list of all turfs in their area.
Problem: `/area/space` is an area and has a 6 to 7 digit count of turfs
that has to be traversed for every turf we need to remove from it. This
can take multiple byond ticks just to preform this action for a single
space rune
Solution: split the list by zlevel, and only search the right zlevel
list when removing turfs from areas.
replaces `area.get_contained_turfs()` with a few new procs:
* `get_highest_zlevel()` - returns the highest zlevel the area contains
turfs in. useful for use with `get_turfs_by_zlevel`
* `get_turfs_by_zlevel(zlevel)` - returns a list of turfs in the area in
a given zlevel. Useful for code that only cares about a specific zlevel
or changes behavior based on zlevel like lighting init.
* `get_turfs_from_all_zlevels()` - the replacement for
`get_contained_turfs()`, renamed as such so anybody copying/cargo
culting code gets a hint that a zlevel specific version might exist.
Still used in for loops that type checked so byond would do that all at
once
* `get_zlevel_turf_lists()` - returns the area's zlevel lists of lists
but only for non-empty zlevels. very useful for for loops.
The area contents unit test has been rewritten to ensure any improper
data triggers failures or runtimes by not having it use the helpers
above (some of which ensure a list is always returned) and access the
lists directly.
* split area.contained_turfs up by zlevel, make init 10 seconds faster
* eeyes
* Update area_spawn_subsystem.dm
* Unshits turf contain code slightly (#81023)
Literally just implements my reviews from #80941
I am frankly a smidge pissed that the pr was merged without them being
handled. No code is worth merging past known issues, and if the author
is just gonna dip then that's life.
I don't like privileging mso on stuff like this, especially because
frankly I'm kinda mad at him rn but also because when a pr is made the
onus on finishing it falls to the person who made it.
Should not need to clean up after someone as a maintainer, and shouldn't
normalize doing it. I'm not like mad at zypher directly mind he offered
to do this too, just the idea he was espousing here.
---------
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Fixes assorted head harddels, removes specific organ vars in head (#80950)
Fixes#80926, fixes#80372
The tongue, eyes, ears and brain vars were also being updated and
cleared elsewhere, runtiming whenever a regular head got dismembered and
then emptied, which would eventually cause a harddel due to improper
clean-up
I've fixed the errant proc and just removed those vars because I don't
like having duplicate references for no reason (they should always
already be in contents)
Not player facing
* Fixes assorted head harddels, removes specific organ vars in head
---------
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
* Optimizes Reftracking (Bigly) (Plus harddel fixes) (#80443)
## About The Pull Request
### Reftracking BS
Alllright so reftracking is slow, really really slow.
That's a problem for me, both because I want it to be fast so I can more
efficiently torture players by running it on live, but also because it
impedes both local and CI runs.
So I've set out to micro optimize the DoSearchVar proc, one of the
hottest in the game.
I've done this in a few different ways.
#### The simple shit
Removing redundant proc args
Yeeting assoc arg setting (extra cost)
Moving if statements around to prioritize the more common case
Ignoring empty lists.
#### The not simple shit
Throwing our snowflake list checking into the sun
(Background, byond has some special lists that cannot be accessed like
an assoc list, trying to will lead to runtimes)
The way we handle this involves inspecting their ref string, and it eats
a LOT of time.
Faster then to mark all the lists we know are special by var name, and
then use try/catch to detect and silence anything that sneaks through
(this is on the order of like 1/3 per run, kinda curious what they are
tbh)
Thanks to MSO for the idea for this btw.
Removes the vars and logic that tied ref searching to clients.
It's not how this code is used, and it slows everything else down for
really no reason
Added support for handing in a known "hanging reference" count, and then
searching for that.
This lets us early exit the ref search if we find everything we were
looking for, which is REALLY powerful, and why I asked for refcount() in
the first place.
### Harddel Fixes
[Fixes some harddels w gulag stuff born of the 515 one way ref
issues](046d7daa03)
[Ensures proximity cameras clean their ref to their proximity datum if
it's
deleted](ff607e9ccb)
[Deleting a pipe connected via the gas_machine_connector datum to a
machine should also delete that machine (harddel
fix)](9eecca22e7)
## Why It's Good For The Game
All this combined speeds up refsearching massively, on the order of
hundreds of seconds, and makes it far less time consuming for both CI
and running on live.
I'll be bullying some servers semi soon, want to see what I can cut out.
* Optimizes Reftracking (Bigly) (Plus harddel fixes)
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Yeets Hallucination GFI for Images (#80859)
## About The Pull Request
THEY PRODUCE IMAGES ANYWAY WE CAN JUST COPY THE MA
AHHHHHHHHHHH
* Yeets Hallucination GFI for Images
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Fixes confetti shotgun shells (#174)
* initial
* fix confetti shell
* donkpocket sprites and more
* this is for a different PR
* forgot these
* ..()
* reviews
* // instead of /// for overrides
---------
Co-Authored-By: Bloop <13398309+vinylspiders@users.noreply.github.com>
* New Quirk: Appendicitis Survivor (#77)
## About The Pull Request
Title.
## How This Contributes To The Nova Sector Roleplay Experience
Spontaneous appendicitis is.. an event!
This adds the Appendicitis Survivor quirk from my server,
[TaleStation](https://github.com/TaleStation/TaleStation).
Its a positive (-2) quirk, while low impact, some people may appreciate.
Its also another low cost quirk, so people could pick it up if so
desired.
## Proof of Testing
<details>
<summary>Screenshots/Videos</summary>

</details>
## Changelog
🆑 Jolly
add: New quirk for those who hate their appendix: Appendicitis Survivor!
A positive (-2) quirk.
/🆑
* Improves the names, descriptions, and extended descriptions of nearly all my firearms (#90)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->
Three steps
1. Guns no longer list their company in their name, this made some gun
names too long to refer to or just look weird.
2. Every gun now tells you what it fires in its examine if it didn't
before.
3. Every gun's examine text now hints that you can double examine for
more info on the weapon.
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->
Makes a lot of information about these weapons more convenient or more
apparent than they were before, and removes some unneeded information
(like we didnt really have to have the guys that made the gun displayed
straight in the name, you can see the company that makes them in the
examine text already).
<!-- Please add a short description of why you think these changes would
benefit the game and the roleplay atmosphere of the server. If you can't
justify it in words, it might not be worth adding. -->
<!-- Include any screenshots/videos/debugging steps of the code
functioning successfully, between the </summary> and </details> code
blocks. -->
<!-- To our mappers and spriters: Posting screenshots of content INSIDE
EDITORS (aseprite, PDN, SDMM, ect) is NOT valid proof of testing. Please
make sure that you COMPILE the game and provide PROOF you tested your
edits. -->
<details>
<summary>Screenshots/Videos</summary>


</details>
<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and it's effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->
🆑
qol: The names and descriptions of every paxilmaniac weapon have been
improved to be shorter (names) and mention at least what bullet the
weapon fires (description)
qol: Every weapon with an extended description has a hint in its normal
examine telling you that you can look further to get more info on the
weapon
code: Two instances of now-deleted weapons paths (which i found out
about through someone getting one in a christmas tree) existing due to
manufacturer examines of all things have been cleaned up, players wont
notice this one i think
/🆑
<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
* Re-adding Cat Scream (Normalized) (#123)
* Re-adding Cat Scream (Normalized)
* Update modular_nova/modules/emotes/code/scream_datums.dm
Renamed the file from cat.ogg to cat_scream.ogg
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* Renamed cat.ogg to cat_scream.ogg
* removed cat.ogg and replaced with cat_scream.ogg
* Removes old scream sounds, renames it properly
---------
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* [MODULAR] Fixes clockcult slab ui, some runtimes (#122)
Fixes slab ui, some runtimes
* [MODULAR] Fixes colonial cloaks not being able to hold any suit storage items (#129)
* Fixes imperial police cloak not being able to hold any suit storage items
* Moves this to the NRI police cloak
* Moves this to the NRI police cloak
* Update clothing.dm
* Update modular_nova/modules/novaya_ert/code/police_outfit.dm
---------
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* Resprited Vox Clothing (Nova Station Edition) (#97)
* Resprited Vox Clothing
* Update screenshot_humanoids__datum_species_vox_primalis.png
---------
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
* Chitter emote is the TG chitter sound unless you're a moth (#111)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->
Changes the *chitter emote to play the standard TG chitter sfx, unless
you're a moth, then it plays the moth chitter.
TG chitter is cute.
<!-- Include any screenshots/videos/debugging steps of the code
functioning successfully, between the </summary> and </details> code
blocks. -->
<!-- To our mappers and spriters: Posting screenshots of content INSIDE
EDITORS (aseprite, PDN, SDMM, ect) is NOT valid proof of testing. Please
make sure that you COMPILE the game and provide PROOF you tested your
edits. -->
<details>
<summary>Screenshots/Videos</summary>
https://github.com/NovaSector/NovaSector/assets/77534246/eae4fc45-d104-4588-8537-394da9304151
</details>
<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and it's effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->
🆑
add: Chitter emote has a different sound effect, unless you're a moth
/🆑
* Adds fancy masquerade masks (#180)
* Adds masquerade masks, making them available in the AutoDrobe
Thanks to Crumpaloo for the sprites!
* Early mirror of https://github.com/tgstation/tgstation/pull/80663
They're not properly usable otherwise
* Updates the sprites so they've got transparent eyes
* Adds the masks to the loadout
* Fixes variation flags and muzzled GAGS config, makes it act as internals
* Adjust some of the sprites a bit more, making snouted ones have smaller eyeholes, and vox ones looking more like masquerade masks
* Updates the sprites for the Vox Primalis!
---------
* Update greyscale_configs.dm
* Fixes Niftsoft Settings Panel (#208)
Fixes Niftsoft Settings
* 0
---------
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Kyogon <30851775+Kyogon@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
Co-authored-by: HalcyonicWolf <mmeade362@gmail.com>
Co-authored-by: SomeRandomOwl <2568378+SomeRandomOwl@users.noreply.github.com>
* hygeienbots basic bots (#80435)
## About The Pull Request
turns hygenic bots into basic bots. also now PAIs and people can play as
hygeinebots. and they can wear hats
## Why It's Good For The Game
transforms hyginebots into basic bots. their old AI used to handle all
the logic. i moved some of the logic to the mob itself so players can
also clean (or burn) things. also this pr will add pathing limits to
bots, in the case the jps movement thinks it can reach something, but
actually cant, in which case the bot will give up the chase
## Changelog
🆑
refactor: hygeinebots are now basic bots. please report all the bugs
fix: fixes hygenebots not being able to patrol
add: hygeinebots can now be controlled by Players
/🆑
* hygeienbots basic bots
---------
Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
* Creates a unit test for loadout item duplicates
* Update loadout_dupes.dm
* Update loadout_dupes.dm
* Update loadout_dupes.dm
* Update loadout_datum_under.dm
* I'm going to put the cargo shorts under misc/under
* Revert "I'm going to put the cargo shorts under misc/under"
This reverts commit e4cdbd80e42424091ad76be67502ced2cbadec13.
* Deletes unused hydroponics code (#80156)
## About The Pull Request
`/obj/item/seeds/sample` was completely unused, ever since it's
inception in #16082
(d513f52244)
as far as I can tell
(Me when "adds plant samples for future use" never makes use of them in
the future)
All this does is complicate hydro code so it dies.
Anything it is doing should be handled by genes probably
While I was here I made sure nothing in `can_add` will break and touched
up the code a tiny tiny bit. I kept it as `SHOULD_CALL_PARENT` even
though it doesn't make use of it at the moment because every trait
currently calls parent / respects return value, so sure, why not
## Changelog
Not necessary
* Deletes unused hydroponics code
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Adds medical record descriptions for quirks without any
* Fix Conflict, Preserve SR edit
* Updates Ration Ticket with medical Records
* Two more quirks
---------
Co-authored-by: Verm <32827189+Vermidia@users.noreply.github.com>
Co-authored-by: SomeRandomOwl <somerandomowl@ratchtnet.com>
* basic cats and mini kitchen helpers (#79800)
## About The Pull Request
this pr transforms cats into basic pets! cats now have some new
behavior. they can carry fish and hunted mice in their mouths to deliver
it to kittens, and kittens will eat them.


if a kitten sees you holding food, it will point at you and meow loudly
until u give it the food.
becareful when putting male cats near each other, there is a small
chance they get into a heated argument and meow loudly at each other
until one of them flees.
also added a new small cat house for cats. cats will use these homes if
u build one near them (using 5 wood planks)

Chefs can craft the cake cat and breadcat. these are useful cats because
they can help the chef around in the kitchen. they will turn stoves and
grills off when food is ready, so they dont burn. and the cake cat will
help the chef decorate his donuts
## Why It's Good For The Game
refactors cats into basic mobs and gives them a deeper ai
## Changelog
🆑
refactor: cats are now basic pets. please report any bugs.
add: the cake cat and bread cat can now help the chef around in the
kitchen
/🆑
* basic cats and mini kitchen helpers
* Modular
---------
Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
* Bumps compile to 515 (#79134)
## About The Pull Request
LSP supports it, let's GOOOOOO
I've removed the 515 tests since they're stable, alongside the libcall
wrapper. left the rustgcall wrapper cause yaknow memes
Just removed all the 515 and 514 particular define wrappers. gaming
## Changelog
🆑
server: Minimum compile version has been bumped to 515. clients still
support 514 but we're gonna start using 515 restricted features for
serverside now.
/🆑
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>
* Bumps compile to 515
* Fixes a TGS regression in its API
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Fixes failure state indication message (#79988)
This is actually determining if the item was deleted before it had a
chance to Initialize.
* Fixes failure state indication message
---------
Co-authored-by: oranges <email@oranges.net.nz>
* Add the space turf type to the space unittest (#79986)
This might seem pointless, but it helps identify spurious failures due
to something else blowing a hole in the station before this test runs.
* Add the space turf type to the space unittest
---------
Co-authored-by: oranges <email@oranges.net.nz>
* Fixes hearing messages from speakers on another z level (515 fix) (#79888)
515 changed get_dist to return inf when either end is on another z
level, instead of just the maximum range. `/mob/living/Hear` early
returns when the speaker is too far away to hear. Previously we would
get around this by passing in INFINITY as the range for the message, but
the INFINITY define is just a very large number instead of real infinity
which is what byond gives back for get_dist.
I also improved the unit test a little while debugging this.
* Fixes hearing messages from speakers on another z level (515 fix)
---------
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
* Monkey Business actually spawns monkeys on the station. (#79276)
## About The Pull Request
The monkey business unit test was apparently not actually spawning
monkeys on the station like it was supposed to. It was trying to find
open turfs inside of area _typepaths_, which obviously do not contain
turfs. Functionally, this means it was summoning a number of monkeys
into the same turf of the unit test z-level equal to the number of areas
on the station map. Now it will actually place one monkey in every area
of the station itself.
This was an incidental discovery while trying to diagnose #79147 with
Jacquerel. We still don't know what's causing that one, and I doubt this
will do anything about it, but nonetheless the unit test wasn't working
right.
## Why It's Good For The Game
Makes a unit test do what it was actually intended to do, which is put a
bunch of monkeys all over the station and see if they ruin anything.
This might actually cause _more_ test failures since they're being put
in a less controlled environment, but we'll see.
## Changelog
Nothing player facing.
* Monkey Business actually spawns monkeys on the station.
---------
Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
* Reworks transformation sting to be temporarily in living mobs, forever in dead mobs
* Modular updates
* Recaches the icons generated in the `changeling` unit test
* Pain
* More tweaks
* Disable unit test
* Let's see if we can pass test temporarily
* Makes transformation sting unobtainable more cleanly
* Unit test
* Cursed proc
* Kill the unholy copy pasta
Seriously this stuff is just awful. This is not maintainable.
* test this
* Update comments
* Fixing the screenshot test, maybe?
* grrr
* Update changeling.dm
* Attempt to fix this nonsense
* Update changeling.dm
* Update changeling.dm
* Update changeling.dm
* Update dna.dm
* Fixes it?
* Screenshot test
* Update _traits.dm
* Update _traits.dm
* Fix this
* Update dna.dm
* Update dna.dm
* Hmm
* This proc needs a new name
* I want to scream but I have no mutant parts
* Fix
* Update species.dm
* Update species.dm
* Update species.dm
* Update species.dm
* Some touch ups
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Jolly <70232195+Jolly-66@users.noreply.github.com>
* Refactors Parrots into Basic Mobs (ft. Ben10Omintrix/Kobsamobsa)
* UpdatePaths
* Modular, cleanup, porting parrot commands into the new system
* makes poly slightly less of a dick
* Update parrot.dm
* Update parrot.dm
* Update tgstation.dme
* Revert "Update tgstation.dme"
This reverts commit a8b40c4aba524c271db02c271089664649dea1eb.
---------
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
* Calls Allocate on the spawn humans unit test humans (#79827)
## About The Pull Request
I have found a unit test that spawn instances of
`/mob/living/carbon/human/consistent`, without using `allocate`, so they
won't get into the list of things to be deleted when CI finishes
running. This PR ensures that they won't stick around after the unit
test has finished.
I kept them picking a random tile from the unit test room, instead of
going with `allocate`'s default of the test area's bottom left corner.
Could have maybe swapped it to pick_n_take so there is no chance of them
piling up, but that is not relevant to the CI issue.
## Why It's Good For The Game
Maybe this will stop the random CI failures where
`/mob/living/carbon/human/consistent` fails to be deleted.
## Changelog
Nothing player facing
* Calls Allocate on the spawn humans unit test humans
---------
Co-authored-by: Profakos <profakos@gmail.com>
* Fixes bug with high luminosity eyes, & fixes eyes being on the wrong side of the head! (#79760)
* Fixes bug with high luminosity eyes, & fixes eyes being on the wrong side of the head!
* Screenshot test
* Merge skew
---------
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>