Commit Graph

8425 Commits

Author SHA1 Message Date
Fikou
b77c1c85ea MODLink System (+ NWTLMM) (#77639)
## About The Pull Request
A pact made with `@Kapu1178`
Small changes you should not care about:
RD MODsuit outfit (admin only) no longer has a beret that blocks the
activation of the suit
The beret used by death squad officers no longer is blocked from being
put on a hat stabilizer module
Admins can now Shear matrices of objects in Modify Transform
Multitool buffers have been a little refactored to use a setter proc
that saves them from causing hard dels
Cooler stuff:
A revival and remake of [Nobody Wants To Learn Matrix
Math](https://github.com/tgstation/tgstation/pull/59103), this time with
additional tooling for quick matrix calculations.

![image](https://github.com/tgstation/tgstation/assets/23585223/eb387738-0839-463a-aed8-4703d139b11a)
The MODLink system, available through every MODsuit and MODLink scryers
(a neck item obtainable from advanced modsuit research or
charliestation)
Let's you make a holographic call with any other MODLink user, where you
can chat in realtime and see what's up with em

![image](https://github.com/tgstation/tgstation/assets/23585223/5a822f9f-e823-497e-b766-40055f2fc0d6)
![image](https://github.com/tgstation/tgstation/assets/23585223/062983ee-6058-4e78-a3aa-bccda1a3e224)


## Why It's Good For The Game
Adds a fun way for the crew to communicate with each other that can be
done in real-time with relative privacy compared to radio.

## Changelog
🆑 Fikou, Armhulen, Sheets (+rep for Mothblocks and Potato)
fix: RD MODsuit outfit (admin only) no longer has a beret that blocks
the activation of the suit
fix: The beret used by death squad officers no longer is blocked from
being put on a hat stabilizer module
admin: Admins can now Shear matrices of objects in Modify Transform
admin: Admins now have access to Test Matrices in the VV dropdown, an
all-in-one tool for editing transforms.
add: MODLink system, available through scryers (from RnD and Charlie
Station) and through MODsuits. Lets you call people with holographs!
/🆑
2023-08-19 06:24:57 +00:00
A miscellaneous Fern
deaee5c561 Removes some duplicated and redundant components from _datum_components() (#77615)
## About The Pull Request

As it stands, `_GetInverseTypeList()` (as used in `_JoinParent()` and
`_RemoveFromParent()`) has two issues:
1. As described in #76678, it adds duplicated components because even if
`current_type` is `/datum/component` AND we've already added it in `. =
list(our_type, current_type)`, the final line is outside the while loop
and adds it again.
2. Currently every `_datum_components` list has all of it's components
listed under the `/datum/component` key. It's used as an all-encompasing
list for when all the components an atom has need to be looped through,
but I think that's a questionable implementation. Making an entire new
list doesn't make much sense, given that accessing elements of an
associative list is very cheap, and it nearly doubles the work we do
when adding components to `_datum_components`.
Doing it with other parents at least removes the need for type checks to
get components of a given type, so I think those are fine to stay.
## Why It's Good For The Game

Closes #76678.
Avoids the questionably useful list of components with
`/datum/component` as its key from `_datum_components`.

I don't think there's anything player-facing here.
2023-08-19 01:19:00 +02:00
necromanceranne
7ccf65f391 [NO GBP] Makes settlers properly short (as in the SHORTEST size) (Not DWARF short, just SHORTER) (#77717)
## About The Pull Request

I somehow missed that there was a size below SHORT and above DWARF,
fuck.

So we made them HUMAN_SIZE_SHORTEST like they should be.

## Why It's Good For The Game

Fuck

## Changelog
🆑
fix: Makes sure settlers are SHORTEST.
/🆑
2023-08-18 16:18:33 -07:00
san7890
bae1aef3b4 Refactors Regal Rats into Basic Mobs (more titles edition) (#77681)
## About The Pull Request

I literally can't focus on anything nowadays, so I just did this to
break a never-ending chain of distress. Anyways, regal rats! These
fellas are mostly player controlled, but did have _some_ AI capabilities
(mainly tied to their actions), so that was incorporated too. Everything
should work as-expected (as well as look a shitload cleaner).

Instead of doing weird and awful conditional signals being sent out, I
made the `COMSIG_REGAL_RAT_INTERACT` (not the actual name) have a return
value so we can always rely on that working whenever we have that signal
registered on something we attack. I also cleaned up pretty much every
proc related to regal rats, gave them AIs to reflect their kingly nature
(and action capabilities (as well as move the action to
`mob_cooldown`)).

Since I thought they needed it, Regal Rats now get a special moniker!
This is stuff like "the Big Cheese" and what-not, like actual regents in
history. That's nice.
## Why It's Good For The Game

Two more off the list. Much better code to read. Way smarter rats with
spawning their army as part of a retaliatory assault (war). More sovl
with better regal rat names. The list goes on.
## Changelog
🆑
refactor: Regal Rats have been refactored into basic mobs. They should
be a bit smarter and retain their docility (until attacked, in which
case you should prepare to get rekt by summoned rats), and properly flee
when they can instead of just sit there as you beat them to death. The
framework for them interacting with stuff (i.e. opening doors while
slobbering on food) is a bit more unified too, now. They also have
cooler names too!
/🆑

FYI: Beyond a few code touchups, I haven't touched the actions at all. I
do not believe myself to be enthusiastic about fixing anything involving
the actions code as of this moment so that this PR is more overbloated
unless it's unbelievably stupid or easy to fix.
2023-08-18 23:09:07 +01:00
Iamgoofball
d4697a5c7a Revert "Add the ability to use blips as your character's voice" (#77715)
Reverts tgstation/tgstation#77640


![Discord_iPE1cmuUrY](https://github.com/tgstation/tgstation/assets/4081722/a54a8e7b-ef2b-4f32-9589-bde7b6b2b7d4)

This is causing big problems right now and we've agreed to a, at
minimum, temporary revert so that we can re-approach this at a later
date and do things properly

@MrStonedOne pls i need that TTS repo im begging you pls
2023-08-18 22:55:15 +01:00
Jacquerel
fca0a11904 [no gbp] Lavaland should no longer spawn one million goliaths and watchers (#77716)
## About The Pull Request

Fixes #77709

I made a very smart and sensible and handsome change in a recent PR to
replace `mob/goliath/random` and `mob/watcher/random` subtypes with
spawner effects rather than mobs which qdel themselves on init sometimes
however I neglected to account for how the lavaland map generation was
reliant on those typepaths to space mobs apart

resultingly the map generator would attempt to place lavaland mobs about
12 spaces apart _unless_ they were goliaths or watchers which it would
spawn basically as much as it wanted wherever it wanted

## Why It's Good For The Game


![image](https://github.com/tgstation/tgstation/assets/7483112/b6622b9f-f356-426c-9491-00ca4491799a)

## Changelog

🆑
fix: the goliath and watcher mating season has ended and population has
returned to normal levels
/🆑
2023-08-18 14:37:48 -06:00
IndieanaJones
40a6126ae7 Fixes Xeno Sentinel's Sneak Action Icon + Additional Sneak QoL (#77543)
## About The Pull Request

This PR fixes the xenomorph sentinel's Sneak ability having an error
icon as opposed to the intended appearance. This PR also adds a smooth
alpha transition to Sneak as opposed to setting the alpha immediately.
Having your alpha drop to its sneak value takes 0.5 seconds, which is
fast enough that it really shouldn't matter.

This PR also changes sneak's chat message alert to a balloon alert.

## Why It's Good For The Game

The icon thing is a bugfix, which is always good. The alpha
transitioning instead of being immediately set looks much better in my
opinion, I think most would agree on that front. Balloon alerts are our
preferred option as opposed to chat alerts now, so its also a good thing
to change.

## Changelog
🆑
qol: Xenomorph Sentinel and Ambusher Spider's sneak ability now has a
transition to a lower alpha as opposed to being immediate.
qol: The sneak ability now uses balloon alerts as opposed to chat
alerts.
fix: Fixed the Xenomorph Sentinel's Sneak ability icon being an error.
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-08-17 21:58:25 +00:00
Jacquerel
820afe72a7 Converts some actions to mob cooldown actions (#77680)
## About The Pull Request

It has come to my attention that it isn't possible for admins to grant
the abilities to place web, lay eggs, and issue commands to spiders to
arbitrary mobs. This refactors Spider, Goliath, and Meteor Heart
abilities (hey what do you know I last touched all of those) such that
they can.

## Why It's Good For The Game

You **can** create the spider pig as an event.

## Changelog

🆑
admin: Adds Spider, Goliath, and Meteor Heart actions to the "Grant Mob
Action" menu.
/🆑
2023-08-17 15:16:02 -06:00
necromanceranne
c8266cf0a2 Settler Quirk: Tame the Outdoors! Have trouble with tall shelves... (#77654)
## About The Pull Request

Adds the Settler quirk. This gives you bonuses to taming animals and
fishing, as well as making you gain hunger slower than others.

However, you are quite a bit slower than most people, and have trouble
with vaulting objects. You do, however, suffer significantly less from
equipment slowdown. (to the point that it is almost zero)

Settler riders are faster on their mounts than others if they're at
least sane. They start to slow down if they're less sane.

You are also shorter than most people. 

<details>
  <summary>Typical Settler encounters the typical Spacer</summary>
  

![Dr_Xr1nU0AAMsSE](https://github.com/tgstation/tgstation/assets/40847847/86ed4947-de5f-4bdf-a8ae-521dc7c30662)
  
</details>

## Why It's Good For The Game

I wanted to add a lightweight quirk that was kind of the 'opposite' of
Spacer, but a little more focused on interacting with elements of the
game world that would enjoy some attention. So, I thought 'what about an
outdoorsman quirk?'

So, I based it around being from people who lived out on the rim, under
unideal circumstances (and probably heavier gravity than Earth), and
taming the land. The slower movespeed encourages finding an animal to
tame that you can ride, and the bonuses to taming should help make that
a bit easier. The other additions just made sense for someone living it
a bit rough in the wilderness.

Having a bunch of settlers taming cows and riding around on them all
shift just kind of sounds hilarious to me.

## Changelog
🆑
add: Settler quirk! Conqueror the great outdoors....in space. Just make
sure nobody asks you to get anything from the top shelf.
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-08-17 12:09:08 -06:00
IndieanaJones
ed51898942 Replaces Big Mob Tiny Sprites With Togglable Clientside Transparency For Big Mobs (#77361)
## About The Pull Request

This PR replaces the tiny mob sprite abilities for our large mobs with a
Toggle Seethrough ability. What this does when enabled is make yourself
transparent on your own client and makes you unable to click yourself.
With this, any sort of overlays that get added look correct while in
your tiny mob form and you can still appreciate your large size without
giving up the ability to click on targets that would be hiding
underneath your sprite.


![XenoQueen](https://github.com/tgstation/tgstation/assets/47086570/537b7db7-84fd-4202-955f-c5d2bec830c0)


![image](https://github.com/tgstation/tgstation/assets/47086570/1f9272f0-a972-407f-9031-ee87bbc67ead)

In total, this ability is granted to all the mobs who had tiny sprites:

- Xenomorph Queen
- Space Dragon
- Megafauna (not that players ever get access to these normally, but it
might be nice for admins)

Along with all this, I've also gone and expanded the mobs who get access
to the Seethrough ability to mobs that are large but didn't have a
mini-sprite. This includes:

- Jungle giants (leaper and mega arachnid)
- Tree mob
- Festivus pole mob
- Lavaland elites
- Xenomorph Praetorian
- Wumborian Fugu

On top of all this, any simple/basic mob given a fugu gland also
automatically gains this ability.

This solution also fixes all the overlays bugs that tiny mob sprites
introduced to the game, most notably the xenomorph queen overlays being
screwy when in small form and space dragon's overlays being completely
disabled for everyone if he was in small form.

The only issue with this currently is that clicking on any overlays from
your mob will let you still click on yourself, though this issue is
pretty negligible.

## Why It's Good For The Game

Tiny mob sprite abilities clashed very hard with our overlay system,
leading to a lot of buggy and unintended behavior. This replacement
works a lot more smoothly with overlays and also requires much less
setup to give it to a mob than tiny sprites did. I would also imagine it
helps keep the fantasy of being a big monster alive by letting you still
see yourself being a big monster without it getting in your way when
trying to attack things.

## Changelog
🆑
del: Removed tiny mob sprite abilities for large mobs
add: Add a Self Seethrough ability, given to most large mobs and all
mobs affected by a fugu gland
fix: Space Dragon's overlay will no longer vanish at times

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-08-17 07:20:38 +02:00
Ben10Omintrix
71f8560d7b mega arachnid basic monster (#77601)
## About The Pull Request
the mega arachnid is now a basic monster. he is a very tricky and
opportunistic creature he will plan his attacks carefully and only
attack the weak. he will first try to throw fleshy legcuffs at his
victims, if the victim becomes cuffed he will move in to attack him,
otherwise he will run away from him while trying to throw restraints at
his legs. while he is running away he will also release slippery acid to
slip his prey. also when he is looking for his prey, he will be
transparent for more stealth. after he finds his prey the transparency
will wear off. he is also a very stealthy creature, he will break any
lights and cameras near him and he can also climb trees to hide in them
while he is looking for a victim.

## Why It's Good For The Game
add more combat depth for the mega arachnid

## Changelog
🆑
refactor: the mega arachnid is now a basic monster ,please report any
bugs
feature: the mega arachnid now have an ability to slip victims
/🆑
2023-08-16 13:05:29 -06:00
Jacquerel
72174845f5 Basic Watchers & Basilisks (#77630)
## About The Pull Request

This one is a double feature because Watchers and Basilisks share the
same typepath. You might see a couple more of those.
As is tradition I decided to fuck with them rather than just port them.
Here's what's up.

**Basilisks**

![image](https://github.com/tgstation/tgstation/assets/7483112/9e4b0115-65dd-4df7-b62a-21c7be8549bf)

![image](https://github.com/tgstation/tgstation/assets/7483112/59162e68-7d73-4659-9531-5078ff751228)

- Have a new soulless sprite which looks less like a living blue hedge.
- Walk at you and shoot you while you are not in range (just like
before).
- Become supercharged if they become "heated" by lava, lasers, or
temperature weapons. This was a feature they also previously had but
they would never encounter lava, so now it also works if you use the
wrong gun on them.
- Lose their supercharge if you cool them down.
- Otherwise pretty normal mobs.

**Watchers**

https://www.youtube.com/watch?v=kOq_Bf78k5A
Here's a traditional video of me intentionally getting hit by mechanics
(trust me its definitely on purpose)

- They glow emmissively a little bit so you can see them from further
away.
- Their eyes light up about 0.5 seconds before they are able to shoot at
you.
- No longer melee attack, instead try to stay out of melee.
- Will occasionally put you into "Overwatch", meaning they will shoot
you rapidly if you move or act while they're staring at you for a brief
time period (after which you become immune for 12 seconds, and during
which other watchers will play fair and stop shooting at you).
- If they start taking damage they will also start using their "Gaze"
attack, look away or suffer some kind of negative effect!
- - Normal watcher gaze flashes and confuses you.
- - Magmawing watcher gaze obviously burns (and briefly stuns) you.
- - Icewing watcher gaze freezes you and throws you backwards.
- Magnetically attract and eat diamonds. They also used to do this, but
just if they happened to coincidentally walk past some.

**Other accompanying changes**

All basic mobs will now adopt the "stop gliding" trait if they get
slowed down too much.
I moved behaviour for "fire a projectile from this atom" into a helper
proc because I was using it in three places and I will probably use it
in more places. There are probably other places in the existing code
which could be using this.
I think I made the basic mob melee attack forecast default a little more
forgiving, they were fucking me up too much and I am the playtester.

## Why It's Good For The Game

Another one off the list.
New tricks for old dogs.
Framework for making mobs with ranged attacks "fairer" (you can see when
they are ready to shoot you).
More (hopefully) versatile AI behaviours which we will reuse later (I
hope I'm not duplicating one someone already made).
If our players "enjoy" them enough we can give more mobs "don't look at
me" mechanics.
Removes some soul sprites.

## Changelog

🆑
refactor: Basilisks and Watchers now use the basic mob framework. Please
bug report any unusual behaviour.
sprite: Basilisks have new sprites.
add: Basilisks will go into a frenzy if heated by energy weapons or
temperature beams as well as by lava.
add: Watcher eyes will be illuminated briefly when they are ready to
fire at you.
add: Watchers can now briefly put you into "Overwatch" and penalise you
for moving while they can see you.
add: Wounded watchers will occasionally punish players who look at them.
balance: Unusual watcher variants are more likely to appear.
/🆑
2023-08-16 13:04:41 -06:00
Jacquerel
d039aea9d8 Gravitational Anomalies will not make areas permanently have weird gravity (#77647)
## About The Pull Request

See title.
Someone added a new argument to this element, passed it in on creation,
and forgot to pass it in on removal.

## Why It's Good For The Game

A shift where the whole of the cargo bay has no gravity is fun, but the
crew can't fix it.
I might think of a way to bring it back in a more temporary fashion.

## Changelog

🆑
fix: Gravitational Anomalies will now correctly clean up after
themselves, instead of leaving an area of the station permanently heavy
or with no gravity at all.
/🆑

fixes https://github.com/tgstation/tgstation/issues/77249
2023-08-16 13:02:38 -06:00
A miscellaneous Fern
c6ad5eb9a3 Dismemberment moodlets are alleviated when recovering your limbs. (#77581)
## About The Pull Request

What it says on the tin.
When reattaching a limb, the respective dismemberment debuff will be
replaced by a significantly less severe one (-3 for 2
minutes as opposed to -10 for 8 minutes)
However, the way I've done it, to that ensure replacing a leg when
you're missing 4 limbs doesn't clear the moodbuff, has the entertaining
side effect of **allowing dismemberment moodlets to stack for each limb
you've lost, and being cleared separately.**
I honestly kind of like it. Their description changes in accordance to
what limb it is as well.
## Why It's Good For The Game

It doesn't make much sense for your character to continue lamenting the
loss of their arm/leg after they've already acquired a replacement.
I also like that this makes losing multiple limbs worse than losing just
one, as someone who's been nugget-ed would have a far worse day than
someone who has simply lost an arm.

Closes #77388.
## Changelog
🆑
fix: dismemberment moodlets are replaced by a lesser mood debuff when
you recover the limb in question.
balance: dismemberment moodlets can now stack for each limb you lose,
and are cleared separately. Their descriptions have been updated to
reflect this.
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-08-16 15:16:52 +02:00
san7890
63f7eb1a6a Fixes Ticked File Enforcement and Missing Unit Test (and makes said Unit Test Compile) (and genericizes the C&D list to the base unit test datum) (#77632)
Closes #77631

## About The Pull Request

Hey there,

Ticked File Enforcement simply wasn't catching files that were missed.
That's a bit stupid, so I decided to look into what the issue might be,
and whoopsie daisies I did double periods back in #76592
(020ac24053).

![image](https://github.com/tgstation/tgstation/assets/34697715/6023afe8-313d-4550-9a60-58a8bc211b4f)

I also added some debug info and some more checks to prevent such a
break from happening again on runtime of this script. I thought it was a
weird string concatenation issue (and not the simple break I thought it
was), so I rewrote how it adds `glob`s. I think it's cleaner so I'll
keep it anyhow

This PR also corrects the oversight of the missing unit test (introduced
in #77218 (69827604c4)) by reticking it in
the `_unit_tests.dm` file, and also makes it compile because it didn't
do that.

I also then had to do some more work to get the unit test to work.
* Genericizes the Create-and-Destroy "ignore" list to be a static list
on `/datum/unit_test` to allow it to be shared between these types of
tests that we need to test.
* Adds that list to C&D and the broken unit test regarding fantasy
bonuses
* Fixes some actually broken that the unit test was made to catch (beam
rifles, butterdogs and other slippery items, random ingredient boxes).
* Adds cases for things that the unit test and overall framework really
shouldn't be altering anyways (mythril), and was likely causing
inappropriate stack traces on master

## Why It's Good For The Game

Unit Tests WORK. Tools WORK.


![image](https://github.com/tgstation/tgstation/assets/34697715/9a59c0db-7a33-4546-918b-c73372a5b867)


## Changelog

🆑
fix: Beam rifles will no longer inappropriately retain any bonuses they
may gain from wizardry.
fix: Inappropriate stack traces over bonuses being applied to components
that gain bonuses innately (like Mythril stacks) should cease.
/🆑
2023-08-15 23:51:26 -07:00
Mothblocks
05b5213ae3 Add the ability to use blips as your character's voice (#77640)
## About The Pull Request

- Adds the ability to force your TTS voice to always be blips, default
is still normal speech
- Probably fixes a bug with silicon voices not transferring properly?
There was an entire argument missing from tts_request/New
- Fixes problems I got from the Docker build not working at all. Only
thing interesting is `--no-cache-dir` which was to fix the container
running out of RAM even though I literally just got 64GB of RAM today

Got permission from @optimumtact as alternative to being able to disable
your voice, CC @Iamgoofball

## Why It's Good For The Game

I spent two hours trying to find a voice that didn't make me
uncomfortable to use and that was even in the realm of being the voice I
would actually want people to hear. Characters still have distinct
"voices" because the blips are chopped together from the voice itself

## Changelog

🆑
add: You can now set your voice to just blips.
/🆑
2023-08-15 22:18:05 -04:00
Andrew
2d34c7433a New Mech UI and equipment refactor (#77221)
![bWJlVIDO53](https://github.com/tgstation/tgstation/assets/3625094/d75030b5-59e9-43f6-96b4-1b7564caceef)

## About The Pull Request

Made a new UI and refactored some mech code in the process.

Fixes #66048
Fixes #77051
Fixes #65958 ??? if it was broken
Fixes #73051 - see details below
Fixes other undocumented things, see changelog.

## Why It's Good For The Game

The UI was too bulky and Mechs were too complex for no reason. 
Now they follow some general rules shared between other SS13 machinery,
and there is less magic happening under the hood.

## Detailed Changes

### New Mech UI, Air Tank and Radio as separate modules

Previous UI for comparison:

<img alt="9SScrXAOjy"
src="https://github.com/tgstation/tgstation/assets/3625094/904e3d07-e7d7-4d3a-a062-93e0e35b4b66">

Previously mechs came with radio pre-installed and air canisters
magically pre-filled with air even when you build one in fab.
Radio and Air Tanks are now both utility modules that are optional to
install. Gas RCS thrusters still require Air Tank module to operate.

This made the Mechs more barebones when built, giving you only the basic
functionality.

<img alt="5SDMlXTJxv"
src="https://github.com/tgstation/tgstation/assets/3625094/b9364230-49ac-416b-aa70-e851fbf2050e">

To compensate this change, all mechs got two extra utility module slots.

All other modules got new UI. And ore box now shows the list of ores
inside.

<img alt="SRX5FjvsHA"
src="https://github.com/tgstation/tgstation/assets/3625094/cbe2e98d-1cd4-4667-8dae-2f9227b4b265">

### Mounted Radio

Works as a normal radio, but with subspace transmission. Available from
the basic mech research node and can be printed in fab.

### Cabin Sealing

To compensate for the lack of air tank by default, mechs with enclosed
cabin (e.g. all except Ripley) got an ability to toggle cabin exposure
to the outside air. Exiting the mech makes cabin air automatically
exposed.

When you seal the cabin, it traps some of the outside air inside the
cabin and you can breathe with this air to perform a short space trips.
But the oxygen will run out quickly and CO2 will build up.

Sealing the cabin in space will make the cabin filled with vacuum, and
it will stay there until you return to air environment and unseal the
cabin, letting the breathable air to enter. There are temperature and
pressure sensors that turn yellow/red when the corresponding warning
thresholds are reached.

You could also use personal internals in combination with cabin sealing
for long space travels, so Air Tank is completely optional now and
mostly needed when you need RCS thruster.

### RCS thrusters

They are now available earlier in tech tree and consume reasonable
amount of air (5 times more than human jetpacks), and they don't work
without Mounted Air Tank, unless it's an Ion thruster variant.

### Mounted Air Tank

Available from the basic mech research node and can be printed in fab.
Built model comes empty, and syndicate mechs come with one full of
oxygen.

<img alt="GrFDrH5Hwe"
src="https://github.com/tgstation/tgstation/assets/3625094/b677b705-bda0-4c8c-96c7-d32bf7bf9f28">

Can be switched to pressurize or not pressurize the cabin. Releases gas
only when the cabin is sealed shut. Starts releasing automatically, but
can be toggled to not release if you want to use it just as a portable
canister.

Cabin pressure can now be configured in the module UI instead of
Maintenance UI.

Can be attached to a pipe network when the mech is parked above a
connection port.

Comes with a pump that works similarly to the portable pump. It lets you
vent the air tank contents outside, or suck air from the room to fill
the air tank. Intended to provide an ability to fill the air tank
without the need to bother with pipes.

Also has gas sensors that display gas mix data of the tank and the cabin
(when sealed).

### Stock part changes

All mechs now require a servo motor and they reduce mech movement power
consumption instead of scanning module.

Scanning modules are optional for mech operation (still required to
build) and the lack of one disables the following UI elements:

- Display of mech integrity (you can still see the alerts or examine the
mech to get rough idea)
- Display of mech status on internal damage (and you can't repair what
you can't diagnose)

The rating of scanning module doesn't have any effect as of now.

Cargo mech comes without it roundstart.

<img alt="2vDtt99oqb"
src="https://github.com/tgstation/tgstation/assets/3625094/147144ca-824e-4501-acf5-6ee104f309e7">

Capacitors now also reduce light power usage and raise the overclocking
temperature thresholds (see below).

### Maintenance

Maintenance UI removed, and its logic migrated to other places.

Access modification now managed inside the mech, and anyone who can
control the mech, can adjust the access in the same way as they can set
DNA key.

To open the maintenance panel you just need a screwdriver. It is instant
when the mech is empty and it has a 5 second delay when there is an
occupant to avoid in-combat hacking and part removal. It will alert the
occupant that someone is trying to tinker with their mech.


![image](https://github.com/tgstation/tgstation/assets/3625094/1abfca3c-8ba9-44b0-913c-c209564b91fd)

Once the panel is open, you can see the part ratings:


![image](https://github.com/tgstation/tgstation/assets/3625094/404f95bb-9f74-4e5b-a975-5ab6f74bdfa9)

With open panel you can hack the mech wires (roboticists can now see
them):

<img alt="mj205G2qDa"
src="https://github.com/tgstation/tgstation/assets/3625094/44cea0d1-44b4-4b50-b1d3-a97c0056bab3">

There are wires for:
- Enabling/Disabling ID and DNA locks
- Toggling mech lights
- Toggling mech circuits malfunction (battery drain, sparks) 
- Toggling mech equipment malfunction (to repair after EMP or cause
EMP-like effect, disarming mech)
- 3 dud wires that do nothing

The hacker may be shocked if the mech power cell allows.

When the panel is open and the user has access to the mech, they can
remove parts with a crowbar:

<img alt="jR40gyTWtJ"
src="https://github.com/tgstation/tgstation/assets/3625094/b573f5b9-b8ea-412e-b3e0-c872e01e0c23">

Hitting the mech with an ID from outside now toggles the ID Lock on/off
if the ID has sufficient access.

### Power consumption and overclocking

Rebalanced mech power consumption. T4 parts were not working in
Syndicate Mechs, as their effect was not calculated until you manipulate
parts manually. Constructed mechs with t1 parts even had their energy
drain reduced with upgrade to t1.

Now all mechs apply their base step power usage correctly don't ignore
the stock parts.

Servo tier now reduces base power consumption by 0% at t1, 50% at t2,
33% at t3 and 25% at t4
Capacitor tier now reduces base power consumption of mele attacks,
phasing and light by the same amounts.

Gygax leg actuators overload replaced with mech overclocking. Any mech
can be overclocked by hacking wires, but only Gygax has a button for
toggling it from the Cabin.

Now there is an overclock coefficient. 1.5 for Gygax and other mechs, 2
for Dark Gygax.

When overclocked, mechs moves N times faster, but consumes N times more
power.


![image](https://github.com/tgstation/tgstation/assets/3625094/01e285fd-6fd6-4558-8277-2ed3abf474d8)

While overclocked, mech heats up every second, regardless of movement,
and starts receiving internal and integrity damage after a certain
temperature threshold. The chance is 0% at the threshold, and 100% at
thresholds * 2. The roll happens every tick. Capacitor upgrades this
threshold, letting you overclock safely for longer periods.


![image](https://github.com/tgstation/tgstation/assets/3625094/80d90cea-0d20-4054-9369-a47deb6f52f2)

When you stop overclock, the temperature goes back down.

### Other changes and fixes

Concealed weapon bay now doesn't show up when you examine the mech, so
it's actually concealed now.

New radio module can properly change its frequency, as it didn't work
for previous radio.

Launcher type weapons were ignoring cooldowns and power usage, so you
could spam explosive banana peals, while they should have a 2 second
cooldown:
<img alt="q5GjUsHwGr"
src="https://github.com/tgstation/tgstation/assets/3625094/d102725d-e9e1-4588-9d6c-b9e38b7a6535">

Now this is fixed and all launcher type weapons properly use power and
have their cooldowns working.
And now they have the kickback effect working (when it pushes you in the
opposite direction in zero gravity on throw).

Thermoregulator now heats/cools considering heat capacity instead of
adding/reducing flat 10 degrees. So you can heat up cabin air quicker if
the pressure is low.

There were some other sloppy mistakes in mech code, like some functions
returning too early, blocking other functionality unintentionally. Fixed
these and made some other minor changes and improvements.

## Changelog

🆑
refactor: Refactored Mech UI
refactor: Refactored mech radio into a utility module, adding extra slot
to all mechs
refactor: Refactored mech air tank into a utility module with an air
pump, adding extra slot to all mechs
refactor: Refactored mech cabin air - there is now a button to seal or
unseal cabin to make it airtight or exchanging gases with the
environment
refactor: Removed mech maintenance UI Access is set in mech UI, and
parts are ejected with a crowbar
add: Mech now has wires and can be hacked
qol: Roboticists now can see MOD suit and mech wires
add: Mechs now require servo motor stock part and it affects movement
power usage instead of scanning module
add: Scanning module absence doesnt block mech movement and hides some
UI data instead. Big Bess starts without one.
qol: Hitting mech with ID card now toggles ID lock on/off if the card
has required access
fix: Fixed concealed weapon bay not being concealed on mech examine
fix: Fixed mech radio not changing frequency
fix: Fixed mech launcher type weapons ignoring specified cooldown
fix: Fixed mech launcher type weapons not using specified power amount
fix: Fixed mech temperature regulator ignoring gas heat capacity
fix: Fixed mech stopping processing other things while not heating
internal air
fix: Fixed mech being able to leave transit tube in transit
fix: Fixed mech internal damage flags working incorrectly
fix: Fixed Gygax leg overloading being useless
fix: Fixed mechs ignoring their stock parts on creation. Syndicate mechs
now stronger against lasers and consume less energy on move. Upgrading
from tier 1 to tier 2 doesn't make mech consume MORE energy than before
the upgrade.
balance: Rebalanced mech energy drain with part upgrades. Base energy
drain reduced by 50%, 33%, 25% with upgrades and applies to movement
(Servo rating), phasing, punching, light (Capacitor rating).
balance: Hydraulic clamp now can force open airlocks
balance: Made mech RCS pack consume reasonable amount of gas
code: Fixed some other minor bugs and made some minor changes in the
mech code
/🆑

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Sealed101 <cool.bullseye@yandex.ru>
Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-08-15 18:02:28 +01:00
Paxilmaniac
e3a22f5e91 Reflavors the Mosin to be a surplus rifle from the past IC 200 years, rather than from 670 years ago in game. Allergy warning: May contain microscopic silverscale buff (#77169)
image: The Mosin-Nagant has been given new sprites and a reflavor, looking for the old rifle? Look for the Sakhno Precision Rifle.
balance: The tiniest balance thing, but since Silverscales use the Sakhno-Zhihao rifle, which has a scope on it, their main weapon now has a scope.
2023-08-15 00:47:32 -04:00
OrionTheFox
47718914e4 More Suits resprites (Bonus: Chef/Bartender updates!) (#77558)
## About The Pull Request
Finally, my ultimate goal:
All Lawyer suits are now under suits.dmi. Having some suits in suits.dmi
and some in civilian.dmi was just really really weird and confusing.

Also updated some more Service stuff, specifically the Chef and
Bartender. Their uniform is the generic Service Buttondown, and their
other gear has been updated. The Bartender, notably, now has a new item,
the bowtie!

Full changelog:
- Adds Bowtie (and yes, it's in relevant vendors)
- Adds a greyscale Formal Jacket (the lawyer jackets but greyscaled)
- Removes `/obj/item/clothing/under/rank/civilian/chef` and
`/obj/item/clothing/under/rank/civilian/bartender`; replaces them with
`/obj/item/clothing/under/costume/buttondown/slacks/service`
- **Moves all Lawyer suit sprites to the suits.dmi**
- Converted `/obj/item/clothing/under/rank/civilian/lawyer/bluesuit` to
use the same GAGS configs as the buttondown (path unchanged)
- Resprited all Lawyer suits (except galaxy ones)
- Resprited the Lawyer jackets to match (including a currently unused
GAGS-palette one)
- Resprited the Chef Apron-Jacket and Hat
- Resprited the Botanist Overalls (and made them Greyscale)
- Updated the shirt on the Cook Jorts to be more up-to-date instead of
being new pants on a super crusty old shirt sprite.
- Puts stuff into vendors

## Why It's Good For The Game
Sprote updates yahoo!

Chef/Bartender showed their age, and essentially had the same uniform.
Now they look much more at home.

![image](https://github.com/tgstation/tgstation/assets/76465278/c4c317c3-e62a-41d3-87fe-bb38c2a46552)
GAGS Suit jacket yippee!

![image](https://github.com/tgstation/tgstation/assets/76465278/a1eaf9a9-58c9-44ef-b967-fdc62311afbd)
This jacket was put into to the Bartender's vendor for the sake of
allowing them their own gimmicks, such as this:

![image](https://github.com/tgstation/tgstation/assets/76465278/eb42e93b-9442-4cd4-891f-091a74aaccbf)
New greyscale overalls wahooo! Since they're greyscaled they're also in
the clothesmate for anybody who really wants them.

![image](https://github.com/tgstation/tgstation/assets/76465278/c8aea289-d2d9-467d-949a-82563bccb2d3)
The Lawyer suits just used an entirely different type of shading and it
made them stick out weird... I'm not quite sure on reshaping their
jackets but figured it's better to start with this and update them if
requested.

![image](https://github.com/tgstation/tgstation/assets/76465278/9a74c3a3-a2b8-48d6-89f9-77d1e0fdd86a)

As for moving Lawyer suits to suits.dmi... I just don't like them being
split up. It makes it annoying to prevent duplicates or keep them all
updated.
## Changelog
🆑
add: Added the Bowtie! Bartenders start with one on, but they can also
be found in the Bardrobe, Autodrobe, and Clothesmate. No need to tie it
either, it's just a clip-on.
add: Added a Greyscale "Formal Jacket" of the style that most suits use,
for crew who want to make their own using the buttondown shirt.
del: Removed the generic Cook/Bartender uniforms and changed them to use
the Service buttondown w/ slacks.
image: updated the majority of Lawyer suit sprites, along with the
Cook's Apron-Jacket and Hat, and updated/greyscaled Botany's Overalls!
Also the Overalls are available in the clothesmate, and the Cook Jorts'
shirt is less crusty.
/🆑
2023-08-14 22:07:35 -04:00
Comxy
63a56b087a Big Slappy | Giant Weapon DLC [MERGE READY!!!] (#77273)
## About The Pull Request
Big Slappy is a new illegal shovel/wrench which can be obtained through
illegals means. Parts you need to craft it can be found on the black
market uplink for a low price, but if it is not there you can find it on
the imports page on your hacked cargo console for 4400 credits usually.
Big Slappy makes you slow and you will get 10 recoil damage everytime
you hit someone and you will knock down your opponent for two seconds
while throwing people back like a baseball bat. It deals 30 damage and
is the fastest shovel/wrench out there. It can be folded into its wrench
form which will change its typing and makes it look like a wrench. It
also deals more damage in the wrench state, but also deals more recoil
damage and your target will not get knocked down. This weapon will
probably only appear in a few rounds since it has recoil damage, is slow
and costs a lot to obtain. It also has a longer meele attack cooldown.

To craft it you need 4 wrenches, 1 drill, 5 plasteel, 10 rods and 1 big
slappy parts using tools.

![promo](https://github.com/tgstation/tgstation/assets/25363960/4d619283-832c-4ce0-b3b2-e6ddb3dbd988)
## Why It's Good For The Game
Cool new weapon.
## Changelog
🆑
add: Added big slappy
image: Added big slappy parts and big slappy sprites
/🆑
2023-08-14 22:33:34 +02:00
Bloop
ed8445a312 Adds sanity checking to prefs checks, fixing a bug that can cause emotes to stop displaying intermittently (#76946)
## About The Pull Request

This PR adds a bunch of sanity checking to the `prefs.chat_toggles` var
accesses.

Prefs can be null when client is creating/deleting and this causes a
runtime where you might not be able to use emotes.


![image](https://github.com/tgstation/tgstation/assets/13398309/d89649d4-19c7-439f-b080-332709196505)

EDIT: as per suggestion I stopped masking the issue and added stack
traces instead. And made them into helper procs to avoid code
duplication.

For some of these procs it is important that we are able to continue
running to get to the end. **A ghost having null prefs should not stop
everyone else from hearing/seeing the emote.**

So now they will put the stack trace and keep on trucking if that issue
occurs. This is the main 'point' of the PR, which has seemingly gotten
bogged down in the creation of the two helper procs--apologies.

See https://github.com/tgstation/tgstation/pull/70404 for essentially
the same issue but applied to chat messages. I have gone back and
replaced the duplicated code from that to use the new helper procs
instead.

## Why It's Good For The Game

Anything chat related is a bad place to runtime. Some messages can take
a while to type out and to have it not display is frustrating at worst,
possibly detrimental if you have to communicate something urgently.

## Changelog

🆑
fix: fixes a bug that can cause emotes to stop working if a client is
being created or deleted
/🆑
2023-08-14 22:30:35 +02:00
SMOSMOSMOSMOSMO
15c3cd2c97 basic ice whelps (#77493)
## About The Pull Request
i have refactored ice whelps into basic mobs. They are now the artistic
sort as theyll mark their territory by seeking out icy rocks and carve
out statues of theirselves using their claws to serve as a warning to
players/animals that this is dragon turf and theyll also go out of their
way to burn any trees in vicinity just for the hell of it. they are now
gruesome cannibals if they find a corpse of one of their kin near them
theyll go eat it for nurishment. AS for combat, they have a new ability
which allows them to release fire in all directions however theyll only
use this ability once their enraged meter is full. to make it fair ive
given them a new component which allows them to telegraph abilities and
only do them after a delay so players can react in time for it.

## Why It's Good For The Game
basic mob refactor

## Changelog
🆑
refactor: ice whelps have been refactored to basic mobs
add: ice whelps have a new dangerous ability which theyll use once their
enraged meter is full
/🆑
2023-08-14 12:39:30 -06:00
ShizCalev
5ee1b76926 fixes medbots made with tactical medical kits having the wrong skin (#77080)
Fixes #76996

🆑 ShizCalev
fix: Medbots made with tactical medical kits now have the correct skin
/🆑
2023-08-14 15:39:32 +02:00
Bloop
415e1e7035 Fixes a bug with the immerse element (#77585)
## About The Pull Request

What it says on the tin. This runtime was caught downstream in an away
mission unit test where a mob is placed in a water turf.


![image](https://github.com/tgstation/tgstation/assets/13398309/8123321d-8bf4-4186-a63d-944080ad9f8a)

Basically the immerse overlay wasn't being added the very first time it
was created, because it wasn't being returned by
`generate_vis_overlay()`. Derp.

It went unnoticed because the overlays are cached and so every
subsequent `add_immerse_overlay()` works fine. And I guess upstream
doesn't have any mobs that spawn in water during tests so it was never
caught.

Also stops `on_init_or_entered()` from needlessly being called twice in
the case of a movable atom in water being initialized before the water
turf. The signal `COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZED_ON` already
sees to that.

## Why It's Good For The Game

Fixes a bug

## Changelog

🆑
fix: fixes immerse overlays not being added the first time a mob enters
a water turf
/🆑
2023-08-14 16:07:27 +08:00
Jacquerel
e150104d13 [no gbp] Dump consumed mobs when shapeshift effect ends (#77574)
## About The Pull Request

Fixes #77536
When you stop being shapeshifted we delete the mob you were previously
transformed into, which obviously also deletes everything in its
contents. If that mob can eat other mobs it deletes those mobs too.
We have an element "content barfer" which resolves this, I have made it
register to the "unshapeshift" signal to trigger dumping the contents
too, and added it to some mobs which were missing it.

## Why It's Good For The Game

Players were surprised by consuming player corpses after transforming
into a gelatinous cube and thus permanently deleting them.

## Changelog

🆑
fix: If you shapeshift into a mob which can eat things such as player
corpses, those things will fall out when you stop shapeshifting
/🆑
2023-08-13 14:45:54 -06:00
Jacquerel
29c3d38c7e Give basic mob ranged attacks a cooldown (#77575)
## About The Pull Request

Atomised change from a different PR I am working on.
This changes the basic mob ranged attacks element into a component so
that it can also track an attack cooldown on the mob, preventing it from
firing until the cooldown is complete.
This was possible with simple mobs but wasn't kept going forwards when
converting things to basic ones.

## Why It's Good For The Game

Ideally player and mob behaviour should be unified as much as is
realistically possible. Currently mobs which are designed to fire a
powerful weapon slowly can blast as rapidly as the click cooldown if
placed under control of a player, which is not ideal.
This isn't currently aligned for melee attacks either but I will look at
that later.

## Changelog

🆑
fix: Player-controlled basic mobs with ranged attacks can now only fire
about as fast as AI-controlled ones.
/🆑
2023-08-13 14:39:47 -06:00
Lamb
36274f2b62 Adds Mining Weather Radios (#76961)
## About The Pull Request
Adds a new item, the mining weather radio, to the mining points vendor,
QM locker, public mining docks, and lavaland.
This item can be used as a radio to communicate over supply channel with
other miners, cargo techs, or the QM. In addition to this, it has a
screen that displays warnings depending on the time left until an ash
storm or snow storm.
there is a separate wallmount version that does not have supply channel
access, but still displays updates on the weather.
you can examine either device to get an accurate readout of the
remaining time till the next storm.

![image](https://github.com/tgstation/tgstation/assets/110322848/d410a62c-72f3-46ed-929b-d73a93cb1cae)
## Why It's Good For The Game
letting miners know when a storm is coming allows them greater
flexibility when interacting with the station, and advance warning if
they are planning to head back to lavaland in the event of an ash storm.
It also strengthens the link between miners and the rest of the cargo
department by emphasizing use of the supply channel, and incentivizes
using it with the radio's built in microphone.
## Changelog
🆑 CoiledLamb, Jacquerel
add: Adds mining weather radio
/🆑
2023-08-13 03:20:25 +02:00
san7890
8e08a38cfb Unit Tests for AI Planning Subtrees not having required element/component (#77539)
## About The Pull Request

Hey there,

I've personally fallen for this stupid thing twice (in #77503 and #75627
(d3575161ca)), so I decided to spend a few
hours to crack out a unit test to ensure that I (and no one else) falls
for this stupid thing again.

Let me know if there's a smarter way to code something like this, but I
couldn't figure out a better way to accomodate the current framework and
be as agnostic to certain oddities as possible.
## Why It's Good For The Game
Catches stuff like this:

```txt
[2023-08-11 21:10:04.019]     FAILURE #1: The mob Garden Gnome does not have ANY instances of TRAIT_SUBTREE_REQUIRED_ELEMENT, but has a planning subtree (/datum/ai_planning_subtree/target_retaliate) that requires it! at code/modules/unit_tests/ensure_subtree_element.dm:45
 -     FAILURE #2: The mob the morph does not have ANY instances of TRAIT_SUBTREE_REQUIRED_ELEMENT, but has a planning subtree (/datum/ai_planning_subtree/target_retaliate) that requires it! at code/modules/unit_tests/ensure_subtree_element.dm:45
 -     FAILURE #3: The mob the guard spiderling (946) does not have ANY instances of TRAIT_SUBTREE_REQUIRED_ELEMENT, but has a planning subtree (/datum/ai_planning_subtree/target_retaliate/to_flee) that requires it! at code/modules/unit_tests/ensure_subtree_element.dm:45
 -     FAILURE #4: The mob the ambush spiderling (255) does not have ANY instances of TRAIT_SUBTREE_REQUIRED_ELEMENT, but has a planning subtree (/datum/ai_planning_subtree/target_retaliate/to_flee) that requires it! at code/modules/unit_tests/ensure_subtree_element.dm:45
 -     FAILURE #5: The mob the scout spiderling (375) does not have ANY instances of TRAIT_SUBTREE_REQUIRED_ELEMENT, but has a planning subtree (/datum/ai_planning_subtree/target_retaliate/to_flee) that requires it! at code/modules/unit_tests/ensure_subtree_element.dm:45
 -     FAILURE #6: The mob the flesh spiderling (337) does not have ANY instances of TRAIT_SUBTREE_REQUIRED_ELEMENT, but has a planning subtree (/datum/ai_planning_subtree/target_retaliate/to_flee) that requires it! at code/modules/unit_tests/ensure_subtree_element.dm:45
 -     FAILURE #7: The mob the hunter spiderling (869) does not have ANY instances of TRAIT_SUBTREE_REQUIRED_ELEMENT, but has a planning subtree (/datum/ai_planning_subtree/target_retaliate/to_flee) that requires it! at code/modules/unit_tests/ensure_subtree_element.dm:45
 -     FAILURE #8: The mob the nurse spiderling (629) does not have ANY instances of TRAIT_SUBTREE_REQUIRED_ELEMENT, but has a planning subtree (/datum/ai_planning_subtree/target_retaliate/to_flee) that requires it! at code/modules/unit_tests/ensure_subtree_element.dm:45
 -     FAILURE #9: The mob the tangle spiderling (19) does not have ANY instances of TRAIT_SUBTREE_REQUIRED_ELEMENT, but has a planning subtree (/datum/ai_planning_subtree/target_retaliate/to_flee) that requires it! at code/modules/unit_tests/ensure_subtree_element.dm:45
 -     FAILURE #10: The mob the broodmother spiderling (855) does not have ANY instances of TRAIT_SUBTREE_REQUIRED_ELEMENT, but has a planning subtree (/datum/ai_planning_subtree/target_retaliate/to_flee) that requires it! at code/modules/unit_tests/ensure_subtree_element.dm:45
 -     FAILURE #11: The mob the viper spiderling (519) does not have ANY instances of TRAIT_SUBTREE_REQUIRED_ELEMENT, but has a planning subtree (/datum/ai_planning_subtree/target_retaliate/to_flee) that requires it! at code/modules/unit_tests/ensure_subtree_element.dm:45
 -     FAILURE #12: The mob the tarantula spiderling (963) does not have ANY instances of TRAIT_SUBTREE_REQUIRED_ELEMENT, but has a planning subtree (/datum/ai_planning_subtree/target_retaliate/to_flee) that requires it! at code/modules/unit_tests/ensure_subtree_element.dm:45
 -     FAILURE #13: The mob the spiderling (100) does not have ANY instances of TRAIT_SUBTREE_REQUIRED_ELEMENT, but has a planning subtree (/datum/ai_planning_subtree/target_retaliate/to_flee) that requires it! at code/modules/unit_tests/ensure_subtree_element.dm:45
```

(ignore the part about gnomes and morphs, this was an earlier version of
the unit test. everything else was relevant and is fixed)
## Changelog
🆑
fix: Growing spiders will now retaliate against you like they were
always meant to.
/🆑
2023-08-12 23:08:43 +01:00
san7890
31f1924324 Refactors Morphs into Basic Mobs (there is now a swag action for morphification) (#77503)
## About The Pull Request

I was bored, so did this. Probably one of the neatest refactors I've
done, sorry if there's some oddities because I was experimenting with
some other stuff in this so just tell me to clean them up whenever I
can.

Anyways, morphs are basic mobs now. We are able to easily refactor the
whole "eat items and corpses" stuff in the basic mob framework, but the
whole "morph into objects and people" turned out to be a bit trickier.
That was easily rectified with a datum mob cooldown action and
copy-pasting the old code into that code, as well as doing some nice
stuff with traits and signals to ensure the one-way communication from
the action to the mob.

Old Morph AI didn't seem to be existant whatsoever, they inappropriately
leveraged some old procs and I have no idea how to make it work with new
AI. They DEFINITELY don't spawn outside of admin interference/ the event
anymore, and will always be controlled by a player, so this shouldn't be
too bad of an issue. I gave them something to seem alive just in case
though, but I think adding legitimate prop-hunt AI would be such a
laborious task that I am unwilling to do it in this PR.
## Why It's Good For The Game

If admins want to add the ability for Ian to assume the form of the HoP,
they can do that now! The datum action cooldown is quite nice for simple
and basic mobs... but it is currently not compatible with carbons. That
is not within scope for this PR, but I am dwelling on ways to extend it
to carbon but they all sound really awfully bad.

Also morphs are smarter, and we tick another simple animal in need of
refactoring off the list.
## Changelog
🆑
refactor: Morphs are now basic mobs with a nice new ability to help you
change forms rather than the old shift-click method, much more
intuitive.
admin: With the morph rework comes a new ability you can add to mobs,
"Assume Form". Feel free to add that to any simple or basic mob for le
funnies as Runtime turns into a pen or something.
/🆑

~~Does anyone know if there's a (sane) way to alias a cooldown action as
a keypress? I can't think of a good way to retain the old shift-click
functionality, because that does feel _kinda_ nice, but I think it can
be lived without.~~ I added it. Kinda fugly but whatever.
2023-08-12 22:35:25 +01:00
Jacquerel
497f18ea32 Spiders don't automatically grant an antag datum (#77523)
## About The Pull Request

Fixes #77501

Spider egg ghost role spawners grant the spider antag datum, rather than
the act of being a spider.
This means that gold core, mapstart, polymorph belt, and other spiders
will not have an antagonist datum.

While doing this I also made a new abstract `mob/living/basic/spider`
type which all three kinds of spider life stage (`spiderling`, `young`,
`giant`) extend from, because there was a gross amount of copied code.
Now there isn't.

Also the Flesh Spider and Event Midwife eggs now simply hatch adult
spiders instead of child ones.
This is because there is no reason for either of these to have a two
minute wait time before they get going. Midwife spiders spawned by the
event should just start spidering immediately, and Flesh Spiders are
made by changelings and shouldn't be effected by measures introduced to
balance the spider gamemode.
Eggs which are laid during a round and _can_ hatch into midwife spiders
still hatch baby spiders.

Also I swapped some white pixels on the animation of the ambush
spiderling for a different colour because they looked bad.

## Why It's Good For The Game

While the policy is always "if you turn yourself into something, you're
not an antagonist" the presence of the antag datum still confuses
people. Plus that code was gross and I didn't like it.

## Changelog

🆑
fix: Giant Spiders only have an antag datum if created by the round
event.
balance: Flesh spider eggs hatch into adult spiders instead of baby
spiders.
balance: The eggs spawned by the start of the spider infestation event
hatch into adult Midwife spiders instead of baby ones.
/🆑
2023-08-11 20:43:04 -06:00
die_amond
6977b041b7 Adds hauntium as a reagent with new fun uses. (#77471)
## About The Pull Request
Adds the material hauntium as a reagent, along with bringing some unique
effects with the reagent.

There are a few new ways to get it other than just the camera obscura as
before, such as grinding certain ghostly things.

Unique effects it brings:

- It works in metalgen (I believe the metalgen recipe is still broken as
of making this) to make hauntium infused metalgen.


https://github.com/tgstation/tgstation/assets/58376695/121ca6b2-00b7-4203-bc6a-48976b1af802


- Any object touched by the chem will temporarily have the haunted
effect, letting it teleport around randomly and even attack people.



https://github.com/tgstation/tgstation/assets/58376695/103aeee5-ed3e-4fdd-85e4-ac7338823c46


- If you put it in your body, it hurts your "soul" (soul being heart and
mood)

![image](https://github.com/tgstation/tgstation/assets/58376695/34182a4c-face-4fe7-b170-a7b10122a14d)
...unless you are morbid or undead, in which it gives a slight mood
boost and acts like an addiction-less drug
## Why It's Good For The Game
Hauntium previously was super niche and not very useful other than
making funny haunted toolboxes from it. This expands it's usage and
makes it a lot more interesting. I also know a good few people who have
also wished this was available to use in metalgen and now you can!
## Changelog
🆑
add: Lets you grind things into a hauntium reagent which works similarly
to the solid form but is versatile and has some unique effects.

/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-08-12 03:35:19 +02:00
Paxilmaniac
b52f671be6 Makes bluespace navigation gigabeacons both significantly nicer to use, and significantly cooler (#77223)
## About The Pull Request

"Behold, a navigation beacon" Plato says to the crowd of shocked
onlookers.


![image](https://github.com/tgstation/tgstation/assets/82386923/a8ec22f0-69a0-4ba6-9032-9936031873f0)

What are you looking at here? Navigation beacons have been party
reworked for significantly improved ease of use, and for significantly
cooler functionality.

As it stands, in order to explore space with a ship of some sort, you
have to take the following steps:

Fly to target zlevel
Build a floor
Build a machine frame, then make the beacon out of it
Go back and park your ship

Now, while this doesn't eliminate this process, it makes it a step
shorter and a good bit less annoying to do. There are no gigabeacon
boards, instead a compact beacon can be printed. This can be used inhand
and, after a delay of three seconds, will create a brand new gigabeacon
in front of you with no extra hassle.

So, aside from the sprite (the old one is an alien power core, by the
way), what's new? Just a bit of flavor. Examining a gigabeacon will
mention a radio frequency. If you tune into this radio frequency, then
you might be able to catch the automatic messages the beacons put out
every five minutes. They detail a little bit about the beacon, namely
its coordinates, and if its activate or locked. While not critical info
my any means, it can be good information to have pop up every few
minutes, or for discovering that there are gigabeacons you didn't know
were there before.
## Why It's Good For The Game

Gigabeacons had two big problems, one was that they were pointlessly
annoying to set up, and two was that they didn't have their own sprite.
Yup, they just used a random alien tech structure and nobody said
anything about it. Hopefully this pr fixes both of those problems,
alongside adding a little neat bit of flavor to them in the form of the
automatic radio broadcasts they put every few minutes on a non-standard
channel.
## Changelog
🆑
qol: Gigabeacons no longer need to be constructed like standard
machines, instead being printed as items that can be deployed quickly
inhand without tools.
qol: Gigabeacons are no longer their own research node, instead being a
part of telecomms tech (due to the fact they're RADIO navigation
beacons)
image: Navigation gigabeacons now have their own unique sprites,
inspired by maritime EPIRB devices. If you find a yellow box with an
antenna on it, you probably found a nav beacon!
code: The deployable component now gives you an option to disable the
examine blurb it adds to its parent
/🆑
2023-08-11 19:36:19 -04:00
LemonInTheDark
a803b21a6c Adds Source Count Macro (#77519)
## About The Pull Request

I prefer this to having people manually read the list, plus it seems
like reasonable information to expose, especially if we're gonna start
using it in this pattern.

## Why It's Good For The Game

Less futzing with internals
2023-08-11 20:40:15 +02:00
Tim
995dce77a1 Emergency shuttle information display improvements (#77457)
## About The Pull Request
Emergency shuttles now:

- Display occupancy limits and prerequisites  
- Has their own folder that is split into several subfiles
- Have documentation for a few variables

## Why It's Good For The Game

![4cUSVwSNl8](https://github.com/tgstation/tgstation/assets/5195984/01cd7e10-27f6-4a7d-a9a9-88477cc93310)


## Changelog
🆑
qol: Emergency shuttle now gracefully display occupancy limits and
prerequisites in the communication console.
/🆑
2023-08-11 20:39:28 +02:00
carlarctg
c968edab30 Restricts Scrapheap & Lepton Violet behind conditions, alters Rollerdome (#77277)
## About The Pull Request

Lepton Violet (wabbajack) shuttle must be unlocked by having some form
of polymorph happen in-game first (Pride Mirror or the cursed springs
are the most accessible sources)

Scrapheap shuttle can only be bought if the Cargo budget is below 600
credits, and the shuttle has just less than half of its usual refueling
time left. However, it gives the cargo budget an influx of 3000 credits!

Uncle Pete's Rollerdome has had its price increased, and the disco
machine is no longer unbreakable.

## Why It's Good For The Game

First off, here is my reasoning for why these need altering at all.

Players will always naturally gravitate to the wackiest and
most-out-there options, in this case this applies to shuttles. It's why
the Monastery or the Asteroid or Daniel are reasonably common sights,
more common than some of the 'boring' shuttle options that don't need
unlock with an emag.

The problem here, as I see it, is that there is no incentive
what-so-ever to NOT purchase these 'wacky' shuttles. Some of the
shuttles in the code are just way too stupid to be seen on most or even
some rounds (Arena, Disco Inferno?), so they require rare unlocks to
occur. Wacky shuttles being spammed round after round are bad due to
several reasons:
1. Players will run every joke to the ground. Wacky conditionless
shuttles take up a large amount of space in the shuttle memeplex, so
they are disproportionately seen in comparison to any of the
less-extravagant but more grounded and actually interesting options.
(Medisim? Monkeys anyone?). This ends up making the wacky shuttles
actually *less* wacky and just the stale and boring options.
2. Wacky shuttles affect the end-round quite a lot. This is fine, of
course, but not when these wacky shuttles can be seen every round.
3. These wacky shuttles don't have proper facilities. None of them have
a good medical section, or emergency supplies, or enough room. This gets
pretty annoying pretty fast.
4. One Funny Guy (the quintessential example being the clown with a dead
captain's ID) is all but guaranteed to try to buy the funniest and most
annoying shuttle to piss off the rest of the crew. With how Funny and
Annoying these shuttles are, not to mention how dirt-cheap they are (or
literally give you money!), they're easily the most seen alternate
shuttles, which isn't good when they alter how the round-end plays so
heavily.

> Lepton Violet (wabbajack) shuttle must be unlocked by having some form
of polymorph happen in-game first (Pride Mirror is the most accessible
source)

The Wabbajack has a endless source of voluntary Polymorphs with a
comically low price, which means it is purchased endlessly by crew, not
to mention being literally a source of free syndiborgs and xenos. While
I'm not a balanceposter, this does come with some annoyances especially
for antagonists who just randomly get blown up by an assault borg. This
is fine and fun every so often, but not as a common occurrence, not as a
guaranteed every-round option. I think it's an excellent candidate for
an unlock condition.

> Scrapheap shuttle can only be bought if the Cargo budget is below 600
credits, and the emergency shuttle is more than halfway refueled.
However, it gives the cargo budget an influx of 3000 credits!

This is LITERALLY 'haha grief shuttle', I have no idea how it even got
in as a condition-less shuttle. You see the captain buy it For No Raisin
Lul 2 minutes in, sigh to yourself, and secure an EVA suit when the
shuttle lands to try to survive in the unbelievably cramped space.
(Someone always blows it up.)

Instead of being JUST Grief Shuttle, now it has some interesting reasons
to exist. Revs and you're dirt-poor? Nukies just declared war after the
Clown bought ten crates of creampie dufflebags? Buy this shuttle and get
an influx of money.

> Uncle Pete's Rollerdome has had its price increased, and the disco
machine is no longer unbreakable.

This one isn't as egregious as the above, but I believe my personal
dislike of it extends to a game design level, to an extent. One person
can buy this shuttle and the crew as a whole are left to groan as they
prepare for a noisy, confusing shuttle in which everyone is ten tiles
shifted to their left as their sprite does the most ridiculous dance
seen in SS13 history. 'Just turn the music off!': I'm glad this is an
option, but it doesn't change how much this shuttle alters things. It's
fine as a sendoff to a nice, chill greenshift, but as a constant sight
in red shifts it's just... frustrating. And purchased BECAUSE it's
frustrating, to the short-lived schadenfreude of one person and the
frustration of others.

And then the unbreakable disco machine. Why is it unbreakable. If the
crew doesn't want to listen to the thing, let them break it? Buy Disco
Inferno if you want an unbreakable disco.

Some of these changes are probably over-the-top, but remember that these
will still be seen in-game, just a bit rarer. Worst case scenario the
shuttle replacement event will let them have their time in the
limelight.

## Changelog

🆑
balance: Lepton Violet (wabbajack) shuttle must be unlocked by having
some form of polymorph happen in-game first (Pride Mirror or the cursed
springs are the most accessible sources)
balance: Scrapheap shuttle can only be bought if the Cargo budget is
below 600 credits, and the shuttle has just less than half of its usual
refueling time left. However, it gives the cargo budget an influx of
3000 credits!
qol: Uncle Pete's Rollerdome has had its price increased, and the disco
machine is no longer unbreakable.
/🆑
2023-08-10 20:58:10 -06:00
Ghom
82115b8901 Setting a few things straight with embedding and caseless ammo. (#77450)
## About The Pull Request
So, when I made the `caseless` and `projectile_drop` elements, I failed
to take into account that bullets have an embedding variable sets, which
led to a few projectiles being embeddable when they shouldn't.

Beyond that, I wanted arrows and harpoons to be reusable yet embeddable,
which lead me to change a couple lines on the `embed` element, since
whoever made the element thought it was a good idea to add the
unnecessary step of attaching a copy of it to the `payload_type` of a
fired projectile before trying to embed it. Like, why? All that's going
to do is cause the resulting item to become embeddable, which may be an
issue for anything other than drop-deletable shrapnels. So yea, arrows
and harpoons, and emagged lollipops will now embed properly.

I've also deleted an unused, problematic subtype of quiver and arrow
casing, and made the quiver storage use

## Why It's Good For The Game
This will fix #77187. Perhaps buff harpoons and arrows a little but meh.

## Changelog

🆑
fix: Fixed fired foam darts, gumballs and (harmless) lollipops being
embeddable.
fix: Projectiles that should embed while being reusable will now do so
correctly, actually embedding the reusable casing instead of a shrapnel.
balance: Arrows are generally more likely to embed now, except for
blazing ones, that kind of just blaze.
qol: the quiver storage now uses numerical stacking (like botany and ore
bags, or the RPED, for example).
/🆑
2023-08-10 18:12:52 +01:00
Ghom
7f613ca2dc [NO GBP] Mirror reflections no longer display progress bars or runechat. (#77446)
## About The Pull Request
I was thoroughfully worried this would had been a cursed issue until I
figured it out. Mirror reflections now use render targets to copy the
appearance of the reflected movable, not vis overlays, with a couple
caveats.

## Why It's Good For The Game
This will fix #77431.

## Changelog

🆑
fix: Mirror reflections no longer display progress bars or runechat.
/🆑
2023-08-10 17:53:19 +01:00
Vekter
b427a201f2 Fixes FRAG-12 recipe leaving reagents in the beaker after crafting (#77445)
## About The Pull Request
This PR changes the recipe to use 10 fluorosulfuric acid instead of 5
sulfuric and 5 fluorosulfuric. This doesn't function as a balance change
as sulfuric acid is actually required to craft fluorosulfuric acid, so
this shouldn't impact the difficulty of crafting it, just make it more
consistent.

This also fixes a minor grammar issue with the name of the crafting
recipe that bugged me. Just me being pedantic.

## Why It's Good For The Game
Fixes #77338.

There's probably something deeper going on with how crafting handles
materials that turn into other materials in crafts, but this is a simple
fix that makes sense in the short term to make them actually craft as
expected instead of leaving byproducts.
## Changelog
🆑 Vekter
fix: FRAG-12 shells no longer require sulfuric acid, instead needing 10
fluorosulfuric acid. This should prevent them from leaving byproducts if
crafted in a specific way.
/🆑
2023-08-10 17:43:55 +01:00
YakumoChen
0895c5ce6b [NO GBP] Fixes custom ice cream (#77477)
## About The Pull Request

Defines a name for Korta milk custom ice creams because it was
overriding the default custom ice cream recipe instead of adding it
alongside as intended

## Why It's Good For The Game
bug fix 

## Changelog
I don't think anybody actually noticed this enough to justify a new
changelog lol
2023-08-10 13:20:34 +02:00
A miscellaneous Fern
4d654c7e2a Crafting recipes without an explicit name are now named after their results. (#77465)
## About The Pull Request

What it says on the tin. The code comment accompanying the "name" var
suggests this was already the case, but it was only true for the
crafting UI.
Adjusted some other code that gets recipe names to account for this
change.
## Why It's Good For The Game

Convenient, both as a fallback and for the sake of avoiding repetition
where it isn't necessary. That said, I haven't gone out of my way to
remove pre-existing names that match the result, in case that practice
is still considered desirable.
It also fixes #77379 and similar issues. 
## Changelog
🆑
fix: crafting recipes without a name, such as the mothic pizzas, will
inherit the name of the item they make
/🆑
2023-08-10 06:46:47 -04:00
Tim
7efb913baf Add admin blackhole(s) shuttle event (#77188)
## About The Pull Request
This adds a new **Black Hole** admin shuttle event while the escape
shuttle is in transit. The regular version spawns a small 1x1
singularity that falls through the ship. There is also a special
adminbus Kobayashi Maru version that spawns multiple black holes
rapidly.

## Why It's Good For The Game

![dreamseeker_MxqHmKXXQ8](https://github.com/tgstation/tgstation/assets/5195984/e169669a-fb71-48c5-8314-df82852eef3b)

Tell me this doesn't look fun?

## Changelog
🆑
add: Add admin blackhole shuttle event with a normal version and
suicidal version.
fix: Fix several shuttle event runtimes
/🆑

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
2023-08-10 10:27:19 +02:00
Comxy
8957eb763c Spider Evolution - Young Spiders [Ready] (#76692)
## About The Pull Request
This pr adds a young spiders that appear between spiderlings and adult
spiders. Now spiders have a stage where they are squishy but can also
spin webs and do some other things early depending on the spider type.
Spiderling stage takes 40 seconds and young spider stage take 1 minute,
ealier for spiderling this was 1 minute. Also adds a new wizard spider
sprite and makes the spider form usable.

Gives Wizard Spider version has better immunity against fire since it
can kill a wizard very fast it they are not paying attention.

Makes tangle spider get more health but makes the self-healing worse.
This is done because spider is a team antag except for the flesh
(changeling spider), making it so solo-playing as tangle is less
encouraged.

Scout spiderling gets thermal vision also. It cannot communicate, but it
can already start scouting now.

Viper deals bonus damage when an enemy is on low health. Toxins don't
kill humans anymore, and since the viper spider only deals 5 damage now
it deals more so it can actually take down enemies at low health. They
also have a little more health since they always die very fast. Viper
can also change between a defensive/slow mode with more armor or a
offensive/speed mode with less armor.

Nurse spider heals for 25 instead of 20, since 25 is one laser shot, it
makes more sense for the nurse spider to be able to heal that amount.

Flesh spider grows faster since they are a solo antag and spawn killing
isn't cool.

Tarantula spider can now tear down walls by clicking them instead of
needing to use their charge attack. They can also build wall webs and
passage webs. Their damage coeffs also got the regular burn factor for
spider so their health also increased a bit.

![promo](https://github.com/tgstation/tgstation/assets/25363960/19b9a97f-db08-4c7d-b470-46ae0bb18556)

![promo2](https://github.com/tgstation/tgstation/assets/25363960/783ced04-a97d-4849-8ec3-04c72a418284)
## Why It's Good For The Game
Now there is a smooth transition between the tiny spiderling and the
bigger spider stage. This will promote people to help the hive at an
earlier stage while not being too powerful yet. It is also realistic and
adds extra flavor to the spider antag. The other balance changes are
improvements to the game.
## Changelog
🆑
add: Young Spiders that appear between spiderlings and adult spiders.
balance: Wizard Spider version has better immunity against temp damage
and can lay webs faster.
balance: Tangle Spider sucks more with self-healing but has more health.
balance: Scout spiderling gets thermal vision.
balance: Viper deals bonus damage when an enemy is below 20% health.
/🆑
2023-08-09 22:38:57 +02:00
carlarctg
66b8748091 Adds Summon Simians & Buffs/QoLs Mutate (#77196)
## About The Pull Request

Adds Summon Simians, a spell that summons four monkeys or lesser
gorillas, with the amount increasing per upgrade. The monkeys have
various fun gear depending on how lucky you get and how leveled the
spell is. If the spell is maximum level, it only summons normal
gorillas.

Added further support for nonhuman robed casting: Monkeys, cyborgs, and
drones can all now cast robed spells as long as they're wearing a
wizardly hat as well.

Made monkeys able to wield things again.

Wizard Mutate spell works on non-human races. It also gives you
Gigantism now (funny). If the Race can't support tinted bodyparts, your
whole sprite is temporarily turned green.

Made Laser eyes projectiles a subtype of actual lasers, which has
various properties such as on-hit effects and upping the damage to 30.

Improved some monkey AI code.

## Why It's Good For The Game

> Adds Summon Simians, a spell that summons four monkeys or lesser
gorillas, with the amount increasing per upgrade. The monkeys have
various fun gear depending on how lucky you get and how leveled the
spell is. If the spell is maximum level, it only summons normal
gorillas.

It's criminal we don't have a monky spell, and this is a really fun spin
on it. Total chaos, but total monky chaos. It's surprisingly strong,
but! it can very well backfire if you stay near the angry monkeys too
long and your protection fades away. Unless you become a monkey
yourself!!

> Wizard Mutate spell works on non-human races. 

This spell is great but it's hampered by the mutation's human
requirement, which is reasonable in normal gameplay. Wizards don't need
to care about that, and the human restriction hinders a lot of possible
gimmicks, so off it goes. Also, wizard hulk does't cause chunky fingers
for similar reasons

> Made Laser eyes projectiles a subtype of actual lasers, which has
various properties such as on-hit effects and upping the damage to 30.

Don't really caer about the damage so much, this is more so that it has
effects such as on-hit visuals. Can lower the damage if required, but
honestly anything that competes against troll mjolnir is good.

> Added further support for nonhuman robed casting: Monkeys, cyborgs,
and drones can all now cast robed spells as long as they're wearing a
wizardly hat as well.

SS13 is known for 'The Dev Team Thinks of Everything' and I believe this
is a sorely lacking part of this or something. It's funny.
I want to see a monkey wizard.

> Made monkeys able to wield things again.

I really don't know why this was a thing and it was breaking my axe and
spear wielding primal monkeys. Like, why?

## Changelog

🆑
add: Adds Summon Simians, a spell that summons four monkeys or lesser
gorillas, with the amount increasing per upgrade. The monkeys have
various fun gear depending on how lucky you get and how leveled the
spell is. If the spell is maximum level, it only summons normal
gorillas.
balance: Wizard Mutate spell works on non-human races. It also gives you
Gigantism now (funny). If the Race can't support tinted bodyparts, your
whole sprite is temporarily turned green.
balance: Made Laser eyes projectiles a subtype of actual lasers, which
has various properties such as on-hit effects and upping the damage to
30.
add: Added further support for nonhuman robed casting: Monkeys, cyborgs,
and drones can all now cast robed spells as long as they're wearing a
wizardly hat as well.
balance: Made monkeys able to wield two-handed things again.
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-08-09 21:28:46 +01:00
Vincent983
72e5728566 fixes virology typo (#77461)
## About The Pull Request
fixes itching typo

## Why It's Good For The Game

typoes are bad

## Changelog


🆑

spellcheck: fixes one of the virus thresholds saying "scrathing" instead
of scratching

/🆑
2023-08-09 16:12:34 +02:00
Lamb
aa00533a23 resprites all soda cans, adds wellcheers juice (#77424)
## About The Pull Request
this one was a labor of love. all the existing soda cans have been
resprited, with the help of @retlaw34 (new top palettes), @Imaginos16
(new top shapes, can palettes), and some original sprites done by
@Krysonism (monkey energy, the 13 loko).
you can see the before and afters here: 

![image](https://github.com/tgstation/tgstation/assets/110322848/f23f0b06-d3b3-40dd-b0f9-353fb5864b92)
(now includes crushed cans, and inhands!)
let me know if there's any promotional stuff i should also include in
this PR, like if sol dry has a poster somewhere, and i'll go update that
with any changes made.

also adds a new drink, idea courtesy of @YesterdaysPromise: 
wellcheers juice!

![image](https://github.com/tgstation/tgstation/assets/110322848/96c6d57a-79c3-4b70-8bd5-c8f3d1bbec41)
it will make you drowsy, and has a variable affect on your mood
if you are unhappy, it will deal stamina damage
if you are neutral, it will give you a mood boost
if you are happy, it will heal some brute damage

also, six packs of cans have been resprited. can i interest anyone in an
alamo? or just a space beer?

![image](https://github.com/tgstation/tgstation/assets/110322848/567d677b-d89b-4c52-b576-b15293aabf49)

## Why It's Good For The Game
old can sprites were _crusty_. it was nearly impossible to tell what
some of the logos were, and the palettes were dated as well. this tries
to keep the logo similar where possible, giving them new life where i
can, and sometimes reimagining them. the result is still internally
consistent, but much more polished.
## Changelog
🆑
add: Added wellcheers, a contraband soda with various side effects.
image: resprites all cans in the drinks icon file
image: resprites the canholder sprite in storage.dmi
/🆑
2023-08-09 01:41:48 +00:00
siliconOpossum
684039be36 Adds rolling up sleeves to the greyscale buttondown, adds greyscale suitskirt, minor buttondown resprite (#77404)
## About The Pull Request
I noticed some recent PRs were replacing some suits with the buttondown
+ slacks, which isn't a terrible idea, but these changes also removed
the suitskirt variants of these, as well as the buttondown not
supporting rolling up its sleeves
and more subjectively, I _really_ don't like the horizontal line on the
buttondown, makes you look fat, don't like it
so I decided to remedy these issues myself
<details>
<summary> Screenshots </summary>

Service suitskirt

![image](https://github.com/tgstation/tgstation/assets/138069572/ab79295b-7ef3-46db-a24c-4dc20d58cd96)
Rolled up sleeves

![image](https://github.com/tgstation/tgstation/assets/138069572/bc8ea25d-0e72-45cf-afc5-bcd23911ed04)
Rolled up sleeves sidesprite

![image](https://github.com/tgstation/tgstation/assets/138069572/78e85ae5-4f39-4885-a094-9b187b4b7186)
</details>
The skirt itself is a slightly modified version of the skirt from the
greyscale skirtleneck

I had to put it in the shorts_pants_shirts.dmi files for greyscale
config reasons, not sure if everything is named correctly or necessarily
in the right place here
## Why It's Good For The Game
Re-adding the removed suitskirts is more objectively a good thing, the
resprite is more subjective but honestly I was mostly motivated to make
this by my hatred for how the buttondown looked before so lol
I also noticed a minor bug that was implemented when the old black suit
was replaced with a variant of the slacks
## Changelog
🆑
add: Added greyscale suitskirt, available in clothesmates
add: You can now roll up the sleeves of greyscale buttondown shirts
qol: Re-added previously removed black suitskirt and the RD's tan
suitskirt, as pre-colored variants of the above
fix: Fixed only one buttondown with slacks being available in
clothesmates
image: Slightly adjusted greyscale buttondown sprite, you look less fat
now!
/🆑
2023-08-08 14:08:53 -06:00
Sealed101
b423c232f8 [NO GBP] Fixes basic mobs freezing up when in melee range of a target (#77434)
## About The Pull Request

whoops missed an `!` and didn't test the code

fixes #77444
fixes #77449

## Changelog

🆑
fix: fixed basic mobs freezing up when in melee range of a target
/🆑
2023-08-08 17:21:15 +01:00
Ghom
ae01e5adbc Adds a score award that counts how many achievements you've unlocked. (#77096)
## About The Pull Request
Title. Basically, each time you unlock an achievement, the score goes up
by one. This PR is basically just an overglorified reference to a funny
game from a bygone era after all. It even comes with its own icon unlike
other scores. 💪 🐘

## Why It's Good For The Game
We've about 80 achievements in the game so far. It would be nice indeed
to see how many achievements players have unlocked and how high the
ladder goes.

## Changelog

🆑
add: Added a score award that counts how many achievements you've
unlocked so far.
/🆑
2023-08-08 12:18:18 -04:00
MrMelbert
234ba2d0de Allows for some locs to have spells cast while inside, such as PAI cards (for PAIs), AI cards (for AIs), and mechas (#77418)
## About The Pull Request

Spiritual successor to #76716

- Some spells can now be cast while the mob is within the contents of
certain atoms.
  - PAIs can now cast if within a PAI card
  - AIs can now cast if within an AI card
  - People within vehicles (mechas and cars) can now cast their spells

- Repulse and Knock now have unique interactions for being cast within a
locker

## Why It's Good For The Game

Carlac's PR gave me an idea for how to tackle this in a relatively clean
way so I went ahead and adapted the suggestion to something that works
for the cast chain.

This isn't perfect, some spells will need to be updated, but they can be
done piecemeal.

This is something that, IN THEORY, should have already been wholesale
supported by the spell refactor - any atom you pass into the cast chain
should "just work ™️ ", either rejecting if it fails the valid target
check or doing the spell effects as if the atom passed was the caster.

## Changelog

🆑 Melbert
add: PAIs can now cast wizard spells should they have any. 
add: AIs located in intellicards can now cast wizard spells should they
have any.
add: Some spells, such as AoE or conjure spells, are now castable from
within Mechas or Clown Cars. To varying degrees of success.
add: Knock will now unlock and open closets you are hiding within. 
add: Repulse will now throw open closets you are hiding within.
/🆑
2023-08-08 12:26:06 +01:00
Ben10Omintrix
444f1b5bc0 make the hive bot a basic bot (#77274)
## About The Pull Request
i make the hivebot a basic bot also the old hivebot simple bot he was
chaneged apperence when he finded a target so i maked a new element to
allowed this behavier so now when the basic finded a target he apperence
can also changed and this elememt can be gived to another basic monsters
so they can changed apperence when they found a target. i give him new
behaviers now the hivebot will look for ech other and when he finded ech
other they will comunicated with binyary messages and now the mechanic
hivebot he will go to look for broked machines so he can repair him

## Why It's Good For The Game
the hivebot is a basic and he have a better behaver 

## Changelog
🆑
refactor: the hivebot is now a basic please report any bugs
/🆑

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-08-08 11:42:37 +01:00