Commit Graph

8142 Commits

Author SHA1 Message Date
SkyratBot
2c6fc5c946 [MIRROR] Fixes prosthetic limbs leaving the old one behind [MDB IGNORE] (#20987)
* Fixes prosthetic limbs leaving the old one behind (#75176)

## About The Pull Request

Fixes #75153
Caused by #75050

`Note: the old limb gets sent to nullspace during try_attach_limb`
...This assertion is completely wrong, and I'm not sure where it came
from. Perhaps it's different on their downstream.

`try_attach_limb` does not care about limbs that occupy the same body
zone and will happy attach itself, giving you two left arms or two right
legs.

`del_and_replace_bodypart` handles this by deleting the existing limb,
`return_and_replace_bodypart` did not handle this whatsoever. So I added
that missing handling.

I'm not sure if we *actually want* `try_attach_limb` to disregard limbs
that occupy that slot already. It seems like weird behavior but also
consumers should probably know what they're doing in regards to that?

While I was here, I made both prosthetic related quirks use `special =
TRUE`. The application of these limbs are supposed to be quick swapping
no-side-effects, since it's done at mob creation, so it should be using
special.

## Why It's Good For The Game

Three arms is bad, okay?

## Changelog

🆑 Melbert
fix: Fixed Prosthetic Quirk not removing the limb before giving the
prosthetic
/🆑

* Fixes prosthetic limbs leaving the old one behind

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-05-08 03:03:07 +01:00
SkyratBot
f1fef9b0c3 [MIRROR] Demotes Psyker Pirates to Bounty Hunter Duty [MDB IGNORE] (#20951)
* Demotes Psyker Pirates to Bounty Hunter Duty (#75031)

This PR demotes the Psyker-gang from a pirate team to a fugitive hunting
team. For more information on Psyker pirates, please refer to #71650.

Stuff this also does in the process:
- Gives fugitive hunters their own subfolder in the fugitives antagonist
folder, moves some of their stuff into hunter-specific files rather than
interlacing it with the rest of the fugitive code.
- Moves the hunter backstories to defines, to make reading things easier
while I made this change.
- Exhaustively moves everything related to psykers from being
pirate-oriented to hunter-oriented (typepaths, locations where stuff is
defined, etc. There should be nothing left behind related to psykers in
anything pirate related). (Tell me if I missed anything somehow).

They still get their ship (they even get their own custom
psyker-friendly prisoner capsule). They still have a bunch of lethally
chambered firearms. They're the same gunrunning nutcases they were
before, just as bounty hunters.

To assist with basic tasks such as "getting to the station" or "figuring
out who the fuck we're supposed to be kidnapping", the psykers have
"acquired" a Seer to assist them. They can _try_ to coordinate the
psykers and lead them through situations where their impairments put
them at too great a disadvantage. If you're one of the psykers, make
sure to keep this guy alive at all costs!

Why are they called Shikaris instead of hunters? Mariam-Webster says
it's a Hindi word for some kind of hunter/tracker, and it sounded like
something a bunch of space-junkies would call themselves because they
think it sounds cool.

They now also come with a slightly different motivation, now that they
can't directly threaten the crew for money. Psyker hunters now arrive
tasked with a dirty kidnapping job, payment rendered in GORE.
## Why It's Good For The Game

Psykers aren't up to the challenge of being pirates. They're bogged down
by a number of fundamental issues that render them unable to do anything
expected of pirates. As it currently stands, they present about as much
threat as you would expect from three blind junkies with guns.

Removing them wholesale would be kind of lame. They can function as a
bunch of chaotic-neutral gun-toting space-maniacs, but for the purposes
of gameplay, keeping them as pirates would be a waste of their talents.

Moving them to a lower-stakes role not only moves them to a niche they
are more capable of filling, but gives players a more lax environment to
get a grip on playing psyker without being overwhelmed.

Giving them a seeing-eye role should bring a more unique dynamic to how
psykers are played (that is, some semblance of organization rather than
blind flailing), and should help get over the mechanical hurdles of
being a psyker until better solutions can be made. It shouldn't be too
big of an impact on balance considering the psyker gang only has three
spawns, while most hunter packs have 4+.

* Demotes Psyker Pirates to Bounty Hunter Duty

---------

Co-authored-by: Rhials <Datguy33456@gmail.com>
2023-05-06 17:34:31 +01:00
SkyratBot
87b52979cc [MIRROR] Tonguespike buff, chemspike slight nerf [MDB IGNORE] (#20950)
* Tonguespike buff, chemspike slight nerf (#75092)

Increases the tonguespike damage.
impact damage: 15 -> 25
pain damage (leaving tonguespike embedded damage): 4 -> 15
cooldown time = 10 seconds -> 1 seconds

Decreases the chemspike damage
impact damage: 4? -> 2
pain damage: 4 -> 0

These values were eyeballed when I originally added them, fuck embedding
code, uuuh... these values make more sense. At the very least
tonguespike was nearly unusuable being a 15 damage item that pain-ticked
for a pitiful 4.
The cooldown was just unnecessary and killed unnecessary organ
regeneration strategies

Chemspike ticked for too much when it wasn't really meant to deal much
damage.

* Tonguespike buff, chemspike slight nerf

---------

Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
2023-05-06 17:33:59 +01:00
SkyratBot
b672fd0791 [MIRROR] Miners with style meter can now parry kisses [MDB IGNORE] (#20935)
* Miners with style meter can now parry kisses (#75148)

## About The Pull Request
idea by hometownfunky
## Why It's Good For The Game
True gamers don't get hit
## Changelog
🆑
add: miners with style meter can now parry kisses
/🆑

* Miners with style meter can now parry kisses

---------

Co-authored-by: Striders13 <53361823+Striders13@users.noreply.github.com>
2023-05-06 02:30:59 +01:00
SkyratBot
de094300d2 [MIRROR] Alphabetises Phobias [MDB IGNORE] (#20934)
* Alphabetises Phobias (#75150)

## About The Pull Request

Alphabetises some lists, json, and type paths related to phobias

## Why It's Good For The Game

It's neat and tidy

## Changelog
Not player facing

* Alphabetises Phobias

---------

Co-authored-by: Thunder12345 <Thunder12345@users.noreply.github.com>
2023-05-06 02:30:38 +01:00
SkyratBot
c4d4e1da63 [MIRROR] Minerals have been refactored so costs and minerals in items are now in terms of mineral defines. [MDB IGNORE] (#20916)
* Minerals have been refactored so costs and minerals in items are now in terms of mineral defines.

* AI GEN RUN ONE

---------

Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-05-03 22:48:10 +01:00
SkyratBot
39ebf7c2af [MIRROR] Nanotrasen Budget Programme - Mothball Edition [BIRDSHOT STATION] [MDB IGNORE] (#20832)
* Nanotrasen Budget Programme - Mothball Edition [BIRDSHOT STATION] (#73502)

## About The Pull Request
---

The Space Tram is currently spaced. This is a known issue with not the
map, but Trams in general. The Space Tram is a Space Tram to encourage a
fix. Until then, the Space Tram is a maint tram that's an actual hazard
but cannot directly kill anyone, including lizards. Enjoy the commodity
as you zip from secmaint to medmaint.
-------------------------------------------------------

I... really don't know if I should be proud of myself here. This whole
process has been akin to a fever dream and it has only been little over
a month since I first created the .dmm for this. What started as a
simple yet humble reimagining of Birdboat has turned into an entirely
new station, and blown past Metastation sized proportions. This has been
my most expansive project yet, and somehow it's also been my quickest.
So without further ado, I unveil Birdshot - Successor to Birdoat.

-------------------------------------------------------

**Due to recent cost expenditures on Icemoon projects, and a growing
need for orbital research stations, Nanotrasen has decided to pull
Birdboat Station out of mothball after nearly 5 years of abandonment.**

Since then, the station has seen a variety of changes at the hands of
the various vagabond lawless scum and villains that have decided to make
the abandoned station their home. Do not fret though, a Nanotrasen
Operation has secured the companies rightful property for corporate use
once again, though you'll need to be the stewards of the remaining
cleanup operation.

------------------------------------------------------

Now, as you might have guessed by now, Birdshot is heavily based on
Birdboat station. Many of the decisions here follow the original layout,
and what had to be modified or moved still tries its best to replicate
and imitate what bird being said. At least, that was the idea initially.
This has very much grown into its own beast and as such, while the main
inspiration has been Birdboat, there are a lot of new ideas thrown into
the mix that really give this station its own unique and deserving
identity. Maybe it's not perfect, but I've been inspired by @ MMMiracles
own performance with Tramstation to keep working on Birdshot and
updating it with better and improved faculties. For now, though the
station is in a playable state, and that means I'm making a PR. If I had
to borrow the words of the good MMM, I would call this **Birdshot:
Season 0**

![BirdSHOTFULL2-26-S](https://user-images.githubusercontent.com/33048583/221432760-27af1889-d2d0-4861-9435-df4258525fae.png)

See the image in more detail here: https://imgur.com/iT5Vi8k

## Why It's Good For The Game

We've been with the same 5 maps for a while now. @ san7890 jokingly said
that I could sacrifice Metastation back in November if I remade Birdboat
but modern. Obviously that wasn't going to happen, yet I was spurred on
by the idea. When I began this in earnest early this January, @ EOBGames
said that a Birdboat sized map would replace Kilostation in the
rotation. Interestingly we're not a small map anymore so I honestly have
no clue where this goes. Maybe that ephemeral 6th map slot that's been
rumored.

What I can say, is that Birdshot is wholly unlike anything else that is
currently in rotation. It's got an engineering section that feels way
too small for a station of that size, almost evocative of Cere. Cargo is
blessed with a Boutique that makes use of @ Fikou's new mannequin dolls.
Command is outfitted with a Corporate Guest Suite, and Officials sent
from Nanotrasen can embark from their ferry into the safety of their own
Corporate Dock. Elements of Cerestation are present, yet not in a way
that makes traversal annoying. Furthermore we have **2 Trams** (that I
have yet to get functional but we'll get there) on Birdshot, that's
right 2. One Security Prison Tram, and then other, a Space Tram. Both
Novel in their own ways. Departments on Birdshot twist and turn, and
there's an abundance of Maintenance Tunnels to cut through everything,
for the brave and the bold that is. And there's plenty left to discover,
but I'd rather let Birdshot speak for itself. I'm proud of this one.

If you want something new, this is something that is almost the complete
opposite of Chilled Station - Explicitly Designed to send you back to
the metal death trap that is: **Space Station 13.**

## Changelog
🆑
add: Birdshot station has been pulled out of Mothball.
add: New station areas and places to visit. A Mix of Kilo and Delta
maints with winding shortcutting paths.
add: A host of new shuttles to support this bold endeavor to reclaim
something that really shouldn't be reclaimed.
add: Two Trams, Two Trams.
add: For the last time Bob, the gaping hole is a **feature.** Use the
breach shutters or have the virologist make starlight.
add: A smiling salute to stations past...
add: Secrets.

/🆑

---------

Co-authored-by: Zytolg <theoriginaldash@ gmail,com>

* Nanotrasen Budget Programme - Mothball Edition [BIRDSHOT STATION]

* basemap

* automapper templates

* Update maps.txt

* Update _basemap.dm

---------

Co-authored-by: Zytolg <33048583+Zytolg@users.noreply.github.com>
Co-authored-by: Zytolg <theoriginaldash@ gmail,com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-05-03 22:36:32 +01:00
SkyratBot
c609e00999 [MIRROR] Adds the Death Sandwich to the game [MDB IGNORE] (#20911)
* Adds the Death Sandwich to the game (#75013)

## About The Pull Request
Adds the Death Sandwich to the game, the ultimate form of
bread-conveyed-meat-based consumables.

![deathsandwich](https://user-images.githubusercontent.com/66052067/235041733-287be1fd-1eed-4d6d-840b-96f95494f093.png)

And remember;
Eat it right, or you die!
## Why It's Good For The Game
I'm genuinely surprised we don't already have a meatball sub in the game
also I love humor food, and I doubt my edition of the Eggcellent
Challenge would ever be merged if I tried to do so, so this is the next
best thing.
## Changelog
🆑 Wallem
add: The ancient recipe for the Death Sandwich has been rediscovered
buried in the deepest depths of an erupting volcano.
/🆑

* Adds the Death Sandwich to the game

---------

Co-authored-by: Wallem <66052067+Wallemations@users.noreply.github.com>
2023-05-02 23:45:47 -07:00
SkyratBot
9a3ccdd3c1 [MIRROR] Adds a macro for checking map job changes, makes captain outfit more runtime resilient [MDB IGNORE] (#20810)
* Adds a macro for checking map job changes, makes captain outfit more runtime resilient

* Fixes the merge conflicts

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2023-05-03 01:33:46 +01:00
SkyratBot
16b64484e9 [MIRROR] Ore silo will put machines off its level on hold, instead of disconnecting [MDB IGNORE] (#20859)
* Ore silo will put machines off its level on hold, instead of disconnecting (#74990)

## About The Pull Request

There's a problem where people would try to rebuild a whiteship and use
an Ore Silo for it. However, it would automatically unlink everything
when moving, because it's checking for z level as soon as it changes z
level itself, before the Ore silo has 'moved' as well.

~~To fix this, I'm now only disconnecting ore silos when a shuttle
moves. This mostly does the same as before, but technically you can sync
an unwrenchable connected machine and bring it to space with you
(without using a shuttle) to stay connected, but I don't see this as a
problem, and my original point of the PR was to prevent Lavaland ORMs.~~

I decided against this, instead I've made it so machines that aren't on
a valid level (either both on the same z level or both on the station
level) will be considered 'on-hold', much like if the QM has set it to
hold through the silo directly. This means that machines no longer
disconnect from the Ore silo on moving, they just can't access the
materials in it. This affects gameplay in 2 ways:

1. You no longer need to resync when you bring the machine back
2. It won't unsync itself every time you move station z-level with its
silo (such as on a whiteship).

I also made disconnecting from an ore silo actually remove them from the
ore silo's list of connected machines.

## Why It's Good For The Game

Closes https://github.com/tgstation/tgstation/issues/69863

## Changelog

🆑
balance: Machines (such as ORM and Techfabs) will no longer unsync from
Ore silos when it moves Z-level, instead it will prevent materials from
being used, as if it was on hold.
/🆑

* Ore silo will put machines off its level on hold, instead of disconnecting

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2023-05-02 15:50:25 -04:00
SkyratBot
82d61c476b [MIRROR] Adds a game log for enslaving [MDB IGNORE] (#20853)
* Adds a game log for enslaving (#75038)

## About The Pull Request

A mob being enslaved to another is now logged in game logs. This hits
sentience potions, guardians, and Golems. This helps admins know through
logs who made/used what.

## Why It's Good For The Game

I was told that it's pretty hard to tell who made Golems because this
type of info isn't logged, so you can't check it post-round. This should
help admins with that.

## Changelog

🆑
admin: Enslaving mobs is now logged in game.log
/🆑

* Adds a game log for enslaving

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2023-05-02 15:48:24 -04:00
SkyratBot
ef6828cf15 [MIRROR] [NO GBP] Style meter fixes [MDB IGNORE] (#20896)
* [NO GBP] Style meter fixes (#75090)

## About The Pull Request
Fixes:

- Crusher mark score applying to attacked corpses
- Parrying not working, in 2 different forms
- The style bar not being accurate with >= 600 style points

## Why It's Good For The Game
Bugs bad

## Changelog
🆑
fix: Style meter parrying works again
fix: Style meter bar now works correctly with very high style point
count
/🆑

* [NO GBP] Style meter fixes

---------

Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
2023-05-02 15:45:08 -04:00
SkyratBot
3ecc9f859d [MIRROR] Allows Export of your Preferences JSON File [MDB IGNORE] (#20894)
* Allows Export of your Preferences JSON File (#75014)

## About The Pull Request

Hey there,

This was spoken about in #70492 (specifically
https://github.com/tgstation/tgstation/pull/70492#issuecomment-1278069607),
and I have been waiting for this to be implemented for some time. It
never got implemented, so I decided to code it myself.

Basically, **if the server host doesn't disable it**, you are free to
export your JSONs as a player, right from the stat-panel. It's a pretty
JSON on 515 versions, too!

It's right here:

![image](https://user-images.githubusercontent.com/34697715/235251447-1c977718-51fd-4025-8d89-c60bffc379ec.png)

Here's what the prettified JSON looks like on 515.

![image](https://user-images.githubusercontent.com/34697715/235321061-4a217e26-c082-4bba-b54a-2c780defda0a.png)

There's a cooldown (default to 10 seconds) between exporting your
preferences.

#### Why is this config?

It's because in the past, a server host could always just file-share the
.sav or .json or whatever to the player, but they would have to do the
explicit option of actually bothering to make the files accessible to
the player. In that same line of logic, the server operator will have to
explicitly make the files accessible. This is mostly because I'm not
sure how good `ftp()` is at being a player function and wanted to have
some sort of cap/control somehow in case an exploit vector is detected
or it's just plain spammed by bots, so we'll just leave it up to the
direct providers of this data to elect if they wish to provide the data
or not.
## Why It's Good For The Game

Players don't have to log into Server A to remember what hairstyle they
loved using when they want to swap to Server B! That's amazing actually.
I always forget what ponytail my character has, and it'll be nice to
have the hairstyle in a readily accessible place (after I prettify the
JSON for myself).

It's also more convenient for server hosts to make player data like this
accessible if they really want to, too.

If we ever add an _import_ feature in the future (which would have to be
done with a LOT of care), this will also be useful. I wouldn't advise it
though having taken a precursory look at how much goes into it while
trying to ascertain the scope of this PR.
## Changelog
🆑
qol: The game now supports export of your preferences into a JSON file!
The verb (export-preferences) should now be available in the OOC tab of
your stat-panel if enabled by server operators.
server: Exporting player preferences is controlled by a configuration
option, 'FORBID_PREFERENCES_EXPORT'. If you do not wish to let clients
access the ftp() function to their own preferences file (probably for
bandwidth reasons?) you should uncomment this or add it to your config
somehow.
config: Server operators are also able to set the cooldown between
requests to download the JSON Preferences file via the
'SECONDS_COOLDOWN_FOR_PREFERENCES_EXPORT' config option.
/🆑

* Allows Export of your Preferences JSON File

---------

Co-authored-by: san7890 <the@san7890.com>
2023-05-02 15:27:19 -04:00
SkyratBot
96676cc94e [MIRROR] Gunpoints now take half a second to activate, make gasp sounds, and briefly immobilize the shooter and target, other small balance changes [MDB IGNORE] (#20882)
* Gunpoints now take half a second to activate, make gasp sounds, and briefly immobilize the shooter and target, other small balance changes (#74036)

## About The Pull Request
This PR messes around with gunpoints a bit, with the purpose of making
them more viable in certain scenarios without making them obnoxious. The
biggest change is that gunpoints now require a 0.5 second do_after()
where neither the shooter nor the target moves, and immobilizes both of
them for 0.75 seconds if point blank, or half that if you're 2 tiles
away. Originally you were supposed to only be able to initiate a
gunpoint from point-blank, but #56601 seems to have removed that
requirement, so we'll run with it and just leave it as advantageous to
gunpoint closer up. The do_after() reinforces that it should be used as
an ambush tactic, and so you can't use it on someone who's actively
fleeing or fighting you.

Getting held up will now make you emit a shocked gasp sound, a la Metal
Gear Solid, which combined with the short immobilize will hopefully make
it more noticeable that someone's pointing a gun at you.

Holdups will now immediately give a 25% bonus to damage and wounds,
instead of having to wait 2.5 seconds to hit the double damage stage.

Finally, right clicking someone that you're holding up will no longer
shoot them. That just feels like good consistency.

## Why It's Good For The Game
Hopefully makes gunpoints a little more viable for when you want to
stick someone who's not expecting it up without them immediately jetting
off. In the future I'd like to ape Baycode and let the gunman have an
action that toggles whether the victim is allowed to move, so you can
order them to move to a second location without instantly shooting them,
but that'll come later.
## Changelog
🆑 Ryll/Shaps
balance: Holding someone at gunpoint now requires both the shooter and
the victim to hold still for half a second before activating, so you
can't hold-up people fleeing or fighting you. After that, it will
briefly immobilize the both of you, 0.75 seconds if adjacent, or half
that if you're two tiles away. Nuke ops are immune to the
immobilization, since they're ready to die anyways.
balance: Holding someone up will immediately apply a 1.25x damage and
wound multiplier, rather than waiting 2.5 seconds to hit 2x.
soundadd: Being held up will now make the victim play a sharp gasp
sound, a la Metal Gear Solid.
qol: Trying to hold someone up that you're already holding up will no
longer shoot them.
/🆑

---------

Co-authored-by: san7890 <the@ san7890.com>

* Gunpoints now take half a second to activate, make gasp sounds, and briefly immobilize the shooter and target, other small balance changes

---------

Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
2023-05-02 12:32:43 +01:00
SkyratBot
726fa67fc8 [MIRROR] Removes the random prosthetic quirk from the character preview page [MDB IGNORE] (#20886)
* Removes the random prosthetic quirk from the character preview page (#75050)

## About The Pull Request

The prosthetic limb quirk chooses a random limb to make prosthetic at
roundstart.

It was extremely buggy with the way quirks are displayed and the way the
dummy preview works and would frequently carry over to other characters
and not update correctly.

<details>
<summary>Eventually you end up getting this if you switch enough times
</summary>

![hDq983y2T0](https://user-images.githubusercontent.com/13398309/235334283-d4fc4c1f-c1de-4460-b6f7-7ef95a587cb4.gif)

</details>

I started fixing the issue when I realized this really shouldn't be
shown on the dummy to begin with, because what you see on the dummy will
not necessarily be what you get at roundstart. It's misleading.

I did however leave part of the fix that I was working on, because I
think it is useful to be able to undo the quirk via adminnery.

Closes https://github.com/Skyrat-SS13/Skyrat-tg/issues/20791

## Why It's Good For The Game
## Changelog
🆑
fix: prosthetic limb quirk will no longer display a prosthetic on your
character preview because it is buggy and hardly ever matches what you
end up getting upon spawning
code: removing the prosthetic limb quirk will restore your original limb
/🆑

* Removes the random prosthetic quirk from the character preview page

---------

Co-authored-by: Bloop <vinylspiders@gmail.com>
2023-05-02 12:30:26 +01:00
Hatterhat
f203dec6a2 [does commenting count as modular] style meter users can now flip (#20861)
* hey the projectile parry runtimes btw

* comments (mildly improved)

---------

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
2023-05-01 13:28:33 -07:00
SkyratBot
7028b1d32e [MIRROR] Converts Spiderlings from Structures to Basic Mobs [MDB IGNORE] (#20852)
* Converts Spiderlings from Structures to Basic Mobs (#75001)

If I could've made this more atomic, I would have in a heartbeat, trust
me.

## About The Pull Request

Hey there. People were mocking us for having spiderlings still be a
subtype of `/obj/structure`. I decided to take a lot of time to fix
that. A lot of behavior it was implementing was just pseudo-mob stuff,
so it was actually easier than it looked for the raw conversion. A lot
of the footwork on spider stuff in the basic framework was already done
previously by Jacquerel, so that was pretty nice.

However, there are two new things that weren't introduced in the code
that had to be put in.

A) A component to handle growth and differentiation into a mob. This may
have already existed, no clue. If it does (and it's NOT
evolutionary_leap), let me know.
B) AI Behavior to handle seeking out a vent, entering a vent, and then
exiting out of a different vent. I may have gone a bit wacky on the
code, but it certainly works as expected (spiderling goes in one vent,
exits the other). Let me know if you can think of a way it can be better
optimized, but it was deliberately written to be very failsafey in case
shit goes yonkers.

One fundamental difference between structure spiderlings and basic mob
spiderlings (beyond the AI and not just a random prob() check for
movement) is the fact that they had vent movement coded in... but we
_really_ don't need stuff like that for our intents and purposes. If the
range turns out to be too OP in the current framework, we can always
change it up a bit, but also there's a _lot_ of vents we can end up in
the station (my testing had one spiderling end up in the AI sat to get
obliterated).
## Why It's Good For The Game

Spiderlings aren't structures! They behave like a mob should! Players
can possess spiderlings! They work seamlessly with differentiating into
a giant spider! Better AI! More room for people to add into this very
under-utilized buggers!
## Changelog
🆑
refactor: Spiderlings are now basic mobs, report any complete
weirdness/deviation from known behavior. They should be a lot more
intelligent now though.
add: AI Spiderlings are super fragile, but they're also super fast,
especially when they get into a vent. Once they're in circulation, they
could end up everywhere! Maybe in the armory, maybe in a locked closet
in maintenance. Be sure to be vigilant and splat them whenever you can
to save the station from a whole lotta heartache!
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>

* Converts Spiderlings from Structures to Basic Mobs

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
2023-04-30 12:54:58 -07:00
SkyratBot
8817f86841 [MIRROR] Delete blank line from the combat information box [MDB IGNORE] (#20845)
* Delete blank line from the combat information box (#75025)

## About The Pull Request

I asked eobgames to do it in #74203 but he didnt and i forgot to do it
until now
## Why It's Good For The Game

Since there's a box around it now, we don't need a blank line to
separate it anymore

Old:

![image](https://user-images.githubusercontent.com/47338680/235238660-951de8f1-ecc6-4466-b130-450f76cc4e40.png)

New:

![image](https://user-images.githubusercontent.com/47338680/235237497-9d2d05b3-70eb-4d05-8b07-8f518076e928.png)
## Changelog
🆑
spellcheck: Deleted the extra line in combat information
/🆑

* Delete blank line from the combat information box

---------

Co-authored-by: BlueMemesauce <47338680+BlueMemesauce@users.noreply.github.com>
2023-04-30 10:58:07 +01:00
SkyratBot
05e8371998 [MIRROR] Cleans up + Improves bows, Sorts files, Adds the Divine Archer clothing, weapon, rite [MDB IGNORE] (#20825)
* Cleans up + Improves bows, Sorts files, Adds the Divine Archer clothing, weapon, rite

* fix

---------

Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: ghost sheep <sheepwiththemask@gmail.com>
2023-04-29 15:29:35 -07:00
SkyratBot
102748fc27 [MIRROR] Cosmic Ascension Balance Patch [MDB IGNORE] (#20808)
* Cosmic Ascension Balance Patch

* conflict

---------

Co-authored-by: Comxy <tijntensen@gmail.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
2023-04-29 09:59:15 +01:00
SkyratBot
d9f3476b8d [MIRROR] Craftable material sniffers [MDB IGNORE] (#20824)
* Craftable material sniffers (#74798)

## About The Pull Request

Are YOU annoyed about never finding the fucking mats you need? Slap some
cable coil on an analyzer and find that untouched sheet of iron and or
glass. It's a pinpointer for basic sheets.

## Why It's Good For The Game

Originally I meant to give this as something borgs might want, but I
realized they really won't have a great time using it and the situation
is more about botanists not being asked, and not knowing how to grow
lots of iron, repeat for all other departments. Awareness problems!!!

But I still like the item as a miscellaneous craftable.

## Changelog
🆑
add: Craftable Material sniffers
/🆑

---------

Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>

* Craftable material sniffers

---------

Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
2023-04-29 09:56:13 +01:00
SkyratBot
9c2e07ee7c [MIRROR] Miner Style Points 2: Style on Everyone [MDB IGNORE] (#20826)
* Miner Style Points 2: Style on Everyone (#74690)

## About The Pull Request
A re-open of https://github.com/tgstation/tgstation/pull/66326 with
Fikou's permission

Adds the style meter, it can be bought from the mining vendor for 1500
points, it is an attachment to your glasses.
The style meter creates a display on your hud, with your recent actions,
like attacking enemies, killing them, mining ore etc. Actions like
spinning or flipping increase your score multiplier, making you get more
points.
Your style meter affects how much ore you get from mining rocks. By
default with the meter, you get 20% less ore, but at the highest, you
can get 1.2x the ore from mining. In addition, on B-tier or above, you
can "hotswap" items, by attacking an item in your backpack with one in
your hand (should it fit and all that). Also features a leaderboard for
highest style point count!

New streamable: https://streamable.com/eewi6l

The following are sources of points:

- Killing things
- Killing big things
- Killing small things
- Punching things
- Melee'ing things
- Mining rocks and ores
- Having matrix traps detonate
- Hit, defuse, and detonate gibtonite
- Detonate crusher marks
- Scan geysers
- Parry projectiles (others or your own)

Oh, right. While wearing the style meter, you're able to parry any
lavaland-based projectile by clicking on it or the tile it is on, which
reflects it back in a 7 degree arc, making it 20% faster and 15% more
damaging. Usually not very easy.

Maybe-plan in the future for some syndicate variant of this (with bullet
parrying and appropriate style sources, etc.), but not for this PR

Thanks to Arcane, multitooling the style meter will make it play some
sounds on rank-up.

![image](https://user-images.githubusercontent.com/41448081/231605640-a01c2b60-1ba1-4390-8bea-0aa804ea1973.png)

https://streamable.com/nheaky

Parrying in action

## Why It's Good For The Game
Makes miners bring more ore in a fun way.

## Changelog
🆑 Fikou, Zonespace, Arcane for voicing
add: The mining vendor now has a style meter. This meter gauges your
style points and uses them to improve your ore yield.
/🆑

---------

Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>

* Miner Style Points 2: Style on Everyone

---------

Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
2023-04-28 19:54:39 -07:00
SkyratBot
49b803a98a [MIRROR] Fixes crafting tools not taking into account subtypes [MDB IGNORE] (#20807)
* Fixes crafting tools not taking into account subtypes (#74971)

## About The Pull Request
Does what #74968 intended to do, it fixes crafting tools checking if the
required item is a subtype of the available items, instead of the other
way around. What this meant is for example

![image](https://user-images.githubusercontent.com/23585223/234320690-aa0b2c2d-a8c6-447b-be32-3554fa8310c8.png)
this wouldnt work, even though cheap lighters are a subtype of lighters,
as /obj/item/lighter/greyscale
but if i instead spawned the base /obj/item, which /obj/item/lighter is
a subtype of

![image](https://user-images.githubusercontent.com/23585223/234320959-bd388520-7d2b-4028-abab-a7638ba4adda.png)
it would work. obviously this is funnily broken

## Why It's Good For The Game
Bug gone!

## Changelog
🆑
fix: Fixes crafting tools not taking into account subtypes, i.e. you can
craft a filet migrawr with any lighter.
/🆑

* Fixes crafting tools not taking into account subtypes

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-04-28 23:17:20 +01:00
SkyratBot
5289ed0785 [MIRROR] Add basketball mood events for shooting and dunking [MDB IGNORE] (#20784)
* Add basketball mood events for shooting and dunking

* Update code/datums/mood_events/generic_positive_events.dm

---------

Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2023-04-26 22:47:23 +01:00
SkyratBot
abf148d62b [MIRROR] World Initialization Refactor [MDB IGNORE] (#20755)
* World Initialization Refactor

* Update .github/CODEOWNERS

* Update code/__HELPERS/global_lists.dm

* Add logging for manually changing your targeted zone (#72814)

See title.
Surgery hud is exempt from this.

Requested by @Mothblocks

Signed-off-by: GitHub <noreply@github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: dragomagol <66640614+dragomagol@users.noreply.github.com>

* eee

* Update tgstation.dme

---------

Signed-off-by: GitHub <noreply@github.com>
Co-authored-by: Jordan Dominion <Cyberboss@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: dragomagol <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-04-26 22:46:55 +01:00
SkyratBot
2a206070cc [MIRROR] Adds a prisoner transport space ruin [MDB IGNORE] (#20771)
* Adds a prisoner transport space ruin (#74418)

* Adds a prisoner transport space ruin

---------

Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
2023-04-26 21:23:58 +01:00
SkyratBot
e6f66d3a4a [MIRROR] Experiment with replacing weakrefs in AI blackboard with deleting signals, ideally making it easier to work with and harder to cause hard deletes [MDB IGNORE] (#20719)
* Experiment with replacing weakrefs in AI blackboard with deleting signals, ideally making it easier to work with and harder to cause hard deletes (#74791)

## About The Pull Request

Replaces weakref usage in AI blackboards with deleting signals

All blackboard var setting must go through setters rather than directly

## Why It's Good For The Game

This both makes it a ton easier to develop AI for, and also makes it
harder for hard deletes to sneak in, as has been seen with recent 515
prs showing hard deletes in AI blackboards

(To quantify "making it easier to develop AI", I found multiple bugs in
existing AI code due to the usage of weakrefs.)

I'm looking for `@ Jacquerel` `@ tralezab` 's opinions on the matter, also
maybe `@ LemonInTheDark` if they're interested

## Changelog

🆑 Melbert
refactor: Mob ai refactored once again
/🆑

* Experiment with replacing weakrefs in AI blackboard with deleting signals, ideally making it easier to work with and harder to cause hard deletes

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-04-26 21:17:15 +01:00
Tom
6435018ba7 Add logging for manually changing your targeted zone (#72814) (#20787)
* Add logging for manually changing your targeted zone (#72814)

See title.
Surgery hud is exempt from this.

Requested by @Mothblocks

Signed-off-by: GitHub <noreply@github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: dragomagol <66640614+dragomagol@users.noreply.github.com>

* Delete 

---------

Signed-off-by: GitHub <noreply@github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: dragomagol <66640614+dragomagol@users.noreply.github.com>
2023-04-26 10:44:01 -07:00
SkyratBot
2293301235 [MIRROR] Burning and acid components fixes and improvements [MDB IGNORE] (#20731)
* Burning and acid components fixes and improvements

* conflicts

---------

Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-04-25 20:02:05 -07:00
SkyratBot
fc1c3d4bea [MIRROR] Mafia notes are no longer automatically written for you & new UI [MDB IGNORE] (#20765)
* Mafia notes are no longer automatically written for you & new UI (#74819)

## About The Pull Request

Notes in Mafia are no longer written for you, you instead write it
yourself and save.
Also adds a button to automatically say out your notes for other
players.

Hides the judgment buttons when it's not time to judge
Makes the UI autoupdate and makes use of ui_data / ui_static_data

Video of it in action: https://www.youtube.com/watch?v=NDUSuIUqQv8

## Why It's Good For The Game

A downside to notes currently is that it's very easy to confirm yourself
as a role against players who don't code-dive to know exactly how notes
should be formatted for any role, this makes it easier, as everyone will
type out their own notes, and can send it directly to chat when needed.

## Changelog

🆑
balance: [Mafia] Notes are no longer written out for you.
qol: [Mafia] You can now send your notes to chat whenever.
qol: [Mafia] Roundend has changed. Solos will win over others in a 1v1,
but a HoP can keep a round going in case they can solo lynch.
/🆑

* Mafia notes are no longer automatically written for you & new UI

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2023-04-25 18:43:11 +01:00
SkyratBot
81d99e727f [MIRROR] Adds a phonebooth ruin to icebox, space, and lavaland [MDB IGNORE] (#20754)
Adds a phonebooth ruin to icebox, space, and lavaland

Co-authored-by: rageguy505 <54517726+rageguy505@users.noreply.github.com>
2023-04-25 17:41:50 +01:00
SkyratBot
60b7a685ea [MIRROR] Fixes spawners being forcemoved during crafting [MDB IGNORE] (#20758)
* Fixes spawners being forcemoved during crafting (#74946)

## About The Pull Request

Lizard skin boots create a spawner as their crafting result. The spawner
works fine and creates the boots, but then then the crafting system
moves the spawner into the world after it has been marked for deletion.
So you end up with both the boots and the spawner, with the spawner
covering up the boots and being non-interactive.

![dreamseeker_0l714SdfxT](https://user-images.githubusercontent.com/13398309/233877092-98831311-3b3d-4df8-ae74-788470ed4f55.png)

This PR just adds a check for spawners to ensure that doesn't happen.

Closes https://github.com/Skyrat-SS13/Skyrat-tg/issues/20728

## Why It's Good For The Game

Fixes some jank. It's a pain to craft these, so having this be the
payoff is disappointing.

## Changelog
🆑
fix: crafting lizard skin cowboy boots no longer places a spawner object
over the created boot item
/🆑

* Fixes spawners being forcemoved during crafting

---------

Co-authored-by: Bloop <vinylspiders@gmail.com>
2023-04-25 17:41:03 +01:00
SkyratBot
5322e96e69 [MIRROR] Minor Major Space Dust update, Dust Stormfront station trait [MDB IGNORE] (#20736)
* Minor Major Space Dust update, Dust Stormfront station trait (#74901)

## About The Pull Request

This makes three changes regarding the Major Space Dust event.

The first reverts it back to a meteor_wave subtype (rather than a
space_dust subtype), a choice I made in #69866 that feels really stupid
in retrospect.

The second set of changes pertain to the event's numbers. It increases
the weight (8 -> 14) and reduces the earliest_start time (25 MINUTES ->
15 MINUTES). The announce_chance has been reduced (100 -> 85), and there
are a few more announcement messages in the pool.

Lastly, this adds a quick random_event_weight_modifier station trait
that makes the Major Space Dust more common. Let's hope it doesn't
scratch the hull!

This also removes an outdated comment from the revolutionary fervor
station trait, because I was near it.
## Why It's Good For The Game

It's way more sane to handle this event as a meteor_wave. It walks and
talks like a meteor wave, why shouldn't it be one?

Major Space Dust works as a nice fluff event. It's low-impact and might
give engineering something to fix every now and then. It's not
particularly special either, so I don't think it would hurt to make the
event bit more frequent.

New station trait for people (presumably engineering players) to work
around.
## Changelog
🆑 Rhials
add: New event weight station trait -- Dust Stormfront.
balance: Space Weather Forecast -- Expect more frequent Major Space Dust
storms in the foreseeable future.
code: The Major Space Dust event is once again returned to being a
meteor_wave event instead of a Space Dust subtype.
/🆑

* Minor Major Space Dust update, Dust Stormfront station trait

---------

Co-authored-by: Rhials <Datguy33456@gmail.com>
2023-04-24 23:39:23 +01:00
SkyratBot
33961776ce [MIRROR] Wintercoats can now be zipped and unzipped through alt-click and separates the hood sprites from the jacket sprites [MDB IGNORE] (#20718)
* Wintercoats can now be zipped and unzipped through alt-click and separates the hood sprites from the jacket sprites (#74886)

## About The Pull Request
The title says it all, really.

~~Initially, I was only going to do it for all wintercoats, but then I
figured I might as well bring it down to all of `/hooded`, just so other
suits could benefit from it, since that behavior came from there anyway.
Does that mean that it does nothing for some of them? Yes, it does. Does
that justify having another variable to tell whether or not that should
be possible? In my humble opinion, not really, but I'm not against it if
it's requested.~~

~~That functionality was intentionally removed from the Void Cloak, as
there would be balance implications (since bringing up the hood makes
the whole cloak invisible, which you could skirt by just "zipping" it,
which also makes it invisible.~~

~~The sprites were already there, so this change was very simple to do.
Simply unties the zipped up look from the fact that the hood is up.
However, toggling the hood forces the zipping/unzipping, just so there's
no balance implications involved. It's just simpler that way.~~

So, I ended up going back and changing the sprites so that the hoods
would no longer be baked into the jacket's sprites, so that they could
be done as overlays instead, which ended up solving my problem with
hoods not being there on zipped-up versions.

For now, it's been made on winter coats only, but it shouldn't be that
difficult to bring it back down to the `/hooded` level. I just didn't
want to bother touching up the sprites down there, as it already took me
like 2-3 hours touching up the sprites of the winter coats alone.

I also took the decision to make it so EVA winter coats used the regular
winter coat's sprites, because they had special ones that just looked
like worse versions of the original, without anything special going on
for them. It was just a straight downgrade compared to the base sprite,
in my opinion.

There's still issues with the custom winter coat, in that the hood isn't
made into an overlay for it yet (and that'll require an extra bit of
logic to make it work, too), but it was already an issue before, the
hood is always present on the current version of the custom winter coat.

There's still a handful (sadly, most) of the winter coats that don't
properly reflect on their obj sprites when they're opened versus when
they're closed, but that's due to an initial spriter oversight, and not
to my doing. The open versions were just left as closed on many of them,
and I simply don't have the patience nor the appropriate skills to edit
that many coats that way.

## Why It's Good For The Game
Now you can be stylish with or without the hoodie!

![image](https://user-images.githubusercontent.com/58045821/233544697-cc821c3a-d965-4d96-af44-c44ff866496f.png)

![image](https://user-images.githubusercontent.com/58045821/233544711-da956b6b-44c4-4903-a34f-4d2890abc781.png)

![image](https://user-images.githubusercontent.com/58045821/233544717-b5221b04-0e6d-4931-83d0-d56fdac60ec3.png)

According to ChatGPT, with one small tweak (thanks Opera GX for the
suggestion):

> Zipped and unzipped through alt-click, winter coats can now be. Hmm,
stylishly warm, you shall be. Feel like a Spaceman, you will. Use the
Force, to zip and unzip, you must. Look cool, you will. Yes, hmmm.

## Changelog

🆑 GoldenAlpharex, ChatGPT for the first changelog entry (slightly
edited)
qol: Zipped and unzipped through alt-click, winter coats can now be.
Hmm, stylishly warm, you shall be. Feel like a Spaceman, you will. Use
the Force, to zip and unzip, you must. Look cool, you will. Yes, hmmm.
image: Winter coats no longer have their hood baked into their jacket's
sprite, both in item form and when worn.
fix: Updated the Icebox EVA winter coats (the Endotherm winter coats) to
use the same sprites as the regular winter coats.
/🆑

---------

Co-authored-by: san7890 <the@ san7890.com>

* Wintercoats can now be zipped and unzipped through alt-click and separates the hood sprites from the jacket sprites

* update modular wintercoat.dmi

* forgot

---------

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
Co-authored-by: ghost sheep <sheepwiththemask@gmail.com>
2023-04-24 17:20:33 +02:00
SkyratBot
fd79c7c9d5 [MIRROR] Makes ruin budget proportional to amount of space ruin z-levels [MDB IGNORE] (#20725)
* Makes ruin budget proportional to amount of space ruin z-levels (#74841)

## About The Pull Request
Adds global define for DEFAULT_SPACE_RUIN_LEVELS and
DEFAULT_SPACE_EMPTY_LEVELS

### Proportional budget
Adds proportional budget to setup_ruins
The budget is multiplied by the current amount of ruin levels over the
default amount
Smaller amounts will have less ruins, while bigger maps will have more
ruins
Should maintain the same amount of ruins per z-level

### Z-levels spawning fix
Z-levels didn't seem to spawn their intended amount of ruins
This was because the for loop added the count variable before doing the
spawning. So for example if there was only 1 level, it would count to 1
and end the loop without spawning the level.
Also removed a loop that seemed to just make the process more complex
for no reason. It even had a note to remove it. However, if it has a use
then you should tell me.

## Why It's Good For The Game

Maps with a smaller amount of ruin levels won't be completely filled
The amount of ruins will be consistent per z-level
The creator of North Star won't allow space exploration unless there's a
way to proportionally reduce the space budget see #74719
## Changelog
🆑
fix: Maps now spawn the correct amount of space levels. The bug caused
them to spawn 1 less in each category
code: The space ruins budget is now proportional to the amount of ruin
levels. This has no effect on the current default maps, but added maps
with less than the default amount of ruin levels will see less ruins.
/🆑

* Makes ruin budget proportional to amount of space ruin z-levels

---------

Co-authored-by: BlueMemesauce <47338680+BlueMemesauce@users.noreply.github.com>
2023-04-23 21:48:37 -04:00
SkyratBot
28e53c240e [MIRROR] Tcomms Soundloop Comes From One Source And Is Less Awful [MDB IGNORE] (#20713)
* Tcomms Soundloop Comes From One Source And Is Less Awful (#74908)

## About The Pull Request

The ``soundloop/server`` now only comes from the server hub, so it
doesn't have stacking audio sources. The sound has been made more
uniform when up close, but is overall quieter. Additionally, all the
files have been run through a low pass filter to remove the highest of
it's pitches.
## Why It's Good For The Game

I'm sick of not wanting to be around telecomms because of how bad every
single machine sounds. Now, things are significantly easier on the ear,
quieter, more uniform, and better for everyone's sanity. I asked the
maintainers in the coding channel if I could just remove it and they
said no.

I can't get a video recording, I've tried with win+G, OBS, and sharex
and it's just fucked.
## Changelog
🆑
qol: telecomms is quieter and less ear-damaging.
sound: modified tcomms sound to remove high-tones.
fix: the telecomms sound only comes from the server hub machine.
/🆑

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>

* Tcomms Soundloop Comes From One Source And Is Less Awful

---------

Co-authored-by: Cheshify <73589390+Cheshify@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
2023-04-23 16:56:27 -04:00
SkyratBot
8164175aa2 [MIRROR] Turns Deer into Basic Mob - They Freeze At The Sight of Vehicles [MDB IGNORE] (#20711)
* Turns Deer into Basic Mob - They Freeze At The Sight of Vehicles (#74784)

## About The Pull Request

deers only show up in the BEPIS but i decided that they would be easy
enough to turn into a basic mob (they were). it was so easy in fact that
i decided to dip my toes into coding AI behavior, and made them freeze
up whenever they see a vehicle. this required a lot of code in a bunch
of places that i was quite unfamiliar with before starting this project,
so do let me know if i glonked up anywhere and i can work on smoothing
it out.
## Why It's Good For The Game

one less simple animal on the list. deers staring at headlights is
pretty cool i think, neato interaction for when you do get them beyond
the joke the bepis makes

i'm also amenable to dropping the whole "deer in headlights" code if you
don't like that for w/e reason- just wanted to make them basic at the
very least
## Changelog
🆑
add: If you ever happen upon a wild deer, try not to ride your fancy
vehicles too close to it as it'll freeze up like a... you know where I'm
going with this.
/🆑

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>

* Turns Deer into Basic Mob - They Freeze At The Sight of Vehicles

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
2023-04-23 14:01:36 -04:00
SkyratBot
5b19e5d0e3 [MIRROR] Actually anti glow [MDB IGNORE] (#20709)
* Actually anti glow (#74733)

## About The Pull Request
Now that I've realized I can fix things that's bugging me, a personal
pet peeve, anti-glow weren't actually doing as advertised, instead just
making it a light grey.

This is anti-glow in it's current state

![image](https://user-images.githubusercontent.com/126404225/232171576-48584926-a47f-49c7-b0f3-449687bb1d47.png)

And this is anti-glow as it probably should be.

![image](https://user-images.githubusercontent.com/126404225/232171605-70fa6da1-841e-438f-a302-911517b95a52.png)
## Why It's Good For The Game
Anti-glow does as advertised.
## Changelog
🆑
fix: Anti-glow actually bringing some darkness instead of just a light
glow.
/🆑

* Actually anti glow

---------

Co-authored-by: Dawnseer <126404225+Dawnseer@users.noreply.github.com>
2023-04-23 09:27:30 -07:00
SkyratBot
7cd65785c5 [MIRROR] Farm Sounds DLC (basic mobs can make sounds when speaking) [MDB IGNORE] (#20704)
* Farm Sounds DLC (basic mobs can make sounds when speaking) (#74906)

## About The Pull Request

https://user-images.githubusercontent.com/66640614/233747544-aac153b9-a100-486c-9a7a-4a436b8303b8.mov

Cows, pigs, and sheep make noise when their AI makes them speak.
~~Also House Flipper Farm DLC came out but that's incidental.~~

## Why It's Good For The Game
It's funny, also more sound effects are fun. Gives basic mob creators
more customizability.

## Changelog
🆑 Tattle
qol: basicmobs can now make sounds when their speech is triggered
qol: pigs will now make sounds and emote on their own
sound: cows, pigs, and sheep have new sound effects!
/🆑

---------

Co-authored-by: tattle <article.disaster@ gmail.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>

* Farm Sounds DLC (basic mobs can make sounds when speaking)

---------

Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: tattle <article.disaster@ gmail.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
2023-04-23 00:08:24 +01:00
SkyratBot
9ad30cd3aa [MIRROR] Only checks for greyscale json config folder [MDB IGNORE] (#20639)
* Only checks for greyscale json config folder

* Update _greyscale_config.dm

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-04-21 16:41:50 -07:00
SkyratBot
410979bb6a [MIRROR] Microing var/static times (~0.015 seconds of init) [MDB IGNORE] (#20688)
* Microing var/static times (~0.015 seconds of init) (#74769)

## About The Pull Request

Moth and I came up with an affront to god and man, and used it to track
the time spent creating /static (and in theory /global) variables (this
happens right at the start of init)
They cost as a sum about 0.05 seconds btw, at least currently.

```
/datum/timer
    var/key

/datum/timer/New(file, line)
    src.key = "[file]:[line]"

/datum/timer/proc/operator*(x)
    rustg_time_reset(key)
    return x

/datum/timer/proc/operator+(x)
    var/time = rustg_time_microseconds(key)
    world.log << "TIMER: [key]: [time]"
    return x

Regex:
var/static/([\w/]+) =
-> var/static/$1 = (new /datum/timer(__FILE__, __LINE__)) * (new /datum/timer(__FILE__, __LINE__)) +
```

Output on moth's pc looks like this, time in microseconds

[output_sorted.csv](https://github.com/tgstation/tgstation/files/11241900/output_sorted.csv)

Most of this is either icon_states() memes (which appears to be cached
btw, that's interesting), or a variation on typecacheof()
There is one get_asset_datum call, but that is ALREADY cached and so is
just redundant. That's a good 0.01 seconds saved.

The rest of the time here is slightly more interesting.

The majority of typecacheof() is iterating the output of typesof(), a
byond internal proc that returns a list of types that either are or are
the child of the passed in type.
A decent chunk of time here (0.005 seconds, or 10% of the proc) can be
saved by unrolling the arguments to the proc.
It takes an arbitrary amount of typepaths as input, but we can't like
use arglist() here (cause this is an internal "proc"), so instead we try
a window of args, passing in null if we start to try and take in too
much.
Window size matters, zebra fits better into 4 then 5, especially because
of how grouping needs to work to make this effect happen.
We save about 0.001 for zebra btw, which is around about 7%. It's lower
cause we need to group the paths beforehand I think.

The speedup is minor, but it DOES exist. Plus it's fun.

## Why It's Good For The Game

Microing is a hell of a drug

* Microing var/static times (~0.015 seconds of init)

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2023-04-21 17:25:57 -04:00
SkyratBot
59b73c3d65 [MIRROR] Cleans up thermite component code [MDB IGNORE] (#20686)
* Cleans up thermite component code (#74825)

## About The Pull Request

Nothing too interesting to be quite honest, just cleans up the thermite
component code a bit because it was a bit weird.

## Why It's Good For The Game

This probably fixes a few rare bugs where the thermite overlay
disappears due to an update_icon call. Slightly neater code.
Also, adds an examine message to thermite walls because small QoL stuff
is neat.

## Changelog

🆑
qol: Thermited walls now get an examine message telling you they are, in
fact, thermited.
/🆑

---------

Co-authored-by: san7890 <the@ san7890.com>

* Cleans up thermite component code

---------

Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
2023-04-21 17:21:21 -04:00
SkyratBot
1a0cdfac66 [MIRROR] Hologram Touchup (Init savings edition) [MDB IGNORE] (#20638)
* Hologram Touchup (Init savings edition)

* Update hologram.dm

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-04-21 03:53:09 +01:00
SkyratBot
8cb96fad58 [MIRROR] Fixes body purist headrevs from getting mad at their implant by making them unaware of it [MDB IGNORE] (#20616)
* Fixes body purist headrevs from getting mad at their implant by making them unaware of it

* Update surgery.dm

---------

Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-04-21 03:53:01 +01:00
SkyratBot
9a20271ee5 [MIRROR] Adds helpers for apc. [MDB IGNORE] (#20589)
* Adds helpers for apc. (#74651)

## About The Pull Request
I asked someone in discord if it was worth it, they said it was, from
what i remember at least.

## Why It's Good For The Game
More comfort with apc's for mappers.

---------

Co-authored-by: san7890 <the@ san7890.com>

* Adds helpers for apc.

* wew

* wew

---------

Co-authored-by: Helg2 <93882977+Helg2@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-04-21 03:35:53 +01:00
SkyratBot
fe47d6ba35 [MIRROR] Refactors sheet crafting to better support directional construction [MDB IGNORE] (#20594)
* Refactors sheet crafting to better support directional construction (#74572)

## About The Pull Request

0426f7ddba/code/game/objects/items/stacks/stack.dm (L449)

Ok, but can we not?

This PR refactors sheet crafting to generalize all the cases that were
previously locked behind grille/window type checks and such. In their
stead there are bitflags that can be set to achieve certain behaviors.

All the behavior from before should be preserved, but now it can be
extended to other items. E.g. if you want a railing that can be crafted
underneath directional windows, or an item that behaves like a grille
does--it's just a matter of setting the right obj_flags for it now.

This makes it very simple and painless to add new recipes that use
directional crafting! It's all modular now.

<details><summary>Details</summary>

---

### What I've done:

-Eliminated all the type checks, instead it will now be handled by
object flags and recipe vars, making for a much more configurable
system.

-Added two new obj_flags: `BLOCKS_CONSTRUCTION_DIR` and
`IGNORE_DENSITY`.
-Additionally, I renamed the existing flag `NO_BUILD` to
`BLOCKS_CONSTRUCTION`.

-Changes the proc `valid_window_location` to `valid_build_direction`,
and makes it work for things other than windows.

-Removed a deprecated `window_checks` var from the stack_recipe datum.
-Added three more vars to the stack_recipe datum: `check_direction` and
`check_density`, `is_fulltile`

-Decoupled `on_solid_ground` from the object density check. Now you can
set those separately, allowing you to make recipes that forbid/allow
building things over other things while in space.

---

### What the new flags do:

`BLOCKS_CONSTRUCTION` works as before---prevents objects from being
built on the object. I felt that the previous name was not descriptive
enough, you should know exactly what it does just from looking at the
name.
_example: dna scanner_

`BLOCKS_CONSTRUCTION_DIR` -- setting this on an object will prevent
objects from being built on it when their directions are the same.
_example: directional windows, windoors, railings_

`IGNORE_DENSITY` -- setting this on an object will cause its density to
be ignored when performing the construction density check. This could
have other potential uses as well in the future.
_example: grilles, directional windows, tables_

These three flags cover all the bases for the types of items that are
currently craftable, so there is no more need for any type checking or
weird snowflake window checks. Simply set the appropriate flag and it'll
work as you would expect.

---

### What the recipe vars do:
`check_direction` tells the recipe to check if there's something in that
direction with the `BLOCKS_CONSTRUCTION_DIR` flag set.

`check_density` tells the recipe to run the density check when set. This
is true by default. There are very few items in the game that currently
have this set to false--namely grilles. Setting this to false will make
it so that the object can be constructed regardless of what is in that
tile (unless `one_per_turf` is also set, which will make it so that you
can't craft the same thing twice in the same turf).

`is_fulltile` is used for fulltile windows, but it doesn't necessarily
have to be--you can give this to any recipe and it will adopt the same
properties as that of the fulltile window. Basically they have a special
case where they shouldn't be able to be built over directional
constructions, where normally things would be able to be. Setting this
makes check_direction true as well.

---

### In summary:

Sheet crafting still works just as it did before. But the backend of it
has gotten a glow up and will be able to more easily support new
behaviors.

</details>

## Why It's Good For The Game

This makes the crafting system much more flexible to add recipes to, and
will prevent bad code practices of stacking more conditionals down the
line whenever someone wants to add an item that behaves like grilles or
directional windows in how they are constructed.

It had to be done. Those window checks were a mess.

## Changelog

🆑
qol: added fifty stack versions of remaining glass sheet stacks for ease
of debugging
refactor: refactored sheet crafting to better support directional
constructions that aren't windows
/🆑

---------

Co-authored-by: san7890 <the@ san7890.com>

* Refactors sheet crafting to better support directional construction

* fex

* https://github.com/Skyrat-SS13/Skyrat-tg/pull/20636

---------

Co-authored-by: Bloop <vinylspiders@gmail.com>
Co-authored-by: san7890 <the@ san7890.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-04-21 02:14:10 +01:00
SkyratBot
013658e1a5 [MIRROR] Cleanup 1 letter var names in martial arts files [MDB IGNORE] (#20597)
* Cleanup 1 letter var names in martial arts files

* Update boxing.dm

---------

Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-04-21 02:12:27 +01:00
SkyratBot
fcfcc2f9d9 [MIRROR] Implanted foreign bodyparts will resist being removed on species change [MDB IGNORE] (#20555)
* Implanted foreign bodyparts will resist being removed on species change (#74701)

## About The Pull Request

Title.
Also, to make bodypart code slightly nicer, I retooled some variables to
be part of a new bitfield called bodypart_flags.

## Why It's Good For The Game

We've been trying to move away from the species datum for limb stuff
precisely because of funny shenanigans like this, no?

## Changelog

🆑
refactor: Implanted foreign limbs will no longer be wiped by species
change.
/🆑

* Implanted foreign bodyparts will resist being removed on species change

* fex

---------

Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-04-21 01:57:46 +01:00
SkyratBot
374d002403 [MIRROR] Unit Test Font Awesome icons and Quirk icons [MDB IGNORE] (#20442)
* Unit Test Font Awesome icons and Quirk icons

* skyrat edits

* icons

* fex

---------

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: lessthnthree <three@lessthanthree.dk>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-04-21 01:57:33 +01:00
SkyratBot
8e54d3d026 [MIRROR] Emergency Shuttle - Hug Relaxation Shuttle [MDB IGNORE] (#20660)
* Emergency Shuttle - Hug Relaxation Shuttle (#74642)

## About The Pull Request
adds this thing
![2023 04 10-14 12
51](https://user-images.githubusercontent.com/70376633/230899694-6d540acd-f16d-4e3e-a57b-2dc412d0ddb2.png)
This is shuttle contains a pillow fight box, no violence, and a large
cozy heart-shaped area for spacemen to sleep in.
Has a medical bay, brig, command. Tons of plushies, instruments,
pillows, general cutesy stuff. Contains one (1) pax pill bottle.
Has an oxygen canister for quick repressurization.

Also adds it commented out to the Emergency Shuttle Blacklist, in an
alphabetically-correct position

Costs 3200
## Why It's Good For The Game

Has an unique emergency shuttle shape, does not promote violence, looks
cozy. And I heard some people like this shuttle so its probably good
enough?
## Changelog
🆑
add: Adds the Hug Relaxation Shuttle as an emergency shuttle
/🆑

* Emergency Shuttle - Hug Relaxation Shuttle

---------

Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com>
2023-04-21 01:44:35 +01:00